질문 : 다음 코드를 수행하면 결과는?
1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public static void main(String[] args) { String s1 = new String("Hello"); String s2 = new String("Hello");
if(s1 == s2) { System.out.println("s1 and s2 are =="); } else if (s1.equals(s2)) { System.out.println("s1 and s2 are equals()"); }
String s3 = "Hello"; String s4 = "Hello";
if(s3 == s4) { System.out.println("s3 and s4 are =="); } else if (s3.equals(s4)) { System.out.println("s3 and s4 are equals()"); } } |
결과
1 2 | s1 and s2 are equals() s3 and s4 are == |
해설
new() 생성자로 객체를 만들면 메모리를 heap 영역에 각각 할당하게 되지만 String s3 = "Hello"; 처럼 했을 때는 String Pool 에 값을 임시 저장하고 그 값을 스트링 변수간에 공유한다. 불필요하게 오브젝트 수가 많아지는 것을 방지하기 위함이다.
'컴퓨터활용 > java interview' 카테고리의 다른 글
method overloading Vs overriding (0) | 2013.01.06 |
---|