Java中char的字节数
以前一直以为char占一个字节,后来发现远没这么简单。Java中char的字节数,和编码有关。使用UTF-8,英文字符占1个字节,中文占3个字节。下面在是在Ubuntu中测试的结果:
[java] view
plaincopyprint?
-
public
static void main(String[] throwsargs) IOException { -
-
String chnStr = "中文"; -
System.out.println("length of two Chinese character: " + "UTF-8").lengthchnStr.getBytes( ); -
String engStr = "en"; -
System.out.println("length of two English character: " + "UTF-8").lengthengStr.getBytes( ); -
}
输出:
[plain] view
plaincopyprint?
-
length
of two Chinese character: 6 -
length
of two English character: 2
在网上流传这样一个面试题:Java中一个中文char的字节数是?答案为不确定(2,3,4),跟编码有关。下面这段程序可以证明这个答案:
[html] view
plaincopyprint?
-
public
static void main(String[] args) throws IOException { -
String chnStr = "华"; -
System.out.println("length of one Chinese character in gbk: " + chnStr.getBytes("GBK").length ); -
System.out.println("length of one Chinese character in UTF-8: " + chnStr.getBytes("UTF-8").length ); -
System.out.println("length of one Chinese character in Unicode: " + chnStr.getBytes("UNICODE").length ); -
}
[html] view
plaincopyprint?
-
length
of one Chinese character in gbk: 2 -
length
of one Chinese character in UTF-8: 3 -
length
of one Chinese character in Unicode: 4