자바 문자열 비교

이정우·2021년 8월 8일
0

자바

목록 보기
4/9

자바에서 문자열을 비교할 땐 ==보다는 equlas() 메소드를 사용하게 좋습니다. 그 이유는 자바에는 스택과 힙 영역이 존재하는데 사람이 보기에는 똑같이 생긴 문자열이여도 서로 다른 힙 영역을 가르키는 경우도 존재할 수 있습니다.
예를 들어

String name1 = "이정우";
String name2 = "이정우";

name1 == name2  ==>True
name1.equlas(name2) ==>True

이 경우 name1, 2는 같은 String객체인(heap영역에 있는) 이정우를 가르키기에 ==을 사용해도 괜찮습니다.

String name1 = "이정우";
String name2 = new String("이정우");

name1 == name2  ==>False
name1.equlas(name2) ==>True

하지만 name2처럼 새로운 객체로 생성하게 될 경우 name1의 이정우와는 다른 이정우heap영역에 저장되기에 ==로 확인할 경우 서로 다른 값이라는 결과가 나오게 됩니다. 그렇기에 단순히 문자의 생김새가 똑같냐를 확인할 경우에는 equlas를 사용해야 확실한 값을 얻을 수 있습니다.

배열의 경우

String[] a = new String[3];
a[0] = "이정우";
a[1] = "이정우";
a[2] = new String("이정우");

a[0] == a[1] => True
a[0] == a[2] => False
a[0].equlas(a[2]) => True

같은 배열이더라도 새로운 객체로 생성해주게 된다면 새로운 String객체를 가르키게 되므로 이때도 equals를 사용해야 합니다.

참고 내용 : 이것이 자바다, 국비 교육

profile
프로그래밍 공부 중!

0개의 댓글