首页编程java编程java字符为什么占两个字节,为什么java中的char是2个字节

java字符为什么占两个字节,为什么java中的char是2个字节

编程之家 2023-10-14 96次浏览

大家好,今天来为大家解答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来表示的。

java字符为什么占两个字节,为什么java中的char是2个字节

而 String.getBytes()这个方法是按照指定的 encoding返回字符串,一般中文系统的默认编码是 utf-8(linux, mac)或者 gbk/gb18030(windows)。只要是基本平面内的文字,utf-8码的中文都是3字节的,而 gbk/gbk18030是2字节的。英文编码是一个字节的。

Java语言中一个字符占几个字节

Java规定了字符的内码要用UTF-16编码,一个字符是2个字节。外码字符所占字节取决于具体编码。字符和字节是不一样的。

外码编码不同,字符和字节的换算不同,几种常见的编码换算如下:

java字符为什么占两个字节,为什么java中的char是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确是对象类型。

如果你还想了解更多这方面的信息,记得收藏关注本站。

自学java用什么书比较好 JAVA自学看什么书好 java di是什么(DI是什么)