Java開発のいくつかの小さな経験を蓄積し続けます

938 ワード

1パッケージクラスの比較は==ではなくequalを用いる.
Integer var=?-128~127の範囲での付与値は、IntegerオブジェクトがIntegerCacheである.Cacheが生成され、既存のオブジェクトが多重化されます.この区間内のInteger値は==を直接使用して判断できますが、この区間以外のすべてのデータは、スタック上で生成され、既存のオブジェクトは多重化されません.これは大きな穴で、equalsメソッドを使用して判断することをお勧めします.
public static void main(String[] args) {
		Integer a = 127;
		Integer b = getInteger(a);
		System.out.println(a);
		System.out.println(b);
		System.out.println(a==b);
	}
	public static Integer getInteger(Integer i) {
		Integer i1 = i + 1;
		Integer i2 = i1 - 1;
		return i2;
	}
 
  这样返回的数就是false 
   
   
  
public static void main(String[] args) {
		Integer a = 127;
		Integer b = getInteger(a);
		System.out.println(a);
		System.out.println(b);
		System.out.println(a==b);
	}
	public static Integer getInteger(Integer i) {
		Integer i1 = i + 1;
		Integer i2 = i1 - 1;
		return i2;
	}

これがtrueです