2012-05-31 19 views
5

Powiel możliwe:
What is the purpose of the expression “new String(…)” in Java?Kiedy należy używać String s = new String ("Hello World")?

wiem, że String s = new String("Hello World") należy unikać, ponieważ będzie ona stworzyć dodatkową przestrzeń dla "Hello World", które jest konieczne w większości przypadków.

Powiązane pytanie wyjaśniając, dlaczego należy unikać String s = new String("Hello World") jest tutaj:

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

Ale gdy potrzebujemy użyć String s = new String("Hello World") zamiast String s = "Hello World"? To jest moje pytanie do wywiadu.

Jeśli w większości przypadków należy unikać String s = new String("Hello World"), dlaczego Java nadal pozwala na to?

+0

samo pytanie dotyczy 'new Boolean (true)', kiedy można zrobić 'Boolean.TRUE'. – Thilo

+0

Istnieje wiele trywialnych fragmentów kodu, których nie można oczekiwać, że Java * uniemożliwi * pisanie. 'int a = 5 + 1 - 1;' jest głupie, ale legalne. –

+1

@Damien_The_Unbeliever: Ten konkretny przykład jest pod opieką kompilatora (podczas gdy 'new String (" s ");)) nie jest. – Thilo

Odpowiedz

1

1) Ciąg s = "tekst"; Ta składnia przydzieli pamięć dla "tekstu" w stercie. i za każdym razem, kiedy przypiszesz ten "tekst" do innej zmiennej, zwróci to samo odniesienie do pamięci za każdym razem. dla Exp -

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

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

wypisze - Tak

ale
łańcuch s = new String ("tekst"); Zawsze twórz nowe położenie w pamięci i za każdym razem zwracaj nowe odwołanie. dla Exp -

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

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

drukuje - Nie

+0

Przepraszam, czy możesz podać konkretny przykład, kiedy powinienem użyć nowego ciągu? Znam teorię za tym, po prostu brak przykładu –

Powiązane problemy