Ein- und Ausgabe
Ausgabe mit java.lang.System.out
System.out.printf("Juhu %n");
System.out.println("Hello");
System.out.print(", World!");Eingabe mit java.util.Scanner
import java.util.*;
Scanner input = new Scanner(System.in);
int i = input.nextInt();
float f = input.nextFloat();
double d = input.nextDouble();
boolean b = input.nextBoolean();
String s = input.nextLine();
input.close();Dateien einlesen
import java.io.*;
import java.util.*;
class Beispiel {
public static void main(String[] args)
throws FileNotFoundException {
Scanner datei = new Scanner(new File("Test.txt"));
int zähler = 1;
while (datei.hasNextLine())
System.out.println(
zähler++ + ": " + datei.nextLine()
);
datei.close();
}
}Strings
Zuweisung
- Einmal erzeugte Strings sind unveränderbar (immutable)
- Alle Methoden, die scheinbar einen String verändern, liefern in Wirklichkeit eine veränderte Kopie, das Original bleibt unverändert
Mehrzeilige Strings
System.out.println("Das ist die erste Zeile\n" +
"das die zweite und\n" +
"das die dritte.");
// Hinter den ersten Anführungszeichen darf nur Leerraum stehen
System.out.println("""
This is the first line
this the second and
this the third.""");Gleichheit prüfen
String s1 = "Hello";
String s2 = "Hello";
String s3 = new String("Hello");
System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false
System.out.println(s1.equals(s3)); // true- Compiler sieht, dass
s1unds2den gleichen Inhalt haben und weist ihnen deshalb die selbe Referenz zu s3ist aber eine andere Referenz, deswegen funktioniert der Vergleich mit==nicht- Um auf Gleichheit von Strings zu prüfen, verwendet man
string1.equals(string2)
Method chaining
System.out.println("Dies ist ein kleines Beispiel"
.replace("Dies", " DIESES Beispiel")
.strip()
.toLowerCase());Ausgabe:
dieses beispiel ist ein kleines beispiel
Die Klasse StringBuilder
- Da Strings immutable sind können diese wenn sie dauernd verändert werden die Performance beeinträchtigen
- Auch gibt es für den normalen String viele hilfreiche Funktionen nicht, z.B. um einen String umzukehren
- Abhilfe schafft die Klasse
StringBuilder:
var s = new StringBuilder("Neuburg");
s.append(" Donau");
s.insert(7, " an der blauen");Inhalt von s nach der jeweiligen Zeile:
Neuburg
Neuburg Donau
Neuburg an der blauen Donau
Verketten von Strings
1 + 2 // 3
1 + 2 + "->" // 3->
"->" + 1 + 2 // ->12
"->" + (1 + 2) // ->3
"" + 1 + 2 // 12
Object o1 = new Object();
Object o2 = null;
"p: " + p // p: Person@1cde100
"q: " + q // q: nullAuswahl an String-Funktionen
// Liefert die Länge des Strings
int length()
// Liefert das Zeichen an Position index
char charAt(int index)
// Liefert Teilstring[a .. b-1]
String substring(int a, int b)
// Entfernt whitespace vorne und hinten
String strip()
// Gibt Wahrheitswert zurück, ob Kondition stimmt
boolean isEmpty()
boolean isBlank()
boolean startsWith(String s)
boolean endsWith(String s)
// Liefert index wo c oder s das
// erste/letzte mal vorkommt oder -1
int indexOf(char c)
int indexOf(String s)
int lastIndexOf(char c)
int lastIndexOf(String s)
// Liefert Kopie in Klein-/Großbuchstaben
String toLowerCase()
String toUpperCase()
// Ersetzt alle a durch b
String replace(char a, char b)
String replace(String a, String b)
// Liefert diesen String n-fach verkettet
String repeat(int n)
// Gibt einen formatierten String zurück
// (ähnlich wie bei printf)
// Kann Gebietsschemen verwenden (z.B. werden bei
// Locale.GERMANY Kommazahlen mit Komma gerendert)
String format(String format, Object... args)
String format (Locale l, String format, Object... args)
// Verbindet mehrere Strings
String join(String delimiter, String... elements)
// Zerlegt diesen String in Teilstrings an den
// in regex angegebenen Trennstellen
String[] split(String regex)
// Wandelt diesen String in ein neues char-Array um.
// Hilfreich, da man über Strings nicht iterieren kann,
// über Arrays aber schon.
char[] toCharArray()Arrays
- Anders als in C sind Arrays in Java ganz normale Datentypen, die sowohl valide Parameter sowie Rückgabewerte sind
Initialisieren von Arrays
int[] vektor;
vektor = new int[3];
// Array-Elemente initialisieren
vektor[0] = 47;
vektor[1] = 11;
vektor[2] = 42;
// ODER
int[] vektor;
vektor = new int[] {47, 11, 42}; // keine Längenangabe erlaubt!
// ODER
int[] vektor = new int[] {47, 11, 42};
// ODER
int[] vektor = {47, 11, 42}Arrays aus Objekten:
Rechteck[] reihe = new Rechteck[3]; // new Array
reihe[0] = new Rechteck(3, 4); // new Rechteck
reihe[1] = new Rechteck(5, 3);
reihe[2] = new Rechteck(4, 2);
// ODER
Rechteck[] reihe = {
new Rechteck(3, 4),
new Rechteck(5, 3),
new Rechteck(4, 2)
};Über Arrays iterieren
String[] satz = {"Dies", "ist", "ein", "Beispiel"};
for (var s : satz)
System.out.println(s);Varargs
int summe(int... v) {
int summe = 0;
for (int i = 0; i < v.length; i++) summe += v[i];
return summe;
}Auswahl an Array-Funktionen
// Liefert die Anzahl der Einträge des Arrays
int length()
// Weist jedem Element aus a den Wert val zu
void fill(int[] a, int val)
// Sortiert gemäß natürlicher Ordnung
// Bzw. mit c gemäß der durch c festgelegten Ordnung
void sort(Object[] a)
void sort(Object[] a, Comparator c)
// Stellt die Elemente eines eindimensionalen Arrays als String dar
String toString(Object[] a)
// Stellt die Elemente eines mehrdimensionalen Arrays als String dar
String deepToString(Object[] a)
// True, falls die Elemente von a1 gleich den Elementen von
// a2 sind bzw. (bei Objekten) die Referenzen gleich sind
boolean equals(int[] a1, int[] a2)
// Wie oben, nur müssen die Elemente auf der tiefsten Ebene übereinstimmen
boolean deepEquals(Object[] a1, Object[] a2)Flussdiagramme
| Form | Bedeutung |
|---|---|
| Rechteck | Operation |
| Raute | Verzweigung |
| Rechteck mit doppelten vertikalen Linien | Unterprogramm |
| Parallelogramm | Ein-/Ausgabe |
| Pfeil / Linie | Verbindung zum nächstfolgenden Element |
| Oval | Start, Ende, Grenzpunkte |