Java String 클래스 예제

이민균·2021년 5월 22일
1

Java

목록 보기
3/4

초보자를 위한 Java 200제 , 중급 066, 189p

package javastudy;
public class StringMain {
    public static void main(String[] args) {
        String city1="Asia";    // String은 참조타입이지만 new 키워드 사용 안하고 생성 가능
        String city2="Europe";
        String city3= new String("Asia");
        String city7="Asia";
        System.out.println(city1);
        System.out.println(city1.length());
        System.out.println(city1==city2);   // Asia == Europe ==> false
        System.out.println(city1.equals(city2));
        System.out.println(city1==city3);   // new 키워드 아닌 Asia == new 키워드 Asia F
        System.out.println(city1==city7);   // new 키워드 아닌 Asia == new 키워드 아닌 Asia T
        System.out.println(city1.equals(city3)); // new 키워드 아닌 Asia.equals(new키워드 Asia) T
        System.out.println(city1.equals(city7)); // new 키워드 아닌 Asia.equals(new키워드 아닌  Asia) T

        /*  .equals() 는 해시 코드를 비교하고  == 는 레퍼런스를 비교한다. */

        String city4 = String.format("%s-%s", city1,city2);
        System.out.println(city4);
        String city5 = city1 + "-" + city2 + 1 + 2;
        System.out.println(city5);
        String city6 = 1 + 2 + city1 + "-" + city2;
        System.out.println(city6);
    }
}

보통 자바에서 equals를 사용하여 문자열이 동일한지 확인합니다. 다른 언어와 다르게 ==로 문자열이 같은지 확인하지 않습니다. ==는 object가 동일한지를 체크하기 때문에 object가 갖고 있는 문자열이 동일하다는 것을 보장하지 않기 때문입니다.

new 키워드로 생성한 객체의 stack의 레퍼런스는 같을 수 없다. 또 Heap의 해시코드도 같을 수 없다. 그러나 String은 Heap의 풀을 이용하므로, 같은 문자열에 대하여 new로 생성한 문자열의 Stack 레퍼런스는 다르지만 Heap의 해시코드는 동일하다.

<실행 결과>

profile
바보민균

0개의 댓글