Integer 는 객체.. 값을 비교할려면  == 가 아닌 equals 를 써야 한다.

package test2.object;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@SpringBootTest
public class IntegerEquals {

	@Test
	public void test() {
		Integer i1 = 127;
		Integer i2 = 127;
		log.debug(" i1 == i2 = {}, i1.equals(i2) = {}", i1==i2, i1.equals(i2));
		// i1 == i2 = true, i1.equals(i2) = true
        
		Integer i3 = 128;
		Integer i4 = 128;
		log.debug(" i3 == i4 = {}, i3.equals(i4) = {}", i3==i4, i3.equals(i4));
		// i3 == i4 = false, i3.equals(i4) = true
        
		Integer i5 = 128;
		int i6 = 128;
		log.debug(" i5 == i6 = {}, i5.equals(i6) = {}", i5==i6, i5.equals(i6));
		// i5 == i6 = true, i5.equals(i6) = true
	}
	
}

 

테스트에서 보는 봐와 같이 

127까지는 Integer 도 == 로 비교 시 제대로 비교된다. 하지만 128부터는 equals 를 해야 한다.

int 와 Integer 를 비교하는 경우에는 == 비교 시 묵시적 형변환으로 제대로 비교되는걸 알수 있다.

+ Recent posts