在Java语言中,默认使用的Unicode编码方式,即每个字符占两个字节,因此可以用来存储中文。虽然String是由char所组成的,但是它采用了一种更加灵活的方式来存储,即英文占用一个字符,中文占用两个字符,采用这种存储方式的一个重要作用就是可以减少所需的存储空间,提高存储效率。
public class Test {
public static void getLen(String str) {
System.out.println(str + "长度:"+ str.length()+ " 所占字节数:"+str. getBytes().length);
}
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "你好";
getLen(s1);
getLen(s2);
}
}
//Hello长度:5 所占字节数:5
//你好长度:2 所占字节数:4
扩展:判断一个字符串中是否包含中文字符
/**
* getBytes(),使用平台的默认字符集将这个字符串编码为一个字节序列,将结果存储到一个新的字节数组中。
* 当此字符串不能在默认字符集中编码时,此方法的行为是未指定的。java.nio.charset。当需要对编码过程进行更多控制时,
* 应该使用CharsetEncoder类。
*/
public class Test {
public static void judgeCharactor(String str) {
// 判断是否存在中文字符
if (str.getBytes().length == str.length()) {
System.out.println("无汉字");
} else {
System.out.println("有汉字");
}
}
public static void main(String[] args) {
new Test().judgeCharactor("hello");
new Test().judgeCharactor("hello 你好");
}
}