class a{}public class Test { public static void main(String[] args) { int f1 = 1 ; Integer f2 = new Integer(1); Integer f3=Integer.valueOf(1); System.out.println(f2==f1); System.out.println(f1==f3); System.out.println(f2==f3); }}
比较的时候注意"=="比较的两边是什么。第一个,第二个比较的都是整形数值,当然相等,所以true。但是第三个句子比较的是两个引用数据,由于两个引用数据指向的数值的存储空间地址并不是一样的,结果当然是不同的,所以是false了,不要认为他们指向的数值一样,就应该是true。还有一个比较两边相等的equal。建议看一下。
f1是基本类型 f2和f3是引用类型 所以f1和f2比较时, f2会拆箱和f1比较且比较的是数值f1和f3和上面的一样f2和f3比较是比的f2和f3引用类型的引用地址不是比较数值,两个对象的引用地址一般是不会相等的