java在下面的程序中c1和c2的区别是什么,两个声明是否相同?
我混淆了c1和c2。两者都是物体吗
class demo
{
public static void main(String args[])
{
char c='w';
Character c1=c;
Character c2=new Character(c);
System.out.println(c1);
System.out.println(c2);
}
}
# 1 楼答案
是的,它们都是对象,请查看自动装箱
https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
在这种情况下,编译器会在这种情况下自动转换
Character c1=c;
编辑以回复评论:
它们不是相同的对象(相同的哈希代码),但它们具有相同的值
如果在Character类中签出equals方法,您将看到它覆盖了默认的对象类equals,因此当它们的内部值相同时,equality是真的
# 2 楼答案
它们都是物体。然而,让我向你们解释更多关于它的事情:
是Java中的一个原语值(它代表一个16位Unicode值),而
Character c2=new Character(c);
是一个包装类,可以帮助您以OOP方式使用char原语查看this以获得关于
char
值的进一步解释