-
[Java] String 클래스의 equals(), ==, = 의 차이점IT Study/컴퓨터 기초 2023. 3. 23. 09:50728x90
String 클래스에서 사용하는 equals와 ==, = 의 차이점에 대해 알아보도록 하겠습니다.
equals( ) 메서드
두 개의 객체가 서로 내용이 같은지 비교합니다.
즉, 주소값이 아닌 문자열 자체의 내용이 같은지를 비교하여 true, false를 리턴(반환)합니다.
= = 연산자
두 개의 객체가 같은지 비교합니다.
주소값이 같은지, 같은 메모리 주소를 참조하는지 비교하여 true, false를 리턴(반환)합니다.
= 연산자
우변의 값을 좌변의 변수에 대입합니다.
아래의 예시를 살펴보며 자세히 확인해보도록 하겠습니다.
public class Main { public static void main(String[] args) { String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); System.out.println(str1 == str2); // true System.out.println(str1 == str3); // false System.out.println(str1.equals(str2)); // true System.out.println(str1.equals(str3)); // true } }
1. new String() 사용하지 않을 경우
String str1 = "hello"; String str2 = "hello"; System.out.println(str1 == str2); // true System.out.println(str1.equals(str2); // true
new String() 없이 String 변수에 문자열을 대입할 경우,
같은 주소의 같은 내용의 문자열을 바라보고 있는 객체를 생성하게 됩니다.
∴ 위와 같이 선언하게 될 경우 같은 주소이자 같은 문자열이기 때문에
equals(같은 내용인지) 메서드, ==(같은 주소인지) 연산자에서도 모두 true가 출력됩니다.
2. new String() 사용할 경우
String str1 = "hello"; String str3 = new String("hello"); System.out.println(str1 == str3); // false System.out.println(str1.equals(str3)); // true
new String(str)은 '새로운 주소를 생성하여 str이라는 문자열을 넣어주겠다.' 라는 의미로
같은 내용의 문자열임에도 불구하고, 다른 주소에 저장되게 됩니다.
∴ equals(같은 내용인지) 메서드에서는 true가 출력될지라도 ==(같은 주소인지) 연산자에서는 false가 출력됩니다.
'IT Study > 컴퓨터 기초' 카테고리의 다른 글
[Java] 변수와 메모리 (0) 2023.03.24 [Java] next()와 nextLine() 차이와 사용법 (0) 2023.03.24 [Java] StringTokenizer (0) 2023.03.15 [Java] BufferedReader와 BufferedWriter (입출력 속도) (0) 2023.03.15 [보수] 음수 10진수를 2진수로 변환하기 (1의 보수, 2의 보수) (0) 2023.03.10