엠마의 개발공부일지

isEqualTo vs isSameTo 비교(깨알 instanceof연산자내용 포함) 본문

Stack/Java

isEqualTo vs isSameTo 비교(깨알 instanceof연산자내용 포함)

Emmababy 2020. 12. 9. 11:04
728x90

 

 

Java JUnit 테스트에서 assertThat구문은 어떤조건이 참인지 확인하는 구문이다

 

[사용예시]

 

assertThat구문에서 많이 사용하는 메서드인 isEqualTo 와 isSameTo를 비교해보겠다.

 

 

 

[isSameTo]

일반 Primitive type의 변수는 값을 저장한다

a에는 5라는 값이 저장된다

int a = 5;

 

반면 일반타입의 변수는 값의 주소를 저장한다.

car에는 새로만든 Car객체의 주소값이 저장되어있다.

Car car = new Car();

 

isSameTo는 주소값을 비교하는 메서드이다.

String a = "apple";
String b = a;

 

이 경우 a에는 apple문자값의 주소가 저장되어있고,

b에는 a의 주소값이 똑같이 저장된다.

이경우 아래와 같이 표현된다

assertThat(a).isSameAs(b);

 

인텔리제이 도움말에서도 isSameAs관련하여 확인가능하다

 

 

[isEqualTo ]

isEqualTo는 대상의 내용자체를 비교한다.

String a = "apple";
String b = "apple";

 

이 경우 아래와 같이 표현된다

assertThat(a).isEqualTo(b);

 

 

 

 

cf) InstanceOf구문

 

다형성과 관련있는 구문.

참조변수가 참조하고 있는 인스턴스의 실제타입을 알아보기위한 연산자

 

[참조변수 c가 FireEngine클래스로 형변환이 가능하다면 if문 동작]

void doWork(Car c) {
	if(c instanceof FireEngine) {
    	FireEngine fe = (FireEngine) c;
        fe.water();
    }
}

 

 

728x90
Comments