Java-Core-Klassen - String und Codierung

In Java ist String ein Referenz - Typ, es ist selbst eine Klasse.
Allerdings Java - Compiler String spezielle Behandlung , die direkt verwendet werden kann ‚...‘ eine Zeichenfolge anzuzeigen.
String s = "Hallo"
tatsächlich Strings intern durch einen String char [] Array repräsentiert wird daher in der folgenden Formulierung sind möglich:
String S2 = new new String (new new char [] { 'H', ‚E '' l '' l '' o ‚}) ,

weil String zu häufig, so Java bietet "..." diese Zeichenliteral Darstellung.

 

Ein wichtiges Merkmal von Java string ist unveränderlich.
Dies wird nicht durch das Innere der private final char [] -Feld denaturiert und ohne jegliche Modifikation char [] implementiertes Verfahren.

public  class catchExample2 {
     public  static  Leere main (String [] args) { 
        String s = "Hallo" ; 
        System.out.printin (s);  // Hallo 
        s = s.toUpperCase (); 
        System.out.printin (s);  // HALLO 
    } 
}

Das obige Beispiel nicht den Zeichenfolge Inhalt erklären ist variabel, hier ist es eine neue Zeichenfolge erstellt wird.

 

1. String - Vergleich
, wenn wir vergleichen wollenob zwei Strings gleich sind, müssen Sie equals () Methode verwendenanstatt mit ==.
Referenztypen müssen Gleichen, außer ENUM verwenden.

public  class catchExample2 {
     public  static  Leere main (String [] args) { 
        String s1 = "Hallo" ; 
        String s2 = "Hallo" ; 
        System.out.printin (s1 == s2);  // wahr 
        System.out.println (s1.equals (s2));  // wahr 
    } 
}

== gleich und die Oberfläche vollständig äquivalent ist.
Wenn wir die Art und Weise zu schreiben ersetzen, kann zur Folge haben völlig anders.

public  class catchExample2 {
     public  static  Leere main (String [] args) { 
        String s1 = "Hallo" ; 
        String s2 = "HELLO" .tolowercase (); 
        System.out.printin (s1 == s2);  // falsch 
        System.out.println (s1.equals (s2));  // wahr 
    } 
}

Java - Compiler während der Kompilierung als Objekt alle die gleiche Zeichenfolge automatisch in den Konstanten - Pool gesetzt werden,
muß das Gleichheits nur , ob der Inhalt einer Reihe von konsistenten , um zu bestimmen, und in der Tat == Urteil ist die Speicheradresse.
„Hallo“ und „Guten Tag“ repräsentieren tatsächlich verschiedenen Saiten, so sicherlich nicht die gleiche Speicheradresse.

Wenn Sie Groß- und Kleinschreibung Vergleich möchten, können Sie equalsIgnoreCase () -Methode verwenden.
String - Klasse bietet auch verschiedene Möglichkeiten für Teil suchen extrahiert String. Häufig verwendete Methoden sind:

// einen Teil enthält: 
    "the Hallo" .Contains ( "LL" )
 // Hinweis enthält () Methode Parameter ist CharSequence anstelle von String, da String CharSequence die Elternklasse ist. 

// Position eines Teil zuerst angezeigt: 
"Hallo" .indexOf ( "L");   // 2 

// Position einer Teilkette des letzten Vorkommens: 
"Hallo" .lastIndexOf ( "L");   // 3 

// ob mit einem Teil Start: 
"die Hallo" .startsWith ( "He");   // true 

// ob einen Teil beenden: 
"das Hallo" .endsWith ( "LO");   // true 

// in Scheiben geschnitten mit verschiedenen python, bedeutet es nicht , einen einzigen digitalen Wert zu nehmen, sondern alle folgenden Werte. 
"Die Hallo" .substring (2);   // die LLO 
"die Hallo."  String (2,4); // ll

 

2. Entfernen Sie Leerzeichen und letzte
Verwendung trim () Methode Leerzeichen StringEnde zumentfernen. Leer Zeichen einschließlich Leerzeichen, \ t, \ r \

"\ THELLO \ r \ n" .trim ()   // Hallo

Hinweis: trim () ändert sich nicht um den Inhalt des Strings, sondern gibt einen neuen String.
Eine weiterer Streifen () Methode kann auch von Leerzeichen entfernt und letzten Zeichenfolge sein.
Es und trim () unterscheidet, ist der Raum Charakter ähnlich wie die chinesischen \ u3000 werden entfernt.

