A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 包志恒 黑马帝   /  2011-7-26 20:29  /  2268 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class StringTest
{
        public static void main(String[] args)
        {
                String st = "中国a";
         int i= st.length();
                System.out.println(st.getBytes().length+" "+i);
        }
}
这个程序为什么是 5和3 呢  好像java 中 不是 英文字符和中文字符都用2个字节表示的么

评分

参与人数 1技术分 +2 收起 理由
admin + 2 问得不错!

查看全部评分

2 个回复

倒序浏览
黑马网友  发表于 2011-7-26 20:37:31
沙发

回复 楼主 的帖子

第一个5,是根据你运行环境的编码方式,很明显,一个汉字两个字节,所以是5。而3是根据st.length();
这个方法得到的,查看文档,得知:返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。 所以无论是汉字还是英文,都是一个单元,所以得3

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞同!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-26 20:39:50
藤椅
转成字节数组就不是了,从底层还是中文两字节,英文一字节的。只是Java给封装了,在字符层就都是两字节了

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马