== 와 equals 차이

728x90

JAVA.jpg

JAVA에서는 

만약

etc-image-1

으로 만들게 되면 

num1 == num2 라고 했을 때 true 이다. 그 이유는 

 

자바에서 int num1 = 1 으로 변수를 선언하면 이런 메모리에

1
 
 
 

이런 식으로 한 곳에 1이라는 숫자가 들어가게 된다. 근데 num1 = 1 이라는 값을 가르키는 상태에서 num2 = 1이라 선언하면

1
1
 
 

이렇게 1이 두개 만들어지는것이 아니고 

1
 
 
 

num2는 이미 만들어진 1을 가르키게 된다 이때 num1 == num2 를 하면 같은 곳을 가르키고 있다. 해서 true가 된다.

 

자바에서는

 

etc-image-2

이런식으로 만들어도 같은 문자열 "kim" 이 된다.

그렇지만 new String(""); 을 통해 객체 문자열을 만들게 되면

"kim" -> name1이 가르키는
"kim" -> name2가 가르키는
 
 

새로운 영역에 "kim"을 새로 만들게 된다. 이때 == 을 통해 name1 == name2 를 하게되면 false 가 된다. 같은 문자열 "kim"이지만 가르키는 곳이 다르기 때문이다.

 

이때 equals를 사용해야 한다. 모든 객체는 equals() 메소드를 기본적으로 가지고 있다.

그래서 name1.equals(name2) 를 하게되면 같다라는 true 값을 얻을 수 있다.  

반응형