String: 是地址比较所以是false。
integer:①无论如何,Integer a=1;与Integer b = new Integer(1);不会相等。不会经历拆箱过程,b 的引用指向堆,而 a 指向专门存放他的内存(常量池),他们的内存地址不一样,所以为false
②两个都是非new出来的Integer,Integer a =1; Integer b = 1;如果数在-128到127之间,则是true,否则为false
java在编译Integer a = 128的时候,被翻译成-> Integer a = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存
③两个都是new出来的new Integer(1),new Integer(1),都为false
④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比 |