当我们给一个整数对象赋值时,这个值是 自动盒子 转换为整数对象。例如,语句“Integer x=10”创建了一个值为10的对象“x”。
null
下面是一些基于自动装箱整数对象比较的有趣输出问题。
预测以下Java程序的输出
// file name: Main.java public class Main { public static void main(String args[]) { Integer x = 400 , y = 400 ; if (x == y) System.out.println( "Same" ); else System.out.println( "Not Same" ); } } |
输出:
Not Same
因为x和y指的是不同的对象,所以我们得到的输出是“不一样的”
下面程序的输出是Java的一个惊喜。
// file name: Main.java public class Main { public static void main(String args[]) { Integer x = 40 , y = 40 ; if (x == y) System.out.println( "Same" ); else System.out.println( "Not Same" ); } } |
输出:
Same
在Java中,从-128到127的值被缓存,因此返回相同的对象。如果值介于-128到127之间,valueOf()的实现将使用缓存对象。
如果我们使用new操作符显式地创建整数对象,我们会得到“不一样”的输出。请参阅下面的Java程序。在以下程序中,不使用valueOf()。
// file name: Main.java public class Main { public static void main(String args[]) { Integer x = new Integer( 40 ), y = new Integer( 40 ); if (x == y) System.out.println( "Same" ); else System.out.println( "Not Same" ); } } |
输出:
Not Same
预测以下程序的输出。这个例子是由 比沙尔·杜比 .
class GFG { public static void main(String[] args) { Integer X = new Integer( 10 ); Integer Y = 10 ; // Due to auto-boxing, a new Wrapper object // is created which is pointed by Y System.out.println(X == Y); } } |
输出:
false
说明: 这里将创建两个对象。第一个对象由于调用新操作符而被X指向,第二个对象由于自动装箱而被创建。
本文由 阿比拉蒂 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END