持续积累 java开发的一些小经验

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


你可能感兴趣的:(经验)