더북(TheBook)

정답

완성형 실습입니다. 그대로 코드를 입력해 실습하세요.

 

해설

String 변수 str1은 참조형 변수입니다. 참조형 변수는 변수를 저장하는 공간에 객체를 저장할 수 없기 때문에 다른 영역에 저장하고, 그 위치의 주소 값을 변수에 담습니다. == 연산자는 변수를 저장하는 공간의 값만 비교하므로 두 String 객체는 똑같이 생겼지만, 다른 영역에 객체가 저장됐고, 그 객체의 저장 위치는 다르므로 == 연산자로 비교했을 때 다르다고 결과가 나오는 것입니다.

 

그림 24-3 | 두 String 객체 비교

 

 

문제 2 == 연산자를 이용해 String을 비교하면 레퍼런스를 비교하기 때문에 같은 값인지 확인할 수 없습니다. 같은 값인지 확인하고 싶을 때는 equals 메서드를 사용하면 됩니다. 다음 코드를 실행해 equals 메서드의 동작을 확인해보세요.

package javaStudy;
public class StringExam{
    public static void main(String[]args) {
        String str1 = new String("Hello world");
        String str2 = new String("Hello world");
        if( str1.equals(str2) ) {
            System.out.println("str1과 str2는 같은 값을 가집니다.");    
        }
        else{
            System.out.println("str1과 str2는 다른 값을 가집니다.");
        }
    }
}

 

실행결과

str1과 str2는 같은 값을 가집니다.

 

정답

완성형 실습입니다. 그대로 코드를 입력해 실습하세요.

 

해설

equels 메서드는 == 연산자와는 다르게 메서드에서 구현한 내용을 판단합니다. 객체의 주소를 비교하지 않고, 객체의 내용을 비교합니다. 그래서 예제를 실행했을 때 두 객체가 같다는 결과를 얻습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.