2017-05-16 1 views
0

In dem folgenden Programm versuche ich, eine Zeichenfolge zu ersetzen und zu versuchen, es der gleichen Variablen zuzuweisen. Aber in Java sind die Strings immutable. Nach der Erstellung können wir sie nicht mehr ändern. Aber hier kann ich modifizieren. Nicht sicher, ob mein Verständnis stimmt. Kann mir jemand helfen?Java Unveränderliche Zeichenfolgen

public static void main(String[] args) { 

     String s = "1234504"; 
     s = s.replaceAll("0", ""); 
     int count = 0; 
     for(int i = 0; i< s.length() ; i++){ 
      if(Character.isDigit(s.charAt(0))){ 
       count++; 
      } 
     } 
     System.out.println("Number of digits in string"); 
     System.out.println(count); 

    } 
+2

Sie ändern die Zeichenfolge nicht, Sie ersetzen sie durch eine neue Zeichenfolge. – Kayaman

+0

Nicht verwandt mit Frage, aber: Da Sie Literale ersetzen, müssen Sie 'replaceAll' nicht aufrufen, die Regex unterstützen. Es ist besser, stattdessen 'replace' zu ​​wählen, da es sicherer ist, keine Probleme zu haben, wenn Ihr Literal Regex-Metazeichen wie + *^$ und andere enthält. Beide Methoden ersetzen alle Vorkommen des gesuchten Teils in der Zeichenfolge. Der einzige Unterschied zwischen diesen Methoden ist die Regex-Unterstützung. – Pshemo

Antwort

0

s = s.replaceAll("0", ""); mutieren keine String, erstellt es eine neue String und weist ihn der s Variable. Das Original String, auf das von s verwiesen wurde, bleibt unverändert.

+0

Könnten Sie mir bitte ein Beispiel geben, wie man eine Zeichenfolge mutiert – Aishu

+0

@Aishu Nein, weil Sie eine Zeichenfolge nicht mutieren können. – Eran

+0

Wir können eine Zeichenfolge, die als final rt definiert ist, nicht ändern ... Ist das auch ein Beispiel, dass wir eine Zeichenfolge nicht mutieren können. Habe ich recht? – Aishu

Verwandte Themen