char类型变量中是否可以存储一个中文汉字

在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 你好");
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_40995778/article/details/83447333