string的lenth()函数为什么中文和英文字符返回的结果一样?

keyjiang 2008-03-14 11:16:55
请大家看程序:
String a="我";
void dod(){
System.out.println("a "+a.length());
}
结果是打印出a 1;

String a="a";
void dod(){
System.out.println("a "+a.length());
}
结果是打印出a 1;

我就不明白了,为什么中文和英文的长度是一样大的啊,中文不是占两个字节吗?

还有就是java的string的结构是怎么样的?会像c那样在末尾添加一个'\0'吗?还是任何都不添加


谢谢




...全文
309 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lupingui 2008-03-16
  • 打赏
  • 举报
回复
楼楼楼楼楼上都是正解~-_-
gywain 2008-03-16
  • 打赏
  • 举报
回复
晕,
wen8876 2008-03-16
  • 打赏
  • 举报
回复
java一个字符用两个字节,这主要是为了提高可移植性。
J_Factory 2008-03-15
  • 打赏
  • 举报
回复
java要国际化所以使用了16为的字符集,中文字符和英文字符都是一个字了
楼上几位说的都差不多~~~~~~~~~~
gongyali2005 2008-03-15
  • 打赏
  • 举报
回复
unicode 保存的中文和英文是一样的长度.
zhugangpubu 2008-03-15
  • 打赏
  • 举报
回复
因为String.length()返回的是字符数。

java里汉字和英文都是一个字符(但是占用2个字节),所以是一样的。
如果想返回字节数,
则:请采用java.lang.String.getBytes().length
xql80329 2008-03-15
  • 打赏
  • 举报
回复
学习了 3楼说的很具体
网络咖啡 2008-03-15
  • 打赏
  • 举报
回复
因为Java中一个字符是2个字节的,所以中文和英文字符,都算一个

如果你需要获得字符串的长度,可以使用Font类的strWidth方法
hoszone 2008-03-15
  • 打赏
  • 举报
回复
呵呵,问题差不多了~
l278964812 2008-03-15
  • 打赏
  • 举报
回复
string.length()是返回的字符的个数,这样英文,中文算是一个字符,所以一样,三楼的说的很不错,很对的!
微服森林 2008-03-14
  • 打赏
  • 举报
回复
java.lang.String.length()
方法返回的是字符数。
如果想返回字节数,
则:请采用java.lang.String.getBytes().length
如:"中国".getBytes().length = 4
dracularking 2008-03-14
  • 打赏
  • 举报
回复
length()是计算在串中的16位unicode字符的数量
英文字母和汉字都属于字符的范畴
Squall1009 2008-03-14
  • 打赏
  • 举报
回复
因为String.length()返回的是字符数。

java里汉字和英文都是一个字符(但是占用2个字节),所以是一样的。

还有就是java的string的结构是怎么样的?会像c那样在末尾添加一个'\0'吗?还是任何都不添加
什么都不加

62,623

社区成员

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

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