int a = 500;
Object b;
b = a;
Object c;
c = b;
c = 900;
System.out.println(a);
System.out.println(b);
System.out.println(c);
输出结果是好多。。求解释、。
Object b;
b = a;
Object c;
c = b;
c = 900;
System.out.println(a);
System.out.println(b);
System.out.println(c);
输出结果是好多。。求解释、。
500
500
900
public static void main(String[] args) {
int a = 500;
Object b;
b = a;
Object c;
c = b;
c = 900;
System.out.println(a);
System.out.println(b);
System.out.println(c); }
Object b;
b = a;
Object c;
c = b;
1.b和c都是a自动装箱后对象的引用,
c = 900;
2.Integer对象是final修饰的,所以c = 900;会将900自动装箱。
因此最后打印的结果为500,500,900
这是我的理解[
能解释一下吗?
类型为Object的变量指向任意类型的对象.
a:你初始赋值为500;
b:引用了a ,值为500;
c:虽引用了b后为500,但被其后赋值的900覆盖。
然后就输出:
500
500
900
public static void main(String[] args) {
int a = 500;
Object b;
b = a;//父类的引用引用了一个子类的对象,编译器优化了
//将会创建一个Integer对象其值为500,b指向这个对象
System.out.println(b.getClass().getName());//java.lang.Integer
Object c;
c = b;//c指向b指向的对象
System.out.println(c.getClass().getName());//java.lang.Integer
c = 900;//编译器优化,创建一个Integer对象其值为900,c指向这个对象
System.out.println(c.getClass().getName());//java.lang.Integer
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}