在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
码
?
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
王
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
true false
📝总结
推荐使用Character.valueOf(char c)方法来创建Character对象,而不是直接使用构造方法,尤其是从Java 9开始,构造方法已被标记为过时。
使用Unicode转义序列可以创建表示特定字符的Character对象。
了解Character类的缓存机制对于编写高效的Java代码和理解对象创建过程非常重要。