11
27/08/22 Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

Embed Size (px)

Citation preview

Page 1: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23 Walther-Rathenau-Gewerbeschule

1

Zeichenketten (Strings)

Page 2: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

java.lang.String

•String: Eine Sammlung von char-Zeichen (16-Bit Unicodezeichen):● "Hallo Ich heiße Ahmad" (String)● 'A' (char und KEIN String)● "A"(String)

●String stellt die Klasse der nicht änderbaren (siehe nächste Folie) String-Objekten dar.● Auch die Klassen StringBuilder und StringBuffer repräsentieren Zeichenketten in Java. Deren Verwendung ist bei häufigen Veränderungen effizienter.

Page 3: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

String-Konstruktion

•Einige Möglichkeiten der String (- Objekt) -Bildung:

String str = "Ich bin ein String-Objekt";String str2 = new String("Ich bin ein String-Objekt");•Die zweite Lösung erzeugt unnötigerweise ein zusätzliches String-Objekt, denn das Literal "Ich bin ein String-Objekt" ist ja bereits ein vollwertiges String-Objekt.•String(char[] data)String(char[] value, int offset, int length) String(StringBuffer buffer)String(byte[] bytes)String(byte[] bytes, String charsetName)//charsetName: spezielle Zeichenkodierung, die die //Umwandlung von Bytes in Unicode-Zeichen festlegt....

Page 4: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

Einige String-Methoden

System.out.println("hamburger");

String c = "hamburger".substring(4,8); // urge

String cde = "cde";System.out.println("abc" + cde);

String d = cde.substring(1, 2); // d

String träne = "Jede Träne kitzelt auch die Wange.";System.out.println( träne.substring( 5, 11 ) ); // Träne

int l = "hamburger".length() // 9

•Die Klasse String enthält viele Methoden, um einzelne Buchstaben aus Strings zu ermitteln, die Länge eines Strings zu bestimmen, Strings zu verbinden usw.. (siehe: http://java.sun.com/javase/6/docs/api/)

Page 5: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

Einige String-MethodenSystem.out.println("".length()); // 0System.out.println(" ".length()); // 1

if ("Ich bin fleißig.".contains("bin")) {…}if ("Ich bin fleißig.".indexOf("bin")!=-1) {…}

String s = "Ich bin fleißig.";char first = s.charAt(0); // 'I'char last = s.charAt(s.length() – 1); // '.'

System.out.println(s.replaceAll(" +", " " )); // Ich bin fleißig.

System.out.println(s.replaceFirst(" +", " ")); // Ich bin fleißig.

Page 6: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

Strings sind immutable und final

•Im laufe eines Programms können sehr viele redundante String-Objekte den Speicher belagern. Um Java mehr effizient zu machen, besitzt die JVM ein spezielles Speicherbereich, den sog. String-Konstant-Pool! Sollen neue String-Objekte erzeugt werden, schaut der Compiler, ob bereits ein Klon-Objekt im Konstant-Pool bereit steht. Es kann nun sein, dass zwei Objekte, die nichts voneinander wissen, Verweise auf dasselbe String-Objekt bekommen. Damit es nicht zu Seiteneffekten kommt, sind die Strings immutable also unveränderbar.•Nicht änderbar (immutable) bedeutet: Keine Methode darf ein String-Objekt verändern (z. B. einen Buchstaben im String durch einen anderen ersetzen usw..). Methoden die den Anschein machen, also ob sie einen String verändern liefern in Wahrheit lediglich ein neues String-Objekt mit den gewünschten Veränderungen zurück.•

Page 7: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

Strings sind immutable und final

"ottbert"

String s = "ottbert";

s = s.toUpperCase();

"OTTBERT"

Page 8: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

String-Vergleich

String s1 = new String("abcdef"); String s2 = new String("abcdef");

System.out.println(str1==str2);

Der Vergleich str1 == str2 liefert dann false weil s1 und s2 offensichtlich nicht dasselbe Objekt repräsentieren!!

"abcdef" "abcdef"

Page 9: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

String-Vergleich

s1 == s2 liefert hier true,weil die Variablen ungewolltauf dasselbe String-Objektaus dem Konstant-Poolzeigen...

Page 10: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

String-Vergleich

Strings werden nicht mit Hilfe desVergleichsoperator == auf Gleichheit geprüft, sondern mit Hilfe der Methoden equals() und equalsIgnoreCase().

Page 11: 28/07/2015Walther-Rathenau- Gewerbeschule 1 Zeichenketten (Strings)

26/04/23

Links zu Strings

•http://www.gailer-net.de/tutorials/java/Notes/chap29/ch29_1.html•http://openbook.galileocomputing.de/javainsel8/javainsel_04_008.htm