ABOUT ME

작은 디테일에 집착하는 개발자

Today
-
Yesterday
-
Total
-
  • [Java] String 클래스의 equals(), ==, = 의 차이점
    IT Study/컴퓨터 기초 2023. 3. 23. 09:50
    728x90

     

    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가 출력됩니다.

Designed by Tistory.