int n=420;
Integer i = new Integer(n);
List<Integer> l=new ArrayList<Integer>();
l.add(i);
l.add(i);
System.out.println(l.get(0)==l.get(1));
这个输出true
为什么
int n=420;
List<Integer> l=new ArrayList<Integer>();
l.add(n);
l.add(n);
System.out.println(l.get(0)==l.get(1));
输出false
把n换成42又是true
我看网上说和自动拆箱 装箱有光 但是不明白为什么的
谢谢各位 ------最佳解决方案-------------------- LZ,我知道你想问什么了,但是你把你自己搞混了···
第一段:
int n=420;
Integer i = new Integer(n);
List<Integer> l=new ArrayList<Integer>();
l.add(i);
l.add(i);
// 这里你只 new 一个对象 i ,当然add 是同一个对象。
System.out.println(l.get(0)==l.get(1));
// 如果你改成下面的代码,outPut 就是 false:
int n = 420;
Integer i = new Integer(n);
Integer j = new Integer(n);
List<Integer> l = new ArrayList<Integer>();
l.add(i);
l.add(j);
System.out.println(l.get(0) == l.get(1));