java字符为什么占两个字节,为什么java中的char是2个字节
大家好,今天来为大家解答java字符为什么占两个字节这个问题的一些问题点,包括为什么java中的char是2个字节也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
java中怎么证明一个字符占2个字节
java规定好的占两个字节。
首先,要搞清楚 code point和 encoding的区别。Java是遵循 unicode 4.0标准的,而内部的 character以 utf-16作为 encoding。unicode 4.0标准包含从 U+0000-U+FFFF的基本多语言平面和 U+10000-U+10FFFF的扩展平面的文字,这是 code point。Java的 char类型是 16 bit的,所以单个 char只支持基本平面内的文字,而扩展平面的文字是由一对 char来表示的。
而 String.getBytes()这个方法是按照指定的 encoding返回字符串,一般中文系统的默认编码是 utf-8(linux, mac)或者 gbk/gb18030(windows)。只要是基本平面内的文字,utf-8码的中文都是3字节的,而 gbk/gbk18030是2字节的。英文编码是一个字节的。
Java语言中一个字符占几个字节
Java规定了字符的内码要用UTF-16编码,一个字符是2个字节。外码字符所占字节取决于具体编码。字符和字节是不一样的。
外码编码不同,字符和字节的换算不同,几种常见的编码换算如下:
ASCII编码是单字节编码,只有英文字符,不能编码汉字。
GBK编码1个英文字符是1个字节,一个汉字是是2个字节。
UTF-8编码1个英文字符是1个字节,一个汉字是3个字节。
Unicode编码1个英文字符是2个字节,一个汉字是2个字节。
扩展资料:
汉字编码的困难点汉字进入计算机,有许多困难,其原因主要有三点:
①数量庞大:一般认为,汉字总数已超过6万个(包括简化字)。虽有研究者主张规定3000多或4000字作为当代通用汉字,但仍比处理由二三十个字母组成的拼音文字要困难得多。
②字形复杂:有古体今体,繁体简体,正体异体;而且笔画相差悬殊,少的一笔,多的达36笔,简化后平均为9.8笔。
③存在大量一音多字和一字多音的现象:汉语音节416个,分声调后为1295个(根据《现代汉语词典》统计,轻声39个未计)。以1万个汉字计算,每个不带调的音节平均超过24个汉字,每个带调音节平均超过7.7个汉字。有的同音同调字多达66个。一字多音现象也很普遍。
参考资料来源:百度百科-编码
为什么java中的char是2个字节
char在Java中是16位的,因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中,是从0~127的。
Java中使用Unicode的原因是,Java的Applet允许全世界范围内运行,那它就需要一种可以表述人类所有语言的字符编码。Unicode。但是English,Spanish,German, French根本不需要这么表示,所以它们其实采用ASCII码会更高效。这中间就存在一个权衡问题。
因为char是16位的,采取的Unicode的编码方式,所以char就有以下的初始化方式:
char c='c';//字符,可以是汉字,因为是Unicode编码
char c=十进制数,八进制数,十六进制数等等;//可以用整数赋值
char c='\u数字';//用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0是一个意思。
java中String占几个字节
Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所以一个Unicode码占两字节。但是英文字母比较特殊,源自于8位(1字节)的ASCII吗,于是在Unicode码仅使用了低8位(1字节)就可以表示,高8位的话不使用也无所谓。所以
char
c='a';
System.out.println(c.getBytes().lenth()),得到的是1(字节)
但汉字就完整地使用了16位(2字节)的Unicode,所以
char
c='中';
System.out.println(c.getBytes().lenth()),得到的是2(字节)
综上,c='a'在内存中确实只占1字节,但这不意味着String
s="abc"在内存中只占3字节。应该这么说,String
s="abc"至少在内存中占3字节。这是因为char是基本数据类型,而String确是对象类型。
如果你还想了解更多这方面的信息,记得收藏关注本站。