728x90
JAVA에서는
만약
으로 만들게 되면
num1 == num2 라고 했을 때 true 이다. 그 이유는
자바에서 int num1 = 1 으로 변수를 선언하면 이런 메모리에
1 |
이런 식으로 한 곳에 1이라는 숫자가 들어가게 된다. 근데 num1 = 1 이라는 값을 가르키는 상태에서 num2 = 1이라 선언하면
1 |
1 |
이렇게 1이 두개 만들어지는것이 아니고
1 |
num2는 이미 만들어진 1을 가르키게 된다 이때 num1 == num2 를 하면 같은 곳을 가르키고 있다. 해서 true가 된다.
자바에서는
이런식으로 만들어도 같은 문자열 "kim" 이 된다.
그렇지만 new String(""); 을 통해 객체 문자열을 만들게 되면
"kim" -> name1이 가르키는 |
"kim" -> name2가 가르키는 |
새로운 영역에 "kim"을 새로 만들게 된다. 이때 == 을 통해 name1 == name2 를 하게되면 false 가 된다. 같은 문자열 "kim"이지만 가르키는 곳이 다르기 때문이다.
이때 equals를 사용해야 한다. 모든 객체는 equals() 메소드를 기본적으로 가지고 있다.
그래서 name1.equals(name2) 를 하게되면 같다라는 true 값을 얻을 수 있다.
728x90
'Back-End > JAVA' 카테고리의 다른 글
자바8 - 인터페이스의 기본 메소드와 스태틱 메소드 (0) | 2021.04.08 |
---|---|
자바 indexOf() - 문자열 중 해당문자 위치 찾기 (0) | 2021.04.07 |
자바 charAt(int i) -'0' 에 대해서 문자를 정수형으로? (0) | 2021.04.05 |
자바8 - 함수형 인터페이스와 람다 표현식에 대해서 간단하게 (0) | 2021.04.04 |
Optional (0) | 2020.12.16 |