2012-05-31 2 views
5

가능한 중복 :
What is the purpose of the expression “new String(…)” in Java?String은 언제 사용해야합니까? s = new String ("Hello World")?

나는 그것이 대부분의 경우 불필요하다 "안녕하세요"에 대한 여분의 공간을 만들 것 같은 String s = new String("Hello World") 피해야한다 것을 알고있다.

What is the difference between "text" and new String("text")?

그러나 우리는 String s = new String("Hello World"), 대신 String s = "Hello World"를 사용해야 할 때

String s = new String("Hello World") 피해야한다 이유를 설명

관련 질문은 여기에있다? 이것은 제가 경험 한 인터뷰 질문입니다.

대부분의 경우 String s = new String("Hello World")을 피해야하는 경우 Java가 허용하는 이유는 무엇입니까?

+0

같은 질문은'(참) 새로운 부울는'당신이 할 수있는'Boolean.TRUE' 적용됩니다. – Thilo

+0

자바가 당신을 쓰지 못하게 할 것으로 기대하지 않는 많은 사소한 코드가 있습니다. 'int a = 5 + 1 - 1;'은 바보 같지만 합법적입니다. –

+1

@Damien_The_Unbeliever : 특별한 예가 컴파일러에 의해 처리됩니다 (new string ("s");)는 그렇지 않습니다. – Thilo

답변

1

1) 문자열 s = "텍스트"; 이 구문은 힙의 "텍스트"에 메모리를 할당합니다. 이 "텍스트"를 다른 변수에 할당 할 때마다 매번 동일한 메모리 참조를 반환합니다. 특급에 대한 - 인쇄 할

String aa = "text"; 
    String bb = "text"; 

    if(aa == bb){ 
     System.out.println("yes"); 
    } else { 
     System.out.println("No"); 
    } 

- 예

하지만
문자열의 = 새 문자열 ("텍스트"); 항상 메모리에 새 위치를 만들고 매번 새로운 참조를 반환합니다. 특급에 대한 -

String aa = new String ("text"); 
    String bb = new String ("text"); 

    if(aa == bb){ 
     System.out.println("yes"); 
    } else { 
     System.out.println("No"); 
    } 

인쇄합니다 - 아니

+0

죄송합니다. 다음에 새 문자열을 사용해야하는 구체적인 예를 들어 주시겠습니까? 나는 그 뒤에있는 이론을 안다. 단지 예제가 부족하다. –