为什么下面输出都是4呢?

alin19 2003-06-21 01:03:56
我有个地方不懂:
下面代码中ch和by长度为什么会一样?
byte是8位的,char是16位的,为什么下面输出都是4呢?

String st = "alin";
char[] ch = st.toCharArray();
byte[] by = st.getBytes();
//ch和by长度为什么会一样?
System.out.println("" + ch.length);
System.out.println("" + by.length);
...全文
39 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
alin19 2003-06-23
  • 打赏
  • 举报
回复
顶下啊,简单问题啊
alin19 2003-06-23
  • 打赏
  • 举报
回复
ding
alin19 2003-06-22
  • 打赏
  • 举报
回复
可是在java里英文字母也是用unicode表示的啊?难道是单字节的?
XKP 2003-06-21
  • 打赏
  • 举报
回复
双字节编码的字符
都要用两个byte啊
所以如果你把by数组一个一个输出来
那会发现不是中文~~~~
因为要两个才能出来一个中文
alin19 2003-06-21
  • 打赏
  • 举报
回复
你们没明白我的意思啊:
String st = "我是谁";
char[] ch = st.toCharArray();
byte[] by = st.getBytes();
System.out.println("" + ch.length);
System.out.println("" + by.length);
output:
3
6

难道跟acsii重复的字符都用8位的表示,不重复的象汉字用16位unicode表示??好奇怪啊
newman0708 2003-06-21
  • 打赏
  • 举报
回复
应该是4,没有错啊!
alin19 2003-06-21
  • 打赏
  • 举报
回复
为什么不是Unicode码?
char[] ch = st.toCharArray();
byte[] by = st.getBytes();
//长度为什么会一样?
System.out.println("" + ch[0]);
System.out.println("" + (char)by[0]);

outPut:
a
a

ascii正好能放在8位里面,要是16位的Unicode,byte类型就放不下了啊
sgdb 2003-06-21
  • 打赏
  • 举报
回复
byte[]中是a,l,i,n对应的ascii
alin19 2003-06-21
  • 打赏
  • 举报
回复
难道String转换成byte[]时和转成char[]不是按照位数转的吗?

都是4个元素的话,每个元素存放什么呢?特别是byte[]中
helpall 2003-06-21
  • 打赏
  • 举报
回复
一共只有四个字符,数组的长度都是4.与"byte是8位的,char是16位的"无关.
XKP 2003-06-21
  • 打赏
  • 举报
回复
那只是具体编码方式的不同
具体的每一个字符编码方式不一样
length是说这个数组里面有多少个元素
而不是说占用了多少空间

62,614

社区成员

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

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