Java Integer int == problema de comparación

Creo que soy un veterano, pero si no tengo cuidado, sigo cayendo al hoyo.

package xcg.util;

public class Test {

	public static void main(String[] args) {
		Integer a=1;
		Integer b=1;
		Integer c=new Integer(1);
		Long d=new Long(1L);
		
		System.out.println("Integer a=1,Integer b=1,a==b?"+(a==b));
		System.out.println("Integer a=1,Integer b=1,a.equals(b)?"+(a.equals(b)));
		System.out.println("Integer a=1,Integer c=new Integer(1),a==c?"+(a==c));
		System.out.println("Integer a=1,Integer c=new Integer(1),a==c?"+(a.equals(c)));
		System.out.println("Integer a=1,Long d=1,a==d?语法错误");
		System.out.println("Integer a=1,Long d=1,a.equals(d)?"+(a.equals(d)));
		System.out.println("我的理解:==对象比较对象,简单类型比较值,对象比较简单类型则比较值,equals是同数据类型内容比较(不同数据类型即使值同但fase,例如同内容的String和StringBuffer比较结果为false),我的最终做法是:==配合.IntegerValue()或LongValue");
		System.out.println("Integer a=1,Long d=1,a.intValue()==d?"+(a.intValue()==d));
	}
}

El resultado de la operación es:

Entero a = 1, Entero b = 1, a == b? Verdadero
Entero a = 1, Entero b = 1, a.equals (b)? Verdadero
Entero a = 1, Entero c = nuevo Entero (1), a = = c? falso
Entero a = 1, Entero c = nuevo Entero (1), a == c? verdadero
Entero a = 1, Largo d = 1, a == d? Error de sintaxis
Entero a = 1, Largo d = 1 , a.equals (d)? false Según tengo
entendido: == Object compara objetos, tipos simples comparan valores, objetos comparan tipos simples comparan valores, equals compara el contenido del mismo tipo de datos (diferentes tipos de datos incluso si el valor es el mismo pero fase) Mi enfoque final es: == cooperate. IntegerValue () o LongValue
Integer a = 1, Long d = 1, a.intValue () == d? True

 

Supongo que te gusta

Origin blog.csdn.net/xcg8818/article/details/105406280
Recomendado
Clasificación