getBytes()方法关于byte,char长度的问题

DawidZhu 2010-11-02 09:57:13
String jcy="jcy how are you";
byte[] bytes=jcy.getBytes();
System.out.println("length:"+bytes.length);


长度为什么是15?
我的观点:
bytes是按字节存放的,一个字节也就是8位,而一个字符‘j'是char类型,应该是16位,2个字节,我认为byte存不下char类型的字符。
...全文
375 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2010-11-02
  • 打赏
  • 举报
回复
jcy.getBytes();//的byte数组里存的是字符的编码,byte是8位,编码范围是0-255,字符j的编码在该范围里
龙四 2010-11-02
  • 打赏
  • 举报
回复
ls的都解释的很清楚了
学习Java中 2010-11-02
  • 打赏
  • 举报
回复
getBytes
public byte[] getBytes()使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。
当此字符串不能在默认的字符集中解码时,该方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetEncoder 类。


返回:
结果字节数组
从以下版本开始:
JDK1.1


System.out.println("char:"+(char)bytes[0]); //j
hbgzg3006 2010-11-02
  • 打赏
  • 举报
回复
是这样的 楼主。
getBytes 其实有一个默认的编码的 windows下 其实就是getBytes("gbk")
由于gbk编码 对于英文与iso-8859-1 utf-8等众多编码是兼容的。也就是只占有1个字节getBytes("iso-8859-1")、等试一下。但对于汉字他们就不兼容了,每个编码都不一样。
你说的char 其实 java 就是unicode编码。它始终占有两个字节。而且还有两个字节的bom头。也就是如果上面的
写成getBytes("unicode")应该是32.

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