== 와 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이 출력될 것이다.
댓글