我的代码在下面,我有三个输出,并且调用了Object类的三个toString()方法,它以class @ hashcodeinhexadecimal形式给出输出,然后在输出1中为什么在其中自动装箱和加宽内部发生对象的值得到打印?
public class AutoBoxingUn
{
static Object pp= new Object ();
public static void main(String[] args)
{
int q = 10;
Object o=q;
System.out.println("O"+"..."+o.toString()); \\ O...10 ( output 1 )
System.out.println(pp.toString()); \\ java.lang.Object@ee7d9f1 ( output 2 )
A aa= new A(11);
System.out.println(aa); \\ A@1edf1c96 ( output 3 )
}
}
class A extends AutoBoxingUn
{ int o;
A(int o)
{
this.o=o;
}
void m2()
{}
}
答案 0 :(得分:1)
对象o在内部保存Integer值,因此在运行时调用Integer类的toString()方法,它覆盖Object类toString()方法以打印对象/整数
答案 1 :(得分:1)
如果你要调用Objetc类的toString()方法然后改变Object o = q; to Object o = new Object();在你的代码中
答案 2 :(得分:0)
为什么在输出1中,自动装箱和加宽在内部发生对象的值得到打印?
o.toString()
调用toString
类的Integer
实现,因为o
的运行时间(因为您已将int
分配给Object
Integer
引用,它导致将UIView
对象分配给该变量。
因此打印10个。
答案 3 :(得分:0)
要理解,请尝试instanceof
运算符
int q = 10;
Object o=q;
if(o instanceof Integer){
System.out.println("o is an Integer");
} else {
System.out.println("o is an Object");
}
O / P:
的 o is an Integer
强>
这意味着:o是Object的引用并指向Integer对象,因此o.toString()
将调用toString()
类的Integer
方法。 Integer类,内部扩展Object类并覆盖(并具有自己的实现)Object的toString()方法。