String stellt auch isEmpty () und von ISBLANK () , um zu bestimmen , ob der String leer ist, und die leere Zeichenkette.

 

3. den Teil Ersetzen
Sie in der Zeichenfolge String ersetzt wird, gibt es zwei Methoden. Man wird als Zeichen oder Zeichenketten ersetzt.

String s = „Hallo“; 
s.replace ( 'L', 'w');

Die andere ist durch regelmäßige Ausdruck Substitution:

String s = „A ,, B, C, D“ 
s.replaceALL ( "[\\ \\: \\ s] +", "")

 

4. Split - String
zu String Segmentierung split () Methode verwendet, und auch einen regulären Ausdruck übergeben:

String s = „A, B, C, D“; 
String [] ss = s.plit ( "\\");  // { "A", "B", "C", "D"}

 

Die Zeichenfolge
VerkettungsstringVerkettungs statische Methode join (), die mit dem angegebenen StringArray Zeichenfolge verbunden ist:

String [] = {arr "A", "B", "C" } 
String s = String.Join ( "***", arr);  // "A *** *** B C"

 

6. Typumwandlung
nimmtWesentlichen jede Art oder ein Referenztyp in einen String, kann die statische Methode valueOf ().
Dies ist eine überladene Methode, wird der Compiler automatisch die geeigneten Parameter wählen nach der Methode:

String.valueOf (123); // "123" 
String.valueOf (45,67); // "45,67" 
String.valueOf ( wahr ); // "true" 
String.valueOf ( neue Object ()); // 类似java.lang.Object@636be97c

Strings in andere Arten setzen, ist es unter den gegebenen Umständen erforderlich.

int N1 = die Integer.parseInt ( "123"); // 123 
int N2 = der Integer.parseInt ( "FF", 16); // Hexadezimal - Konverter, 255

Convert String boolean Typ:

boolean b1 = Boolean.parseBoolean ( "true"); // wahr   
boolean b2 = Boolean.parseBoolean ( "FALSCH"); // falsch

Besondere Aufmerksamkeit zuteil, da Integer getInteger (Sting) -Methode, die nicht in eine Zeichenfolge int umgewandelt wird,
aber die Zeichenfolge entsprechende Systemvariable Ganzzahl umgewandelt werden :

Integer.getInteger ( "java.version");

Umgewandelt [char]
String und Typ char [] umgerechnet werden können, durch:

char [] cs = „Hallo“ .toCharArray (); 
String s = neue String (cs)

Wenn Sie das Zeichen [] Array, String ändern und wird sich nicht ändern:

public  class catchExample2 {
     public  static  Leere main (String [] args) {
         char [] cs = "Hallo" .toCharArray (); 
        String s = neue String (cs); 
        System.out.printin (s);  // Hallo 
        cs [0] = 'X' ; 
        System.out.printin (s);  // Hallo 
    } 
}

Dies liegt daran , eine neue String - Instanz durch neuen String (char []) zu erstellen, wird es nicht direkt in die char [] array referenziert wird,
daher ist das externe char [] Array ändert nicht die interne char String - Instanz beeinflussen [ ] -Array, da dies zwei verschiedene Arrays.

Paket com.imooc.iexecption; 

import java.util.Arrays; 

Klasse Score {
     Private  int [] Partituren;
    public Score ( int [] Partituren) {
         diese .scores = Partituren; 
    } 
    Public  Leere printScores () { 
        System.out.println (Arrays.toString (Noten)); 
    } 
} 

Public  class catchExample2 {
     public  static  Leere main (String [] args) {
         int [] Partituren = neue  int [] {88, 77, 51, 66  };
        Punkte s= Neue Score (Noten); 
        s.printScores (); 
        Partituren [ 2] = 99 ; 
        s.printScores (); 
    } 
}

Wir fanden , dass der Ausgang der beiden sind nicht die gleichen, aufgrund interner Punktzahl ein direkter Bezug auf das externe eingehende int [] array,
die Änderungen an den externen Code int führen kann [] Array.

 

Ich denke du magst

Origin www.cnblogs.com/yangmingxianshen/p/12501237.html
Empfohlen
Rangfolge