在 Java 中构造Character类

在Java中,Character类用于表示char类型的包装类。本文描述了Character类的构造方法以及如何使用Unicode码来创建Character对象。

构造方法

✍方法声明

Character(char value)

创建一个新分配的Character对象,用以表示指定的char值。

    public static void main(String[] args) {
        Character c1 = new Character('1');
        Character c2 = new Character('A');
        Character c3 = new Character('码');
        Character c4 = new Character('?');
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
    }
1
A

?

还可以直接使用 Unicode 码,通过提供Unicode转义序列来创建Character对象:

    public static void main(String[] args) {
        Character c1 = new Character('\u0036');
        Character c2 = new Character('\u2103');
        Character c3 = new Character('\u231B');
        Character c4 = new Character('\u4EAE');
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
    }

其中有数字、符号、图标、文字等。

6



在Java中,直接使用Character类的构造方法创建对象并不是推荐的做法,因为自Java 9起,Character类的构造方法已经被标记为过时(deprecated)。推荐使用Character.valueOf(char c)方法来创建Character对象。

valueOf() 方法

根据 char 得到一个 Character 对象。

✍方法声明

public static Character valueOf(char c);

    public static void main(String[] args) {
        Character c1 = Character.valueOf('1');
        Character c2 = Character.valueOf('A');
        Character c3 = Character.valueOf('王');
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }
1
A

下面代码分别调用 valueOf(),通过 equals() 方法比较其值是否相等,通过 == 比较对象地址是否相等。

    public static void main(String[] args) {
        Character c1 = Character.valueOf('1');
        Character c2 = Character.valueOf('1');
        Character c3 = Character.valueOf('王');
        Character c4 = Character.valueOf('王');
        System.out.println(c1.equals(c2) + " " + (c1 == c2));
        System.out.println(c3.equals(c4) + " " + (c3 == c4));
    }

在 Character 内部维护了一个 CharacterCache 缓存,当取值在 0 ~127 之间时,会利用缓存返回相同的对象实例。

true true
true false

📝总结

推荐使用Character.valueOf(char c)方法来创建Character对象,而不是直接使用构造方法,尤其是从Java 9开始,构造方法已被标记为过时。

使用Unicode转义序列可以创建表示特定字符的Character对象。

了解Character类的缓存机制对于编写高效的Java代码和理解对象创建过程非常重要。

转载请注明出处:码谱记录 » 在 Java 中构造Character类
标签: