본문 바로가기
카테고리 없음

[Java] 14. == 와 equals() - 값 비교

by 슈퍼닷 2015. 2. 5.
반응형

== 와 equlas() 는 값이 같은지 비교를 할때 쓰인다.

 

== 는 일반적으로 primitive data type 을 비교할때 쓰이고

equals()는 non primitive data type  , 즉 object를 비교할때 쓰인다.

 

 

public class Test

{

public static void main(String args[])

{

int a = 1;

int b = 1;

if ( a == b)

System.out.println("same");

else

System.out.println("different");


}
}

 

 

이 스크립트를 실행하면 same이 출력된다 . a와 b의 값이 같기때문에 a==b 조건문을 만족시켜서 same이 출력된 것이다.

 

public class Test

{

public static void main(String args[])
{

String a = "TEST";

String b = "TEST";

 

if ( a == b)

System.out.println("same");

else

System.out.println("different");

}
}

 

이 스크립트를 실행하면 different가 출력된다. 예전에 변수의 3가지 범위에 대해 설명할때 이런 말을 했다.

VarTest 변수 v1 v2 가 있다. VarTest 안에는 x와 y라는 변수가 있다.

v1.x ++  , v1.y++  , v2.x++ , v2.y++  이라는 스크립트를 추가하여 실행하였을때

v1.x(y) 와 v2.x(y) 는 같은 오브젝트의 값이 아니기때문에 둘다 2가 출력된다.

이렇게 알수있듯이 위의 스크립트에서 보면 a와 b의 주소값은 다르다. 그렇기에 정확한 값을 비교하는 == 는  a 와 b의 주소값이 다르기에 false를 반환한 것이다.

 

하지만 , 두개의 String 오브젝트 내용은 TEST로 같다. 내용상의 비교를 할수는 없을까?
equals()를 사용하면된다.

 

public class Test

{

public static void main(String args[])
{

String a = "TEST";

String b = "TEST";

 

if ( a.equals(b))

System.out.println("same");

else

System.out.println("different");

}
}

 

이제 스크립를 실행시키면 same이 출력될 것이다.

반응형

댓글