日期:2014-05-18  浏览次数:20670 次

一个字符串的问题
String   s= "hello ";
int   byte=s.getBytes().length;
System.out.print(byte);


byte=s.length()*2;
System.out.print(byte);

分别打印为5和10。
请问其中那个是返回s的字节数。

------解决方案--------------------
你数数hello有几个字母...
------解决方案--------------------
=s.length()
------解决方案--------------------
String s= "hello ";
int byte=s.getBytes().length;
System.out.print(byte);
得到的是它的字节数:5
byte[] getBytes()使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。
String s= "你好 ";
int byte=s.getBytes().length;
System.out.print(byte);
得到的是它的字节数:4

------解决方案--------------------
s.getBytes().length
------解决方案--------------------
一个字母只占一个字节
------解决方案--------------------
每个字符是2个字节?MS ASCII字符是一个字节吧
------解决方案--------------------
s.getBytes().length
------解决方案--------------------
因为s.getBytes()返回的不是java的unicode编码的字节数组,而是系统的默认编码,如GB2312对应的编码。

"hello ".getBytes( "Unicode ").length=12
不知多出来的两字节是什么东东

------解决方案--------------------
s.getBytes().length;才是正确求字节数的表达式,如果用下面的方式求出的字节数有可能有误.如:String s= "中国家 ";
int byte1=s.getBytes().length;
System.out.println(byte1);


int byte2=s.length()*2;
System.out.println(byte2);
打印出来的结果都为:6,6 那是因为一个中文汉字占两个字节,表面上看两种方法都对,但是如果像你自己的那个程序来看就会看出端倪来.在此请注意:标点符号有占用2个字节(全角)的;有占用1个字节(半角)的.故第二种的做法得到的答案就更会不准了.
------解决方案--------------------
第一个是,鉴定结果水帖成分比较高!
------解决方案--------------------
楼主你问的问题不对啊。

你是问s这个引用的占几个字节。
还是这个s引用所指的String 对象占几个字节

还是String中存的字符串的占几个字节。
------解决方案--------------------
char是16位的.
可以包含一个16个节字以下的字符.
数字和英文都是一个字节的字符,
中文的是二个字节的字符.