2013년 6월 28일 금요일

(130628) 5일차 StringTest.java (String 테스트 - API 사용)

 - String
 : 일반적인 String 타입 String a = "하하";는 heap영역이 아닌 String 번지가 "하하"를 가리키고, String b = "하하"또한 String 번지에서 a와 같은 주소번지를 가리킨다. 따라서 a와 b는 비교시 "=="로 가능하다.
 : 반면 다른 Object String 타입인 String k = new String("하하");는 heap 영역에 생성되고, String i = new String("하하");또한 heap 영역에 생기지만, 같은 주소번지를 가리키지 않고 별도로 존재한다. 따라서 이들은 Object이기 때문에 비교할때 equal() 메소드를 사용한다.


 - 소스
public class StringTest {

public static void main(String[] args) {

// String 영역에 만들어지므로 "=="로 비교 가능하다.
// 같은 영역에 있고, a와 b가 같은 주소번지를 가리키고 있기 때문
String a = "하하";
String b = "호호";
if(a==b)
System.out.println("같다");
else
System.out.println("틀리다");

// 메모리 heap 영역에 만들어짐. (각자 만들어지므로 데이터 비교가 "=="로 불가능)
// 같은 heap 영역에 있긴 하지만 개별으로 존재
String c = new String("하하");
String d = new String("하하");
if(c.equals(d))
System.out.println("같다");
else
System.out.println("틀리다");
}
}


 - 결과