java中String类型是由char组成的,一个char占用两个字节(byte)。"S".getBytes()应该返回两个byte才对,怎么只返回了一个?另外如果是汉字的话,可以返回两个byte。
我的意思是:在java定义中char类型采用unicode编码,占用两个字节,也就是十六位。但是"S".getBytes().length的结果却是 1 ,说明只占用了一个byte,应该是2才对啊,这是什么原因?我估计是:输出的字符串占用的字节数与机器上存储时占用的字节数不同。欢迎大家讨论
一个英文字母占用1个字节。
一个中文会占用2-4个字节都有可能
半角占1个,全角翻倍。
你说的char类型Java规定是占两个字节的空间,但是你打印的是时候是已经编译后的内容。
比如你的char a='112233aab' 输出length 为9
编译后默认按照GBK编码方式输出显示。
一个中文会占用2-4个字节都有可能
半角占1个,全角翻倍。
你说的char类型Java规定是占两个字节的空间,但是你打印的是时候是已经编译后的内容。
比如你的char a='112233aab' 输出length 为9
编译后默认按照GBK编码方式输出显示。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-04-16
在java中 字母就是一个byte,无大小写之分的
而汉字 是两个byte
而汉字 是两个byte
第2个回答 2014-04-16
能贴上具体代码吗?而且不同操作系统对于编码也不尽相同,Srting.getBytes返回的是系统默认的编码格式的数组。有可能是赋值的过程出现问题,也有可能是操作平台的问题。中文操作系统,中文返回2个byte而应用IOS-8895-1的英文系统或者平台默认所有字符都是1byte。
第3个回答 2014-04-16
如果S是半形,就是1byte,如果是全形,就是2byte,汉字是全形,所以是2byte。
第4个回答 2014-04-16
当然是1个字节了追问
java定义中char采用unicode编码,占用两个字节