日期:2014-05-20  浏览次数:20768 次

绝对基础的问题 可偶不会。。
public   class   test{
public   static   void   main(String[]   args)
{
String   str1   =   "eeeee ";
String   str2   =   "斯蒂芬记的 ";
System.out.println(str1.getBytes().length);
System.out.println(str2.getBytes().length);


}

}

为啥第一个println   会输出5呢   不是说一个字符占两个字节么?   谢谢回答!

------解决方案--------------------
一个中文字符占两个字节,一个英文字符占一个字节~~~明白?
------解决方案--------------------
楼上是正确的
java不管什么,都是按字算得
所以eeeee 和 斯蒂芬记的
是一样的
------解决方案--------------------
mark
------解决方案--------------------
这个是计算字符串长度。。都是5个当然都显示5
------解决方案--------------------
对 , java 是UTF的 所以自然都是5个
------解决方案--------------------
5
10
怎么都会是5呢??????
------解决方案--------------------
学习
------解决方案--------------------
getBytes
public byte[] getBytes()

使用 **平台默认的字符集**
将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。
------------------------------------
JDOC告诉我们,你们看到的 长度不是unicode码,而是 **平台默认的字符集**

所以,我使用linux+UTF8运行你的程序的出来的结果会是 5 15
而你用windows+gb2312的结果则是5 10

------解决方案--------------------
String str1 = "eeeee ";
String str2 = "斯蒂芬记的 ";
System.out.println(str1.getBytes().length+ " " +str1.length());
System.out.println(str2.getBytes().length+ " " +str2.length());
5 5
10 5