diff --git a/.gitignore b/.gitignore index 94537ac..17c6c61 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,6 @@ *.exe *.class - # Recycle Bin used on file shares $RECYCLE.BIN/ diff --git a/Fragen/Kap.1.8.adoc b/Fragen/Kap.1.8.adoc index 9c4273f..c5979a9 100644 --- a/Fragen/Kap.1.8.adoc +++ b/Fragen/Kap.1.8.adoc @@ -1,25 +1,28 @@ // == Hello World!: Java-Crashkurs [Kap. 1.8] :solution: -### Frage (MC) +### Zeichenkette und `new` +[question,mc] +==== Wo ist das `new` zur Instanziierung geblieben? `String s = "abc";` - [ ] Man kann auch schreiben `String s = new "abc";` - [ ] Man kann auch schreiben `String s = new("abc");` -- [ ] Man kann auch schreiben `String s = new String("abc");` -- [ ] Ein `new` ist gar nicht notwendig. +- [x] Man kann auch schreiben `String s = new String("abc");` +- [x] Ein `new` ist gar nicht notwendig. +==== ifdef::solution[] .Antwort -- [x] Man kann auch schreiben `String s = new String("abc");` -- [x] Ein `new` ist gar nicht notwendig. +// - [x] Man kann auch schreiben `String s = new String("abc");` +// - [x] Ein `new` ist gar nicht notwendig. Der Ausdruck `"abc"` ist ein Zeichenketten-Literal. Literale erzeugen direkt eine Instanz ihres Typs, hier eine Instanz einer Zeichenkette. Literale werden ohne den `new`-Operator verwendet. Es ist auch legitim `new String("abc")` zu schreiben, was aber doppelte Arbeit leistet: die String-Instanz des Literals ist Argument im String-Konstruktor, der seinerseits eine neue, wertgleiche String-Instanz erzeugt. endif::solution[] -### Frage +### Javadoc-Kommentar vs. "normaler" Kommentar Wie unterscheidet sich ein Javadoc-Kommentar von normalen Kommentaren? ifdef::solution[] @@ -27,136 +30,163 @@ ifdef::solution[] Ein Javadoc-Kommentar beginnt mit `/\**` und endet mit `*/`. "Normale" Kommentare sind entweder einzeilig (`//`) oder mehrzeilig (von `/\*` bis `*/`). Javadoc-Kommentare werden vom dem Tool `javadoc` bei der Generierung der Dokumentation eines Programms mit berücksichtigt. endif::solution[] -### Frage (MC) +### Aussehen eines Javadoc-Kommentars +[question,mc] +==== Wie sieht ein Javadoc-Kommentar mit seinem öffnenden und schließenden Kommentarteil aus? - [ ] `/\*` und `*/` -- [ ] `/\**` und `*/` +- [x] `/\**` und `*/` - [ ] `/\**` und `/*` - [ ] `/\*` und `**/` +==== ifdef::solution[] -.Antwort -- [x] `/\**` und `*/` +// .Antwort +// - [x] `/\**` und `*/` endif::solution[] -### Frage (MC) +### Was ist ein Schlüsselwort? +[question,mc] +==== Was ist ein Schlüsselwort? - [ ] Unsinn, es gibt in Java so etwas wie ein Schlüsselwort nicht -- [ ] Ein Schlüsselwort ist ein reservierter Bezeichner +- [x] Ein Schlüsselwort ist ein reservierter Bezeichner - [ ] Als Schlüsselwort bezeichnet man in einer `Map` einen Wert vom Typ `K` (für _Key_) - [ ] Bezeichner in Großbuchstaben (wie `HALT`) heißen Schlüsselwörter +==== ifdef::solution[] .Antwort -- [x] Ein Schlüsselwort ist ein reservierter Bezeichner +// - [x] Ein Schlüsselwort ist ein reservierter Bezeichner Ein Schlüsselwort ist ein reservierter Bezeichner für Programmkonstrukte (wie z.B. `if`, `for` und `class`), der als Name für Variablen, Klassen etc. nicht gewählt werden darf. endif::solution[] -### Frage (MC) +### Never use Dollars in Javaland +[question,mc] +==== Never use Dollars in Javaland. Why? -- Die Frage meint: Warum sollen keine `$`-Zeichen in Bezeichnern für Variablen, Klassen, Methoden, Schnittstellen etc. verwendet werden? - [ ] Das `$`-Zeichen ist in Bezeichnern nicht erlaubt - [ ] Das `$`-Zeichen ist für einen internen Variablenbezeichner reserviert -- [ ] Das `$`-Zeichen ist Code-Generatoren vorbehalten +- [x] Das `$`-Zeichen ist Code-Generatoren vorbehalten - [ ] Das `$`-Zeichen ist ein Schlüsselwort +==== ifdef::solution[] .Antwort -- [x] Das `$` ist Code-Generatoren vorbehalten +// - [x] Das `$` ist Code-Generatoren vorbehalten Man überlässt den Gebrauch des `$`-Zeichens Code-Generatoren, so dass es keinen Konflikt mit den von Menschen gewählten Bezeichnern geben kann. endif::solution[] -### Frage (MC) +### `for`-Problem? +[question,mc] +==== `for(int i = 0; i \<= 10; i++);`. Wo ist das Problem? - [ ] Es muss `int i = 1` heißen - [ ] Statt des Strichpunkts müssen gescheifte Klammern `{ }` folgen - [ ] Im `for`-Kopf müssen die Strichpunkte durch Kommas ersetzt werden -- [ ] Ohne etwas vor dem Semikolon ist die `for`-Schleife sinnlos +- [x] Ohne etwas vor dem Semikolon ist die `for`-Schleife sinnlos +==== ifdef::solution[] .Antwort -- [x] Ohne etwas vor dem Semikolon ist die `for`-Schleife sinnlos +// - [x] Ohne etwas vor dem Semikolon ist die `for`-Schleife sinnlos Die Schleife bleibt ohne Auswirkungen (außer, dass sie Zeit für die Durchläufe verbraucht), da dem `for`-Kopf eine leere Anweisung (das Semikolon) folgt. endif::solution[] -### Frage (MC) +### Das Semikolon +[question,mc] +==== Das Semikolon `;` beendet - [ ] eine Datei - [ ] einen Ausdruck - [ ] eine Ausgabe -- [ ] eine Anweisung +- [x] eine Anweisung +==== ifdef::solution[] -.Antwort -- [x] eine Anweisung +// .Antwort +// - [x] eine Anweisung endif::solution[] -### Frage (MC) +### Ein Plus fur Zeichenketten? +[question,mc] +==== Kann man den "`+`"-Operator bei Zeichenketten anwenden? Falls ja, was bedeutet "`+`" bei Zeichenketten? - [ ] Addition der Strings - [ ] Addition der durch die Strings repräsentierten Zahlen -- [ ] Verkettung der Strings +- [x] Verkettung der Strings - [ ] Man kann Strings nicht addieren. +==== ifdef::solution[] .Antwort -- [x] Verkettung der Strings +// - [x] Verkettung der Strings Man nennt die Verkettung auch Konkatenation. endif::solution[] -### Frage (MC) +### Ein Minus für Zeichenketten? +[question,mc] +==== Kann man den "`-`"-Operator bei Zeichenketten anwenden? Falls ja, was bedeutet "`-`" bei Zeichenketten? - [ ] Subtraktion der Strings - [ ] Subtraktion der durch die Strings repräsentierten Zahlen - [ ] Entkettung der Strings -- [ ] Man kann Strings nicht subtrahieren. +- [x] Man kann Strings nicht subtrahieren. +==== ifdef::solution[] -.Antwort -- [x] Man kann Strings nicht subtrahieren. +// .Antwort +// - [x] Man kann Strings nicht subtrahieren. endif::solution[] -### Frage (MC) +### Das Semikolon und `if` +[question,mc] +==== Wenn jede Anweisung mit einem Semikolon beendet werden muss, gilt das auch für `if` oder `while`? Bsp.: `if (x < 0); x = 0;` (Was macht dieser Code?) Wenn `x` zuvor als `int` deklariert ist, welchen Wert würde der Ausdruck `x == 0` direkt nach dem gezeigten Codeabschnitt ergeben? -- [ ] `true`, sofern `x < 0` ein `true` ergeben hätte -- [ ] `true`, sofern `x < 0` ein `false` ergeben hätte +- [x] `true`, sofern `x < 0` ein `true` ergeben hätte +- [x] `true`, sofern `x < 0` ein `false` ergeben hätte - [ ] `false`, sofern `x < 0` ein `true` ergeben hätte - [ ] `false`, sofern `x < 0` ein `false` ergeben hätte +==== ifdef::solution[] .Antwort -- [x] `true`, sofern `x < 0` ein `true` ergeben hätte -- [x] `true`, sofern `x < 0` ein `false` ergeben hätte +// - [x] `true`, sofern `x < 0` ein `true` ergeben hätte +// - [x] `true`, sofern `x < 0` ein `false` ergeben hätte Wenn das `if` greift, wird es von einer leeren Anweisung `;` gefolgt -- insofern bleibt das `if` wirkungslos. Der sich anschließende Ausdruck `x = 0;` wird immer ausgeführt. endif::solution[] -### Frage (MC) +### Import von `Math` +[question,mc] +==== Warum kann man die Klasse `Math` verwenden, ohne sie vorher zu importieren? -- [ ] Weil sie als Teil von `java.lang` standardmäßig importiert wird +- [x] Weil sie als Teil von `java.lang` standardmäßig importiert wird - [ ] Weil das eben so ist; eine Entscheidung der Schöpfer von Java - [ ] Das ist ausschließlich eine Besonderheit der JShell - [ ] Das stimmt nicht, man muss `Math` explizit importieren +==== ifdef::solution[] -.Antwort -- [x] Weil sie als Teil von `java.lang` standardmäßig importiert wird +// .Antwort +// - [x] Weil sie als Teil von `java.lang` standardmäßig importiert wird endif::solution[] //// @@ -169,7 +199,7 @@ Wenn die Klasse in einem (noch nicht importierten) Paket definiert ist. endif::solution[] //// -### Frage (Seitenbezug) +### Eigenschaften Auf S.52 unten heißt es: "Java kennt keine Eigenschaften." Auf S.57 unten jedoch: "Über Attribute können Eigenschaften von Objekten gelesen bzw. gespeichert werden." Was ist da los? Ein Widerspruch? ifdef::solution[] @@ -177,22 +207,25 @@ ifdef::solution[] Der Begriff "Eigenschaften" ist hier doppelt belegt. Im ersten Satz ist das englische _property_ gemeint, womit ein Sprachkonstrukt bezeichnet wird, das es in Java nicht gibt. Im zweiten Satz geht es tatsächlich um "Eigenschaften" im umgangssprachlichen Sinne, also um Felder von Objekten. Leider werden diese Begriffe nicht immer einheitlich verwendet. endif::solution[] -### Frage (MC) +### `import` mit Stern +[question,mc] +==== `import a.packet.\*;` Was meint der Stern `*` in der `import`-Anweisung? - [ ] Importiere die Typen in `a.packet` und die in den Unterpaketen - [ ] Importiere nur die Klassen in `a.packet` -- [ ] Importiere die Typen in `a.packet` +- [x] Importiere die Typen in `a.packet` - [ ] Importieren die Klassen in `a.packet` und die in den Unterpaketen +==== ifdef::solution[] .Antwort -- [x] Importiere die Typen in `a.packet` +// - [x] Importiere die Typen in `a.packet` Der Stern importiert alle Typen (Klassen, Schnittstellen, Enumerationen) des angegebenen Pakets. endif::solution[] -### Frage +### Ein Datumspattern `DateTimeFormatter.ofPattern("EEEE, d. MMMM yyyy");` Was meint diese Codezeile? ifdef::solution[] @@ -200,17 +233,20 @@ ifdef::solution[] Die Methode `ofPattern` erzeugt ein `DateTimeFormatter`-Objekt. Die Zeichenkette `"EEEE, d. MMMM yyyy"` beschreibt, wie Datum und Uhrzeit formatiert werden sollen. `EEEE` steht für den vollständigen Wochentag, `d` für den Tag im Monat (1-31) usw. Kapitel 7 beschreibt den `DateTimeFormatter` ausführlicher. Das Verständnis für die Funktionsweise des `DateTimeFormatter` ist an dieser Stelle nicht wichtig. Gut wäre aber, wenn Sie die Funktionsweise von `import` verstehen. endif::solution[] -### Frage (MC) +### `Math`-Instanz? +[question,mc] +==== Warum kann man keine Instanz der Klasse `Math` erzeugen? - [ ] Weil `Math` keinen Konstruktor hat -- [ ] Weil der Konstruktor von `Math` privat ist +- [x] Weil der Konstruktor von `Math` privat ist - [ ] Weil `Math` eine statische Klasse ist - [ ] Weil die Klasse `Math` abstrakt ist +==== ifdef::solution[] .Antwort -- [x] Weil der Konstruktor von `Math` privat ist +// - [x] Weil der Konstruktor von `Math` privat ist Der Konstruktor von `Math` ist nicht `public`, und damit ist keine Instanz von `Math` erzeugbar. Von einer als `abstract` ausgewiesenen Klasse ist zwar ebenfalls keine Instanz erzeugbar, das trifft auf `Math` allerdings nicht zu. diff --git a/JavaFragen.Antworten.html b/JavaFragen.Antworten.html index 0991a25..4edeaa6 100644 --- a/JavaFragen.Antworten.html +++ b/JavaFragen.Antworten.html @@ -1,6 +1,7 @@ + @@ -418,6 +419,61 @@ .show-for-print{display:inherit!important}} + + +
-

2.17. Frage

+

2.17. Frage

Wie kann man den Wert "eine Million" mit drei Zeichen als Java-Literal darstellen?

@@ -1684,7 +1748,7 @@

2.17. Frage

-

2.18. Frage

+

2.18. Frage

Welche Ausgabe produziert das folgende Programmstück:

@@ -1715,7 +1779,7 @@

2.18. Frage

-

2.19. Frage

+

2.19. Frage

Im Anschluss an obigen Code: Was ergibt { int x; int x; }?

@@ -1725,7 +1789,7 @@

2.19. Frage

-

2.20. Frage

+

2.20. Frage

Ist es eine gute Idee, die drei Punkte eines Dreiecks mit dem folgenden Code zu initialisieren? Warum?

@@ -1741,7 +1805,7 @@

2.20. Frage

-

2.21. Frage

+

2.21. Frage

Wie könnte einer dieser ominösen auf S.77 erwähnten "Copy-Konstruktoren" für die Klasse java.awt.Point aussehen?

@@ -1777,7 +1841,7 @@

2.21. Frage

-

2.22. Frage

+

2.22. Frage

Was sind boxing und unboxing bei Wrapper-Klassen?

@@ -1787,7 +1851,7 @@

2.22. Frage

-

2.23. Frage

+

2.23. Frage

Was passiert bei der Ausführung von folgendem Code:

@@ -1810,7 +1874,7 @@

2.23. Frage

-

2.24. Frage

+

2.24. Frage

Warum kann man sowohl int x = Integer.parseInt("123"); als auch Integer x = Integer.parseInt("123"); schreiben? Was ist der Unterschied?

@@ -1820,7 +1884,7 @@

2.24. Frage

-

2.25. Frage

+

2.25. Frage

Was passiert bei folgender Deklaration Double x = 10;? Warum?

@@ -1830,7 +1894,7 @@

2.25. Frage

-

2.26. Frage

+

2.26. Frage

Gibt es einen Unterschied zwischen den folgenden beiden Codestücken?

@@ -1852,7 +1916,7 @@

2.26. Frage

-

2.27. Frage

+

2.27. Frage

Ist Integer eine Sub- oder Superklasse von Long, oder keins von beidem?

@@ -1862,7 +1926,7 @@

2.27. Frage

-

2.28. Frage

+

2.28. Frage

Welche einzelnen Schritte müssen passieren, um eine Zahl von der Konsole einzulesen?

@@ -1891,7 +1955,7 @@

2.28. Frage

-

2.29. Frage

+

2.29. Frage

Woher weiß System.out.println in dem folgenden Beispiel, wie ein Punkt auf der Konsole aussehen soll?

@@ -1906,7 +1970,7 @@

2.29. Frage

-

2.30. Frage

+

2.30. Frage

Definieren Sie einen Enumerationstyp Ternary, der die drei Werte TRUE, FALSE, und MAYBE besitzt.

@@ -1918,7 +1982,7 @@

2.30. Frage

-

2.31. Frage

+

2.31. Frage

Können Enumerationstypen auch Methoden haben? Wie sieht die Deklaration eines solchen Typs aus?

@@ -1933,7 +1997,7 @@

2.31. Frage

3. Operatoren

-

3.1. Frage

+

3.1. Frage

Operatoren kommen nur vor in __?

@@ -1943,7 +2007,7 @@

3.1. Frage

-

3.2. Frage

+

3.2. Frage

Was ist mit der Priorität eines Operators gemeint? Geben Sie ein Beispiel an.

@@ -1953,9 +2017,9 @@

3.2. Frage

-

3.3. Frage

+

3.3. Frage

-

Der Minus-Operator “-” ist linksassoziativ. Was ist damit gemeint? Erklären Sie das an einem Beispiel.

+

Der Minus-Operator “-” ist linksassoziativ. Was ist damit gemeint? Erklären Sie das an einem Beispiel.

Antwort
@@ -1966,7 +2030,7 @@

3.3. Frage

-

3.4. Frage

+

3.4. Frage

Was ist der Unterschied zwischen & und &&?

@@ -1976,7 +2040,7 @@

3.4. Frage

-

3.5. Frage

+

3.5. Frage

Die Zuweisung ist ein Operator. Das heißt, die Zuweisung hat als Ergebnis einen _?

@@ -1986,7 +2050,7 @@

3.5. Frage

-

3.6. Frage

+

3.6. Frage

Anschluss an vorherige Frage: Ist der Zuweisungsoperator rechts- oder linksassoziativ? Können Sie einen Grund angeben, warum es so sein muss?

@@ -1996,9 +2060,9 @@

3.6. Frage

-

3.7. Frage

+

3.7. Frage

-

Es gibt drei(!) Kontexte im Zusammenhang von Ausdrücken, in denen runde Klammernpaare (…​) vorkommen. Welche sind das?

+

Es gibt drei(!) Kontexte im Zusammenhang von Ausdrücken, in denen runde Klammernpaare (…​) vorkommen. Welche sind das?

Antwort
@@ -2022,12 +2086,12 @@

3.7. Frage

-

3.8. Frage

+

3.8. Frage

Erklären Sie, wie die Kopfzeile im while funktioniert:

-

whileline = breader.readLine( != null) { …​ }

+

whileline = breader.readLine( != null) { …​ }

Antwort
@@ -2045,7 +2109,7 @@

3.8. Frage

-

3.9. Frage

+

3.9. Frage

Angenommen, es gäbe den Modulo-Operator % in Java nicht. Wie müsste dann eine Implementierung mod(int x, int y) z.B. in der Math-Klasse aussehen?

@@ -2068,7 +2132,7 @@

3.9. Frage

-

3.10. Frage

+

3.10. Frage

Die Kurzform x += 3 bedeutet ausführlich was?

@@ -2078,7 +2142,7 @@

3.10. Frage

-

3.11. Frage

+

3.11. Frage

Erläutern Sie den Unterschied von int a = n;` zu `int a = n;!

@@ -2088,9 +2152,9 @@

3.11. Frage

-

3.12. Frage

+

3.12. Frage

-

Die Vergleichoperatoren wie >, , == usw. stehen für welche Typen zur Verfügung?

+

Die Vergleichoperatoren wie >, , == usw. stehen für welche Typen zur Verfügung?

Antwort
@@ -2098,7 +2162,7 @@

3.12. Frage

-

3.13. Frage

+

3.13. Frage

Wann kann man die Methode compareTo verwenden?

@@ -2108,7 +2172,7 @@

3.13. Frage

-

3.14. Frage

+

3.14. Frage

Warum ist es keine gute Idee, zwei Zeichenketten mit == zu vergleichen?

@@ -2118,7 +2182,7 @@

3.14. Frage

-

3.15. Frage

+

3.15. Frage

Was ist der Unterschied von & und && bei boolschen Werten? In beiden Fällen ergibt sich immer das gleiche Ergebnis, z.B.:

@@ -2136,27 +2200,27 @@

3.15. Frage

-

3.16. Frage

+

3.16. Frage

-

Wandeln Sie ein if (expr1 && expr2) {…​} so um, dass Sie nur if-Anweisungen ohne den &&-Operator verwenden!

+

Wandeln Sie ein if (expr1 && expr2) {…​} so um, dass Sie nur if-Anweisungen ohne den &&-Operator verwenden!

Antwort
-

if (expr1) if (expr2) {…​}

+

if (expr1) if (expr2) {…​}

-

3.17. Frage

+

3.17. Frage

-

Gleiche Aufgabe: Umwandlung von if (expr1 || expr2) { …​ }.

+

Gleiche Aufgabe: Umwandlung von if (expr1 || expr2) { …​ }.

Antwort
-

if (expr1) { …​ } else if (expr2) { …​ }

+

if (expr1) { …​ } else if (expr2) { …​ }

-

3.18. Frage

+

3.18. Frage

Multiplizieren Sie eine int-Zahl mit 4 ohne die Multiplikation zu verwenden.

@@ -2166,7 +2230,7 @@

3.18. Frage

-

3.19. Frage

+

3.19. Frage

Warum ist der ternäre-Operator nicht mit einem if zu vergleichen? Was ist anders?

@@ -2176,7 +2240,7 @@

3.19. Frage

-

3.20. Frage

+

3.20. Frage

Implementieren Sie eine Methode odd(int n) (odd heißt "ungerade"), die mithilfe eines Bitoperators ermittelt, ob der übergebene Integer ungerade ist oder nicht.

@@ -2190,7 +2254,7 @@

3.20. Frage

-

3.21. Frage

+

3.21. Frage

return b == true ? false : true; Verkürzen Sie die return-Anweisung.

@@ -2205,7 +2269,7 @@

3.21. Frage

4. Verzweigungen und Schleifen

-

4.1. Frage

+

4.1. Frage

Wie sieht die Syntax einer If-Abfrage aus?

@@ -2219,7 +2283,7 @@

4.1. Frage

-

4.2. Frage

+

4.2. Frage

Wie sähe der Ausdruck x = x < 0 ? -x : x mit einer normalen If-Abfrage aus?

@@ -2231,7 +2295,7 @@

4.2. Frage

-

4.3. Frage

+

4.3. Frage

Schreiben sie eine If-Abfrage, die abhängig vom Monat in der Integer-Variablen month (Der Januar entspricht der 1) die Jahreszeit ausgibt. (3-5: Frühling, 6-8: Sommer, 9-11: Herbst, 12-2: Winter)

@@ -2251,7 +2315,7 @@

4.3. Frage

-

4.4. Frage

+

4.4. Frage

Schreiben sie eine Switch-Verzweigung, die abhängig vom Monat in der Integer-Variablen month (Der Januar entspricht der 1) die Jahreszeit ausgibt. (3-5: Frühling, 6-8: Sommer, 9-11: Herbst, 12-2: Winter)

@@ -2275,7 +2339,7 @@

4.4. Frage

-

4.5. Frage

+

4.5. Frage

Was sind die drei Teile des Kopfes einer For-Schleife?

@@ -2295,7 +2359,7 @@

4.5. Frage

-

4.6. Frage

+

4.6. Frage

Ist die folgende Schleife syntaktisch korrekt? Falls ja, was wird auf der Konsole ausgegeben?

@@ -2322,7 +2386,7 @@

4.6. Frage

-

4.7. Frage

+

4.7. Frage

In Anlehnung an die letzte Frage: Können Sie mit einem einzigen Schleifenkopf eine Schleife schreiben, die die x- und y-Koordinaten aller Pixel eines Bildes mit 8x10 Pixeln durchläuft?

@@ -2337,7 +2401,7 @@

4.7. Frage

-

4.8. Frage

+

4.8. Frage

Ist die folgende Variante der Schleife auf S. 108 auch korrekt?

@@ -2355,9 +2419,9 @@

4.8. Frage

-

4.9. Frage

+

4.9. Frage

-

Ist for(int i; i < 10; i++) { …​ } korrekt?

+

Ist for(int i; i < 10; i++) { …​ } korrekt?

Antwort
@@ -2365,7 +2429,7 @@

4.9. Frage

-

4.10. Frage

+

4.10. Frage

Was ist bei Schleifen zu beachten deren Zählvariable vom Typ float oder double ist?

@@ -2375,7 +2439,7 @@

4.10. Frage

-

4.11. Frage

+

4.11. Frage

Kann der Zähler einer for-Schleife auch den Typ char haben?

@@ -2385,9 +2449,9 @@

4.11. Frage

-

4.12. Frage

+

4.12. Frage

-

Ein Student und eine Studentin schreiben den folgenden for-Kopf, um die Summe der Zahlen von 1 bis 50 zu berechnen: for(i = 1, sum = 0; i ⇐ 50; sum = i+); Was sagt Ihnen Ihr Programmierverstand?

+

Ein Student und eine Studentin schreiben den folgenden for-Kopf, um die Summe der Zahlen von 1 bis 50 zu berechnen: for(i = 1, sum = 0; i ⇐ 50; sum = i+); Was sagt Ihnen Ihr Programmierverstand?

(Übrigens: Der Kopf der Schleife ist syntaktisch korrekt, da liegt nicht das Problem!)

@@ -2398,7 +2462,7 @@

4.12. Frage

-

4.13. Frage

+

4.13. Frage

Schreiben Sie die folgende For-each-Schleife mit einer normalen for-Schleife: for(int x: ar) { System.out.println(x); }

@@ -2412,7 +2476,7 @@

4.13. Frage

-

4.14. Frage

+

4.14. Frage

Was ist der Unterschied zwischen einer while-Schleife und einer do-while-Schleife? In welchem Fall ist die eine sinnvoller, in welchem die andere?

@@ -2422,7 +2486,7 @@

4.14. Frage

-

4.15. Frage

+

4.15. Frage

Man kann jede for-Schleife in eine while- bzw. do/while-Schleife umwandeln. Stimmt das?

@@ -2432,7 +2496,7 @@

4.15. Frage

-

4.16. Frage

+

4.16. Frage

Beschreiben Sie die Ausführung einer for-Schleife:

@@ -2458,17 +2522,17 @@

4.16. Frage

-

4.17. Frage

+

4.17. Frage

Herrn Kofler kräuseln sich die Fußnägel, wenn Sie Fließkommazahlen im Kopf einer for-Schleife verwenden. Warum?

Antwort
-

 — TODO — 

+

 — TODO — 

-

4.18. Frage

+

4.18. Frage

for(int i = 0; i < 100; i++) { if (i % 2 == 0) System.out.println(i); }

@@ -2502,7 +2566,7 @@

4.18. Frage

-

4.19. Frage

+

4.19. Frage

Der Kopf for(int i = 1; ; i++) sei gegeben, Sie dürfen ihn nicht verändern. Allerdings darf die Schleife nur für i bis 50 laufen. Retten Sie das im Rumpf!

@@ -2521,7 +2585,7 @@

4.19. Frage

5. Arrays

-

5.1. Frage

+

5.1. Frage

Wie lauten die zwei Syntaxvarianten zur Deklaration einer (eindimensionalen) Array-Variable?

@@ -2534,7 +2598,7 @@

5.1. Frage

-

5.2. Frage

+

5.2. Frage

Kann die Größe von Java-Array nachträglich verändert werden? Warum/Warum nicht?

@@ -2544,7 +2608,7 @@

5.2. Frage

-

5.3. Frage

+

5.3. Frage

Seite 121: "Arrays können auch in for-each-Schleifen durchlaufen werden. Die Array-Elemente können dann jedoch nur gelesen, nicht aber verändert werden."

@@ -2557,7 +2621,7 @@

5.3. Frage

-

5.4. Frage

+

5.4. Frage

Seite 121: Was ist wohl mit "echten mehrdimensionalen Arrays" gemeint?

@@ -2567,7 +2631,7 @@

5.4. Frage

-

5.5. Frage

+

5.5. Frage

Seite 122: Warum for(int j=0; j<x[i].length; j)` beim Durchlauf von zweidimensionalen Arrays? Warum nicht `for(int j=0; j<x[0].length; j)?

@@ -2577,7 +2641,7 @@

5.5. Frage

-

5.6. Frage

+

5.6. Frage

Ist \u0000 wirklich das Zeichen 0? Deklarieren Sie in der JShell ein leeres char-Array und geben Sie den Inhalt aus.

@@ -2593,7 +2657,7 @@

5.6. Frage

-

5.7. Frage

+

5.7. Frage

Welchen Typ hat ein Array, das auf der Konsole als [Ljava.lang.String;@ff5b51f ausgegeben wird?

@@ -2605,7 +2669,7 @@

5.7. Frage

-

5.8. Frage

+

5.8. Frage

Wie könnte man eine "schönere" String-Darstellung des Arrays aus der letzten Aufgabe erhalten?

@@ -2615,7 +2679,7 @@

5.8. Frage

-

5.9. Frage

+

5.9. Frage

Was ist eine Shallow-Copy?

@@ -2625,7 +2689,7 @@

5.9. Frage

-

5.10. Frage

+

5.10. Frage

Worauf muss man beim Kopieren von mehrdimensionalen Arrays achten?

@@ -2635,7 +2699,7 @@

5.10. Frage

-

5.11. Frage

+

5.11. Frage

Was müsste man tun, um eine Deep-Copy eines Arrays zu erhalten?

@@ -2645,7 +2709,7 @@

5.11. Frage

-

5.12. Frage

+

5.12. Frage

Es gibt zwei Probleme mit dem folgenden Snippet. Welche? Array.sort(new int[]{5,7,-1,3,2})

@@ -2663,7 +2727,7 @@

5.12. Frage

-

5.13. Frage

+

5.13. Frage

Seite 126: Ändern Sie die Deklaration des Arrays so, dass der Code von Herrn Kofler auf die Nase fällt. Sie dürfen weder den Typ noch den Namen des Arrays verändern.

@@ -2683,7 +2747,7 @@

5.13. Frage

6. Zeichenketten

-

6.1. Frage

+

6.1. Frage

Wir ist die Schreibweise für ein Einzelzeichen-Literal?

@@ -2698,7 +2762,7 @@

6.1. Frage

-

6.2. Frage

+

6.2. Frage

Bei Literalen für Einzelzeichen hat der Backslash \ eine Sonderfunktion: Welche? (Wie nennt man den "Backslash"? Er ist das sogenannte ___zeichen.)

@@ -2709,7 +2773,7 @@

6.2. Frage

-

6.3. Frage

+

6.3. Frage

Was bedeutet "Unicode"?

@@ -2719,7 +2783,7 @@

6.3. Frage

-

6.4. Frage

+

6.4. Frage

Wie prüfen Sie, ob ein char c eine Ziffer oder ein Großbuchstabe ist?

@@ -2729,7 +2793,7 @@

6.4. Frage

-

6.5. Frage

+

6.5. Frage

Definieren Sie eine char-Variable, die das Unicode-Symbol "Airplane" (U+2708) enthält.

@@ -2741,7 +2805,7 @@

6.5. Frage

-

6.6. Frage

+

6.6. Frage

Ich gebe Ihnen ein geheimnisvolles Einzelzeichen geheim. Ermitteln Sie, welches Einzelzeichen geheim vorangeht und welches ihm folgt.

@@ -2751,7 +2815,7 @@

6.6. Frage

-

6.7. Frage

+

6.7. Frage

Was ergibt 'T' + 'H' + 'M'?

@@ -2763,7 +2827,7 @@

6.7. Frage

-

6.8. Frage

+

6.8. Frage

Was ergibt "" + 'T' + 'H' + 'M'?

@@ -2775,7 +2839,7 @@

6.8. Frage

-

6.9. Frage

+

6.9. Frage

Was ergibt 'T' + 'H' + 'M' + ""?

@@ -2790,7 +2854,7 @@

6.9. Frage

-

6.10. Frage

+

6.10. Frage

Wie machen Sie aus "MNI" eine Folge von Einzelzeichen?

@@ -2802,7 +2866,7 @@

6.10. Frage

-

6.11. Frage

+

6.11. Frage

Erstellen Sie die Zeichenkette "C:\Users\mni\oop\" (Windows-Stil) als Pfad-Angabe unter Java.

@@ -2816,7 +2880,7 @@

6.11. Frage

-

6.12. Frage

+

6.12. Frage

Beschreiben Sie den visuellen Effekt der Zeichenkette "\n\tTest\n".

@@ -2831,7 +2895,7 @@

6.12. Frage

-

6.13. Frage

+

6.13. Frage

Initialisieren Sie String s als leere Zeichenkette!

@@ -2846,7 +2910,7 @@

6.13. Frage

-

6.14. Frage

+

6.14. Frage

Gegeben sei das Array String[] s. Wir möchten davon eine Kopie anlegen. Muss man eine deep copy anfordern, reicht eine shallow copy oder genügt gar eine einfache Zuweisung?

@@ -2856,7 +2920,7 @@

6.14. Frage

-

6.15. Frage

+

6.15. Frage

Warum sollte man eine Zeichenkette niemals mit == vergleichen?

@@ -2866,7 +2930,7 @@

6.15. Frage

-

6.16. Frage

+

6.16. Frage

Ergibt "abc" == "abc" immer true oder kann es vielleicht auch mal false ergeben?

@@ -2876,7 +2940,7 @@

6.16. Frage

-

6.17. Frage

+

6.17. Frage

Was liefert der Vergleich "aaa" > "abc"?

@@ -2886,7 +2950,7 @@

6.17. Frage

-

6.18. Frage

+

6.18. Frage

Was ergibt String.valueOf("String")?

@@ -2898,7 +2962,7 @@

6.18. Frage

-

6.19. Frage

+

6.19. Frage

Welchen Formatierungscode brauchen Sie, um eine Fließkommazahl mit drei Nachkommastellen darzustellen?

@@ -2908,7 +2972,7 @@

6.19. Frage

-

6.20. Frage

+

6.20. Frage

Alles happy? int i = 3; System.out.println(i.toString());

@@ -2918,7 +2982,7 @@

6.20. Frage

-

6.21. Frage

+

6.21. Frage

Warum gibt es String.valueOf(), wenn es doch die toString()-Methode gibt?

@@ -2928,7 +2992,7 @@

6.21. Frage

-

6.22. Frage

+

6.22. Frage

Trennen Sie die Zeichenkette C:\Users\mni\oop\ mit der Methode split in die einzelnen Pfadbestandteile auf. Welches Problem ergibt sich dabei?

@@ -2944,7 +3008,7 @@

6.22. Frage

-

6.23. Frage

+

6.23. Frage

Geben Sie ein String-Format an, das die Zahl 12.345678f nur mit exakt zwei Nachkommastellen angibt. (edited)

@@ -2954,7 +3018,7 @@

6.23. Frage

-

6.24. Frage

+

6.24. Frage

Gegeben sei float[] floats = { 1.234f, 12.56f, 123f }. Gehen Sie in einer Schleife durch das Array und geben Sie die Zahlen untereinander aus. Die Kommas sollen positionsgleich untereinander stehen, eine Nachkommastelle ist relevant. (edited)

@@ -2968,7 +3032,7 @@

6.24. Frage

-

6.25. Frage

+

6.25. Frage

Welcher Hex-Darstellung entspricht 2017?

@@ -2980,7 +3044,7 @@

6.25. Frage

-

6.26. Frage

+

6.26. Frage

In einer String-Variable namens geheim steht ein Dateiname. Finden sie die Dateiendung heraus (der Teil nach dem letzten Punkt im Namen).

@@ -2999,7 +3063,7 @@

6.26. Frage

-

6.27. Frage

+

6.27. Frage

Sie treffen auf Aliens, die Ihnen auf eine Tafel die Zahl "110" schreiben. Sie stellen fest, dass die Aliens an ihren beiden Händen insgesamt 6 Finger haben. Wie lautet die Zahl also im 6er-System?

@@ -3014,9 +3078,9 @@

6.27. Frage

-

6.28. Frage

+

6.28. Frage

-

Long.parseLong("55",5) — Autsch! Warum?

+

Long.parseLong("55",5) — Autsch! Warum?

Antwort
@@ -3024,9 +3088,9 @@

6.28. Frage

-

6.29. Frage

+

6.29. Frage

-

Long.parseLong("55L") — Autsch! Schade! Warum schade?

+

Long.parseLong("55L") — Autsch! Schade! Warum schade?

Antwort
@@ -3034,7 +3098,7 @@

6.29. Frage

-

6.30. Frage

+

6.30. Frage

In welchen Fällen ist der Einsatz der Klasse StringBuilder sinnvoll?

@@ -3044,7 +3108,7 @@

6.30. Frage

-

6.31. Frage

+

6.31. Frage

Sie wollen sicherstellen, dass Java bei der Übersetzung Ihres Java-Programms die Java-Datei in der Kodierung UTF-8 einliest. Wie machen Sie das?

@@ -3056,7 +3120,7 @@

6.31. Frage

-

6.32. Frage

+

6.32. Frage

StringBuilder s1 = new StringBuilder("Hallo "); StringBuilder s2 = new StringBuilder("Welt"); Wären s1 und s2 Strings, so könnten Sie beide mit s1+s2 konkatenieren. Wie lösen Sie das Problem vergleichbar hier?

@@ -3068,7 +3132,7 @@

6.32. Frage

-

6.33. Frage

+

6.33. Frage

Das Programm auf Seite 147/148 zählt Groß- und Kleinbuchstaben in einem String. Wäre statt der if-Anweisungen nicht ein switch passender und würde den Code lesbarer machen?

@@ -3078,7 +3142,7 @@

6.33. Frage

-

6.34. Frage

+

6.34. Frage

Zeichensatzprobleme gibt es nicht nur in Quellcodedateien, sondern auch immer dann wenn Zeichenketten von außerhalb in das Programm kommen oder ausgegeben werden (z.B. über das Netzwerk oder aus einer Datei). Um zwischen verschiedenen Kodierungen wechseln zu können bietet die Klasse String den Konstruktor String(byte[], Charset) und die Methode getBytes(Charset).Wandeln Sie das Zeichen ä (unicode \u00e4) erst in US_ASCII um und lesen das resultierende Byte-Array wieder so ein als wäre es UTF_8-kodiert.

@@ -3094,7 +3158,8 @@

6.34. Frage

-

7. Datum und Uhrzeit

+

7. Datum und Uhrzeit +

@@ -3103,17 +3168,17 @@

7. 8. Methoden

-

8.1. Frage

+

8.1. Frage

Haben Klassen Methoden? Oder haben Objekte Methoden?

Antwort
-

 — TODO — 

+

 — TODO — 

-

8.2. Frage

+

8.2. Frage

In Java gibt es Klassen, die nur statische Methoden haben. Macht das Sinn? Nennen Sie ein Beispiel.

@@ -3123,7 +3188,7 @@

8.2. Frage

-

8.3. Frage

+

8.3. Frage

Wie sieht der syntaktische Aufbau des Kopfes einer Methode aus? Beginnen Sie beim Rückgabetyp.

@@ -3135,7 +3200,7 @@

8.3. Frage

-

8.4. Frage

+

8.4. Frage

Jemand schreibt die Methode void Sort(String[] passwords) und bekommt sofort Schelte von seinen Kolleg(inn)en. Warum?

@@ -3145,9 +3210,9 @@

8.4. Frage

-

8.5. Frage

+

8.5. Frage

-

Wenn Arrays.sort() ein bestehendes Array verändern kann, könnte man dann auch eine Methode void increment(int i) {…​} schreiben, die eine bestehende Integer-Variable verändert?

+

Wenn Arrays.sort() ein bestehendes Array verändern kann, könnte man dann auch eine Methode void increment(int i) {…​} schreiben, die eine bestehende Integer-Variable verändert?

Antwort
@@ -3155,7 +3220,7 @@

8.5. Frage

-

8.6. Frage

+

8.6. Frage

In jedem Java-Programm muss es genau eine main-Methode geben. Wie muss der Kopf der main-Methode aussehen?

@@ -3165,7 +3230,7 @@

8.6. Frage

-

8.7. Frage

+

8.7. Frage

static Car getCar() { return this.car; } Autsch! Warum?

@@ -3175,7 +3240,7 @@

8.7. Frage

-

8.8. Frage

+

8.8. Frage

In welchem Fall muss eine Methode in ihrem Rumpf eine return-Anweisung enthalten?

@@ -3185,7 +3250,7 @@

8.8. Frage

-

8.9. Frage

+

8.9. Frage

Die Methode String.valueOf muss mit sehr vielen verschiedenen Datentypen als Parameter umgehen. Wie kann es sein, dass man an die Methode sowohl einen double als auch einen char übergeben kann und trotzdem immer das richtige Ergebnis bekommt?

@@ -3195,7 +3260,7 @@

8.9. Frage

-

8.10. Frage

+

8.10. Frage

float numberOne() { return 1.0; } Autsch oder nicht Autsch, das ist hier die Frage!

@@ -3205,7 +3270,7 @@

8.10. Frage

-

8.11. Frage

+

8.11. Frage

Könnte man den Parameter args der Main-Methode auch als eine variable Anzahl von Strings definieren? Probieren Sie es aus!

@@ -3215,27 +3280,27 @@

8.11. Frage

-

8.12. Frage

+

8.12. Frage

-

Eine Methode sei mit einem Argument deklariert (keine Überladung), sie wird jedoch mit drei Argumenten aufgerufen — und Java akzeptiert das klaglos. Wie muss die Methode deklariert worden sein?

+

Eine Methode sei mit einem Argument deklariert (keine Überladung), sie wird jedoch mit drei Argumenten aufgerufen — und Java akzeptiert das klaglos. Wie muss die Methode deklariert worden sein?

Antwort
-

Wieder ein …​ (Varargs).

+

Wieder ein …​ (Varargs).

-

8.13. Frage

+

8.13. Frage

Was ist der sogenannte CallStack?

Antwort
-

 — TODO — 

+

 — TODO — 

-

8.14. Frage

+

8.14. Frage

Ist die folgende Definition von überladenen Methoden zulässig?

@@ -3251,7 +3316,7 @@

8.14. Frage

-

8.15. Frage

+

8.15. Frage

Auf welche Weisen kann man eine Methode "überladen"?

@@ -3264,9 +3329,9 @@

8.15. Frage

-

8.16. Frage

+

8.16. Frage

-

void doStuff(int …​ x, String y) { …​ } - Geht das?

+

void doStuff(int …​ x, String y) { …​ } - Geht das?

Antwort
@@ -3274,13 +3339,13 @@

8.16. Frage

-

8.17. Frage

+

8.17. Frage

Was ist der Grund, wenn der CallStack überläuft?

-

8.18. Frage

+

8.18. Frage

Antwort

Definieren Sie eine Methode floatEquals, die zwei float-Werte a und b und einen optionalen dritten float Wert tolerance übernimmt und einen boolean zurückgibt.

@@ -3297,16 +3362,16 @@

8.18. Frage

-

8.19. Frage

+

8.19. Frage

Welche Informationen werden auf dem CallStack gespeichert?

-

8.20. Frage

+

8.20. Frage

Antwort
-

Wenn man einen Parameter mit final ausweist verhindert das …​ was?

+

Wenn man einen Parameter mit final ausweist verhindert das …​ was?

Antwort
@@ -3314,7 +3379,7 @@

8.20. Frage

-

8.21. Frage

+

8.21. Frage

void foo() {
@@ -3332,7 +3397,7 @@ 

8.21. Frage

-

8.22. Frage

+

8.22. Frage

void bar() {
@@ -3350,7 +3415,7 @@ 

8.22. Frage

-

8.23. Frage

+

8.23. Frage

return(0) statt return 0 ist in Java zulässig. Geht auch return() statt return für void-Methoden?

@@ -3360,7 +3425,7 @@

8.23. Frage

-

8.24. Frage

+

8.24. Frage

Läuft der Code?

@@ -3377,7 +3442,7 @@

8.24. Frage

-

8.25. Frage

+

8.25. Frage

Und dieser hier?

@@ -3394,7 +3459,7 @@

8.25. Frage

-

8.26. Frage

+

8.26. Frage

Was passiert bei der Ausführung dieser Methode?

@@ -3413,7 +3478,7 @@

8.26. Frage

Antwort
-

Das finally wird immer ausgeführt, egal ob die Exception geworfen wurde oder nicht — sogar noch "nach" dem return. +

Das finally wird immer ausgeführt, egal ob die Exception geworfen wurde oder nicht — sogar noch "nach" dem return. .finally schlägt return

@@ -3425,7 +3490,7 @@

8.26. Frage

-

8.27. Frage

+

8.27. Frage

int rek(int n) {
@@ -3443,17 +3508,17 @@ 

8.27. Frage

-

8.28. Frage

+

8.28. Frage

Bei der Rekursion unterscheidet man stets den Abbruch- und den Wiederholungsfall. Erklären Sie das am Beispiel der rekursiven Implementierung der Fakultätsfunktion.

Antwort
-

 — TODO — 

+

 — TODO — 

-

8.29. Frage

+

8.29. Frage

int fib(int n) { return n < 2 ? n : fib(n-1) + fib(n-2); }
@@ -3474,7 +3539,7 @@

8.29. Frage

-

8.30. Frage

+

8.30. Frage

boolean isOdd(int n) {
@@ -3491,7 +3556,7 @@ 

8.30. Frage

-

8.31. Frage

+

8.31. Frage

Es gibt einen Klassiker zur sogenannten wechselseitigen Rekursion: Methode boolean isOdd(int n) ruft boolean isEven(int n) auf und umgekehrt. Dabei reduziert jede Methode den Zahlenwert um 1, bevor der Gegenpartner aufgerufen wird. Was ist der jeweilige Abbruchfall? Implementieren Sie diese Rekursion.

@@ -3511,7 +3576,7 @@

8.31. Frage

-

8.32. Frage

+

8.32. Frage

int foo(int n) {
@@ -3534,147 +3599,147 @@ 

8.32. Frage

9. Exceptions

-

9.1. Frage

+

9.1. Frage

-

Wenn eine Exception geworfen wird, dann sieht sich Java zur Laufzeit außerstande …​?

+

Wenn eine Exception geworfen wird, dann sieht sich Java zur Laufzeit außerstande …​?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.2. Frage

+

9.2. Frage

Kann javac, der Java-Compiler, eine Exception zu Ihrem Code werfen?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.3. Frage

+

9.3. Frage

Die Informationen, die zu einer Exception geführt haben, werden wie kommuniziert?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.4. Frage

+

9.4. Frage

Wie heißt die oberste Klasse in der Exception-Hierarchie?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.5. Frage

+

9.5. Frage

Was ist ein Stack Trace?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.6. Frage

+

9.6. Frage

Wenn eine Exception vom Typ Error geworfen wird, dann hat das was für Konsequenzen?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.7. Frage

+

9.7. Frage

Was unterscheidet Exceptions, die von RuntimeException erben von anderen Subklassen von Exception?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.8. Frage

+

9.8. Frage

Warum ist der Name RunTimeException für eine der Exception-Klassen ein wenig unsinnig? (edited)

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.9. Frage

+

9.9. Frage

In welchem Fall muss im Kopf einer Methode throws samt Angabe der möglichen Ausnahme(n) stehen?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.10. Frage

+

9.10. Frage

Wenn catch-Blöcke identischen Code haben, bietet sich eine Verkürzungsform an. Beschreiben Sie den syntaktischen Aufbau des "verkürzten" catch-Kopfes.

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.11. Frage

+

9.11. Frage

Die StackTrace eines StackOverflowError ist sehr lang. Warum?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.12. Frage

+

9.12. Frage

try { /* some code */ } and there is something wrong.

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.13. Frage

+

9.13. Frage

Was ist der Vorteil eines try-with-resources gegenüber einem normalen finally-Block?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.14. Frage

+

9.14. Frage

Anschlussfrage: Was ist eine resource?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.15. Frage

+

9.15. Frage

Ein Student schreibt folgende main-Methode und wird sofort dafür gescholten. Warum?

@@ -3687,21 +3752,21 @@

9.15. Frage

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.16. Frage

+

9.16. Frage

Was macht die assert-Anweisung?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.17. Frage

+

9.17. Frage

try {
@@ -3718,27 +3783,27 @@ 

9.17. Frage

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.18. Frage

+

9.18. Frage

Sie haben in Ihrem Code assert-Anweisungen, die eigentlich eine Exception auslösen müssten (Beispiel: assert false;). Die Exceptions bleiben aus. Was ist los?

Antwort
-

 — TODO — 

+

 — TODO — 

-

9.19. Frage

+

9.19. Frage

Kann man selbst Exceptions definieren?

Antwort
-

 — TODO — 

+

 — TODO — 

@@ -3761,13 +3826,13 @@

10. Klassen

-

10.1. Frage

+

10.1. Frage

Herr Kofler nennt welche Vorteile, die Objektorientierung bietet?

-

10.2. Frage

+

10.2. Frage

Antwort

Wann ist eine Klasse keine top level-Klasse?

@@ -3778,7 +3843,7 @@

10.2. Frage

-

10.3. Frage

+

10.3. Frage

void foo() {
@@ -3799,7 +3864,7 @@ 

10.3. Frage

-

10.4. Frage

+

10.4. Frage

Wie sieht schematisch die Syntax zur Klasse aus? [ohne Annotationen und Generics]

@@ -3811,7 +3876,7 @@

10.4. Frage

-

10.5. Frage

+

10.5. Frage

In einer .java-Datei können mehrere Klassen deklariert werden. Allerdings gilt eine Einschränkung, was den Namen der Datei angeht. Welche?

@@ -3821,7 +3886,7 @@

10.5. Frage

-

10.6. Frage

+

10.6. Frage

Schreibe class test und schon ist der Kopf ab, bevor auch nur ein { folgt. Warum? [Gemeint ist Ihr Kopf, nicht der der Klassendeklaration :upside_down_face:!)

@@ -3831,7 +3896,7 @@

10.6. Frage

-

10.7. Frage

+

10.7. Frage

Eine top level-Klasse darf welche Sichtbarkeiten nicht haben?

@@ -3841,7 +3906,7 @@

10.7. Frage

-

10.8. Frage

+

10.8. Frage

Gibt es in Java das Laufzeitkonstrukt der Klasse?

@@ -3851,7 +3916,7 @@

10.8. Frage

-

10.9. Frage

+

10.9. Frage

Gibt es in Java das Laufzeitkonstrukt des Objekts?

@@ -3861,7 +3926,7 @@

10.9. Frage

-

10.10. Frage

+

10.10. Frage

class Thing {
@@ -3876,7 +3941,7 @@ 

10.10. Frage

-

10.11. Frage

+

10.11. Frage

Auf welcher Ebene ist die Klasse class A {} sichtbar?

@@ -3886,7 +3951,7 @@

10.11. Frage

-

10.12. Frage

+

10.12. Frage

Was ist eine Klassenvariable? Doch dasselbe wie ein statisches Feld, oder?

@@ -3896,7 +3961,7 @@

10.12. Frage

-

10.13. Frage

+

10.13. Frage

Klären Sie die Begriffe "Feld" und "Variable".

@@ -3906,7 +3971,7 @@

10.13. Frage

-

10.14. Frage

+

10.14. Frage

class Thing {
@@ -3923,7 +3988,7 @@ 

10.14. Frage

-

10.15. Frage

+

10.15. Frage

Im Rumpf einer Klasse können welche Sprachkonstrukte deklariert werden?

@@ -3933,7 +3998,7 @@

10.15. Frage

-

10.16. Frage

+

10.16. Frage

class Point {
@@ -3954,7 +4019,7 @@ 

10.16. Frage

-

10.17. Frage

+

10.17. Frage

Was ist mit dem Begriff "paketsicher" gemeint?

@@ -3964,7 +4029,7 @@

10.17. Frage

-

10.18. Frage

+

10.18. Frage

Mit welchem Modifizierer kann man die Voraussetzung für einen immutablen (unveränderlichen) Datentyp schaffen? Reicht die Verwendung dieses Modifizierers allein schon aus, um die Immutabilität zu garantieren?

@@ -3974,7 +4039,7 @@

10.18. Frage

-

10.19. Frage

+

10.19. Frage

Nennen Sie die einzelnen Schritte, die bei einem Aufruf von new ausgeführt werden.

@@ -4000,7 +4065,7 @@

10.19. Frage

-

10.20. Frage

+

10.20. Frage

Wie sieht das Schema zum Zugriff auf eine statische Variable bzw. zum Aufruf einer statischen Methode aus?

@@ -4010,7 +4075,7 @@

10.20. Frage

-

10.21. Frage

+

10.21. Frage

Recherchieren Sie: In der OOP-Veranstaltung hatten wir ein Beispiel, in dem wir eine statische Klassenvariable genutzt haben. Worum ging es bei dem Beispiel? Welchen Zweck hatte die statische Klassenvariable?

@@ -4020,7 +4085,7 @@

10.21. Frage

-

10.22. Frage

+

10.22. Frage

class Point {
@@ -4039,7 +4104,7 @@ 

10.22. Frage

-

10.23. Frage

+

10.23. Frage

Deklarieren Sie eine Klasse, von der keine Objekte erzeugt werden können.

@@ -4049,7 +4114,7 @@

10.23. Frage

-

10.24. Frage

+

10.24. Frage

Ein Konstruktor ist mit einer Methodendeklaration sehr vergleichbar. Nur: Der Konstruktor hat zwar einen Namen, ihm scheint jedoch der Rückgabetyp zu fehlen. Warum?

@@ -4059,7 +4124,7 @@

10.24. Frage

-

10.25. Frage

+

10.25. Frage

Was sind die Defaultwerte für Felder (Klassenvariablen)? Was sind die Defaultwerte für lokale Variablen?

@@ -4069,7 +4134,7 @@

10.25. Frage

-

10.26. Frage

+

10.26. Frage

Warum kann man finalize nicht für Aufräumarbeiten verwenden?

@@ -4079,7 +4144,7 @@

10.26. Frage

-

10.27. Frage

+

10.27. Frage

Wie ruft man im Konstruktor einen anderen Konstruktor der gleichen Klasse auf? Warum sollte man das überhaupt tun wollen?

@@ -4089,7 +4154,7 @@

10.27. Frage

-

10.28. Frage

+

10.28. Frage

class A {
@@ -4114,7 +4179,7 @@ 

10.28. Frage

-

10.29. Frage

+

10.29. Frage

Im Vorgriff auch das nächste Kapitel: Wie ruft man im Konstruktor den Konstruktor der Oberklasse auf?

@@ -4124,7 +4189,7 @@

10.29. Frage

-

10.30. Frage

+

10.30. Frage

Was ist die Besonderheit des Interfaces AutoCloseable? Welche Methoden deklariert es?

@@ -4134,7 +4199,7 @@

10.30. Frage

-

10.31. Frage

+

10.31. Frage

Ist this eine Variable?

@@ -4144,7 +4209,7 @@

10.31. Frage

-

10.32. Frage

+

10.32. Frage

Ist es nicht das gleiche, ob eine Klasse jetzt ein public int x definiert oder ein private int x mit den Methoden int getX() und void setX(int x)? Wo liegt der Unterschied?

@@ -4154,7 +4219,7 @@

10.32. Frage

-

10.33. Frage

+

10.33. Frage

Wozu benötigt man this?

@@ -4164,7 +4229,7 @@

10.33. Frage

-

10.34. Frage

+

10.34. Frage

Wenn man sich in den Namensgebungen für Parameter und lokale Variablen diszipliniert, benötigt man dann überhaupt noch this?

@@ -4174,7 +4239,7 @@

10.34. Frage

-

10.35. Frage

+

10.35. Frage

Wenn an den Konstruktor "falsche" Werte übergeben werden, empfiehlt es sich mit einer Exception darauf zu reagieren. Welche Exception sollte man wählen, sofern man nicht spezifischer sein kann/möchte?

@@ -4184,7 +4249,7 @@

10.35. Frage

-

10.36. Frage

+

10.36. Frage

Wenn es einen Konstruktor gibt, muss es auch einen Destruktor geben, nicht wahr?! Hat Java einen Destruktor? Begründen Sie Ihre Antwort!

@@ -4194,7 +4259,7 @@

10.36. Frage

-

10.37. Frage

+

10.37. Frage

Eine Klasse, die eine close-Methode anbietet sollte die Schnittstelle AutoCloseable implementieren. Warum?

@@ -4204,7 +4269,7 @@

10.37. Frage

-

10.38. Frage

+

10.38. Frage

Was ist mit "Settern" und "Gettern" gemeint?

@@ -4214,7 +4279,7 @@

10.38. Frage

-

10.39. Frage

+

10.39. Frage

Was ist damit gemeint, wenn man von einer "Datenklasse" spricht?

@@ -4224,7 +4289,7 @@

10.39. Frage

-

10.40. Frage

+

10.40. Frage

Wenn Sie Setter- und Getter-Methoden implementieren, dann sollten die Felder wie deklariert sein?

@@ -4234,7 +4299,7 @@

10.40. Frage

-

10.41. Frage

+

10.41. Frage

Oft sieht man Setter wie public setName(Typ value) { name = value; }. Was könnte man daran kritisieren?

@@ -4244,7 +4309,7 @@

10.41. Frage

-

10.42. Frage

+

10.42. Frage

Aufgrund welchen Prinzips der Softwaretechnik werden Setter und Getter begründet?

@@ -4254,7 +4319,7 @@

10.42. Frage

-

10.43. Frage

+

10.43. Frage

Welcher softwaretechnische Nutzen steckt vor allem in den Setter-Methoden?

@@ -4264,7 +4329,7 @@

10.43. Frage

-

10.44. Frage

+

10.44. Frage

Warum ist der Begriff "Unterklasse" für eine innere Klasse problematisch?

@@ -4274,7 +4339,7 @@

10.44. Frage

-

10.45. Frage

+

10.45. Frage

class A {
@@ -4330,17 +4395,17 @@ 

10.45. Frage

-

10.46. Frage

+

10.46. Frage

this.name oder name.this, das ist hier die Frage!

Antwort
-

Beides ist gültig, je nach Kontext. Im zweiten Fall ist name jedoch ein Klassenname und sollte eigentlich — unserer Konvention der Großschreibung für Klassennamen folgend — als Name.this geschrieben werden.

+

Beides ist gültig, je nach Kontext. Im zweiten Fall ist name jedoch ein Klassenname und sollte eigentlich — unserer Konvention der Großschreibung für Klassennamen folgend — als Name.this geschrieben werden.

-

10.47. Frage

+

10.47. Frage

AutoCloseable a = new AutoCloseable() {
@@ -4357,7 +4422,7 @@ 

10.47. Frage

-

10.48. Frage

+

10.48. Frage

Kann eine anonyme Klasse einen Konstruktor haben? Warum, oder warum nicht?

@@ -4367,7 +4432,7 @@

10.48. Frage

-

10.49. Frage

+

10.49. Frage

class A {
@@ -4387,7 +4452,7 @@ 

10.49. Frage

-

10.50. Frage

+

10.50. Frage

Erzeugen Sie eine anonyme Unterklasse von java.awt.Point, die die Methode toString so überschreibt, dass die String-Repräsentation jetzt einfach der mathematischen Schreibweise (x, y) entspricht. Wie können Sie beim Erzeugen des Objektes dieser Klasse die Koordinaten x und y übergeben?

@@ -4422,7 +4487,7 @@

10.50. Frage

-

10.51. Frage

+

10.51. Frage

Object obj = new Object() {
@@ -4439,7 +4504,7 @@ 

10.51. Frage

-

10.52. Frage

+

10.52. Frage

Eine Instanz einer anonyme Klasse kann nur auf bestimmte Variablen des Kontextes zugreifen, in dem sie erzeugt wurde. Welche Variablen sind das?

@@ -4449,7 +4514,7 @@

10.52. Frage

-

10.53. Frage

+

10.53. Frage

Definieren Sie, was effectively final heißt?

@@ -4459,17 +4524,17 @@

10.53. Frage

-

10.54. Frage

+

10.54. Frage

-

AutoCloseable a = () → System.out.println("auto"); Wie nennt man so etwas?

+

AutoCloseable a = () → System.out.println("auto"); Wie nennt man so etwas?

Antwort
-

Das ist ein Lambda-Ausdruck, erkennbar am Pfeil .

+

Das ist ein Lambda-Ausdruck, erkennbar am Pfeil .

-

10.55. Frage

+

10.55. Frage

String message = "foo";
@@ -4488,7 +4553,7 @@ 

10.55. Frage

-

10.56. Frage

+

10.56. Frage

class A {
@@ -4508,7 +4573,7 @@ 

10.56. Frage

-

10.57. Frage

+

10.57. Frage

Warum sind laut Herrn Kofler statische innere Klassen gar keine "inneren Klassen" im eigentlichen Sinne?

@@ -4518,7 +4583,7 @@

10.57. Frage

-

10.58. Frage

+

10.58. Frage

Kann man eine Klasse mit dem qualifizierten Namen A.B.C definieren? Wenn ja, wie? (Die Punkte sind Teil des Namens.)

@@ -4561,7 +4626,7 @@

11. Vererbung und Schnittstellen

-

11.1. Frage

+

11.1. Frage

Wenn Sie class A extends B sehen, wissen Sie, dass B was an A vererbt?

@@ -4571,7 +4636,7 @@

11.1. Frage

-

11.2. Frage

+

11.2. Frage

Wenn das hier geht Object getSelf() { return this; }, geht dann auch das Object getSelf() { return super; }?

@@ -4581,7 +4646,7 @@

11.2. Frage

-

11.3. Frage

+

11.3. Frage

Ordnen Sie (siehe letztes Beispiel) die Begriffe A oder B zu:

@@ -4616,7 +4681,7 @@

11.3. Frage

-

11.4. Frage

+

11.4. Frage

Wann ist die Implementierung eines eigenen Konstruktors in einer abgeleiteten Klasse nicht optional?

@@ -4643,7 +4708,7 @@

11.4. Frage

-

11.5. Frage

+

11.5. Frage

Wenn man eine Methode überschreibt, dann ist die Verwendung einer Annotation üblich. Welcher?

@@ -4653,7 +4718,7 @@

11.5. Frage

-

11.6. Frage

+

11.6. Frage

Eine Method überladen und sie überschreiben ist nicht dasselbe. Erkläre den Unterschied!

@@ -4666,7 +4731,7 @@

11.6. Frage

-

11.7. Frage

+

11.7. Frage

class A { int method(int i) { return i+1; } }
@@ -4682,7 +4747,7 @@ 

11.7. Frage

-

11.8. Frage

+

11.8. Frage

Mit welchem Schlüsselwort kann auf Members (Felder und Methoden) der Oberklasse zugegriffen werden?

@@ -4692,7 +4757,7 @@

11.8. Frage

-

11.9. Frage

+

11.9. Frage

Wie Sie wissen, ist jede Klasse abgeleitet von Object. Wenn Sie Code wie class A { } sehen, welche Ergänzungen daran nimmt der Compiler vermutlich vor?

@@ -4702,19 +4767,19 @@

11.9. Frage

-

11.10. Frage

+

11.10. Frage

Kann eine abstrakte Klasse einen Konstruktor haben?

Antwort
-

Ja, sie können nur nicht mit new aufgerufen werden. In einer Subklasse können Sie aber mit super(…​) verwendet werden.

+

Ja, sie können nur nicht mit new aufgerufen werden. In einer Subklasse können Sie aber mit super(…​) verwendet werden.

-

11.11. Frage

+

11.11. Frage

-

Wenn ich etwas super(…​) machen will, wohin damit?

+

Wenn ich etwas super(…​) machen will, wohin damit?

Antwort
@@ -4722,7 +4787,7 @@

11.11. Frage

-

11.12. Frage

+

11.12. Frage

Ich möchte gerne den Konstruktor der Ober-Oberklasse aufrufen. Wie geht das?

@@ -4732,7 +4797,7 @@

11.12. Frage

-

11.13. Frage

+

11.13. Frage

Hans deklariert eine Klasse als final, Hannah als abstract. Was hat Hans mit der Klasse vor, was Hannah?

@@ -4742,7 +4807,7 @@

11.13. Frage

-

11.14. Frage

+

11.14. Frage

Hannah deklariert eine Methode als final, Hans als abstract. Woran muss Hans denken, was Hannah egal sein kann? Und was kann Hans sein lassen, was Hannah wiederum tun muss?

@@ -4752,7 +4817,7 @@

11.14. Frage

-

11.15. Frage

+

11.15. Frage

class A { int x; }
@@ -4771,7 +4836,7 @@ 

11.15. Frage

-

11.16. Frage

+

11.16. Frage

class A {
@@ -4795,7 +4860,7 @@ 

11.16. Frage

-

11.17. Frage

+

11.17. Frage

for (Object o : objects) {
@@ -4813,7 +4878,7 @@ 

11.17. Frage

-

11.18. Frage

+

11.18. Frage

Object o = "abc";
@@ -4829,9 +4894,9 @@ 

11.18. Frage

-

11.19. Frage

+

11.19. Frage

-

Ein …​cast passiert implizit, wenn ein Objekt einer Variable von einem Supertyp zugewiesen wird. Ein …​cast muss dagegen explizit angegeben werden.

+

Ein …​cast passiert implizit, wenn ein Objekt einer Variable von einem Supertyp zugewiesen wird. Ein …​cast muss dagegen explizit angegeben werden.

Antwort
@@ -4846,7 +4911,7 @@

11.19. Frage

-

11.20. Frage

+

11.20. Frage

Was bedeutet das Wort "Polymorphie" von seiner sprachlichen Herkunft?

@@ -4856,7 +4921,7 @@

11.20. Frage

-

11.21. Frage

+

11.21. Frage

Was gibt die Methode toString standardmäßig zurück?

@@ -4866,7 +4931,7 @@

11.21. Frage

-

11.22. Frage

+

11.22. Frage

Eine Klasse, die als class A {} deklariert wird, wird vom Compiler als class A extends Object {} aufgefasst. Wie ist das bei class A extends B {}? Ist eine Deklaration der Form class A extends B, Object {} oder class A extends B extends Object {} überhaupt erlaubt?

@@ -4876,7 +4941,7 @@

11.22. Frage

-

11.23. Frage

+

11.23. Frage

Die Aussage ist nicht ganz korrekt: "`getClass` gibt die Klasse einer Instanz zurück." Berichtigen Sie den Satz.

@@ -4886,7 +4951,7 @@

11.23. Frage

-

11.24. Frage

+

11.24. Frage

class Foo {
@@ -4916,20 +4981,20 @@ 

11.24. Frage

-

11.25. Frage

+

11.25. Frage

Wie sieht schematisch die Syntax einer Schnittstellen-Deklaration aus? [vereinfachte Variante, so wie Schnittstellen meist verwendet werden]

Antwort
-

interface Name { typ name(parameter); …​ }

+

interface Name { typ name(parameter); …​ }

Die Benennung des Interfaces endet oft auf -able, um anzuzeigen, dass mit dem Interface irgendeine Fähigkeit bezeichnet wird.

-

11.26. Frage

+

11.26. Frage

Welche Methodenkörper wären für die Methode hashCode der Klasse java.awt.Point zulässig und sinnvoll?

@@ -4998,7 +5063,7 @@

11.26. Frage

-

11.27. Frage

+

11.27. Frage

Was ist richtig?

@@ -5022,7 +5087,7 @@

11.27. Frage

-

11.28. Frage

+

11.28. Frage

Man kann mit Überladung keine zwei Methoden mit gleicher Signatur erstellen. Schließen Sie daraus, was der Begriff Signatur bedeutet.

@@ -5032,7 +5097,7 @@

11.28. Frage

-

11.29. Frage

+

11.29. Frage

Eine Schnittstellendeklaration mit genau einer abstrakten Methode heißen?

@@ -5042,7 +5107,7 @@

11.29. Frage

-

11.30. Frage

+

11.30. Frage

Wie können wir Java überprüfen lassen, ob eine Schnittstelle ein funktionales Interface ist?

@@ -5052,7 +5117,7 @@

11.30. Frage

-

11.31. Frage

+

11.31. Frage

Wie sieht schematisch die Syntax einer Methode in einer Schnittstelle aus, die mit einer Implementierung versehen ist?

@@ -5062,7 +5127,7 @@

11.31. Frage

-

11.32. Frage

+

11.32. Frage

Mit der Nutzung von implements im Kopf einer Klassendeklaration verpflichtet sich der Rumpf, was zu tun?

@@ -5075,7 +5140,7 @@

11.32. Frage

-

11.33. Frage

+

11.33. Frage

Welchen Nutzen haben Schnittstellen außer von einer Klasse eine Implementierungsverpflichtung einzufordern?

@@ -5085,7 +5150,7 @@

11.33. Frage

-

11.34. Frage

+

11.34. Frage

Karl sagt: "Wozu Schnittstellen, ich kann auch alles mit abstrakten Klassen machen, was Schnittstellen können." Was antwortet ihm Carla darauf?

@@ -5095,7 +5160,7 @@

11.34. Frage

-

11.35. Frage

+

11.35. Frage

Carla sagt: "Seitdem es default-Implementierungen bei Schnittstellen gibt, sind abstrakte Klassen überflüssig geworden." Was antwortet Karl darauf?

@@ -5105,7 +5170,7 @@

11.35. Frage

-

11.36. Frage

+

11.36. Frage

interface I { void foo(); }
@@ -5121,7 +5186,7 @@ 

11.36. Frage

-

11.37. Frage

+

11.37. Frage

abstract class A { void foo(); }
@@ -5136,7 +5201,7 @@

11.37. Frage

-

11.38. Frage

+

11.38. Frage

interface I { abstract void foo(); } Geht das? Macht das Sinn?

@@ -5146,7 +5211,7 @@

11.38. Frage

-

11.39. Frage

+

11.39. Frage

Die Frage ist angeregt durch den Code auf S.277 aus Kapitel 12.

@@ -5164,7 +5229,7 @@

11.39. Frage

-

11.40. Frage

+

11.40. Frage

Die Frage ist angeregt durch den Code auf S.277 aus Kapitel 12.

@@ -5200,7 +5265,7 @@

12. Generische Klassen und Methoden

-

12.1. Frage

+

12.1. Frage

Eine Klasse Container soll im Konstruktor einen beliebigen Typ als Inhalt (content) aufnehmen können. Schreiben Sie den Code ohne Object zu verwenden.

@@ -5223,7 +5288,7 @@

12.1. Frage

-

12.2. Frage

+

12.2. Frage

Aus unerfindlichen Gründen bietet die Java-API keine Tupel-Klasse an. Wie würde so eine Klasse aussehen, die zwei Variablen von beliebigem Typ enthalten kann?

@@ -5242,7 +5307,7 @@

12.2. Frage

-

12.3. Frage

+

12.3. Frage

Legen Sie eine neue ArrayList an, die ausschließlich aus Ganzzahlen besteht.

@@ -5254,17 +5319,17 @@

12.3. Frage

-

12.4. Frage

+

12.4. Frage

Was ist ein Typparameter?

Antwort
-

 — TODO — 

+

 — TODO — 

-

12.5. Frage

+

12.5. Frage

Deklarieren und initialisieren Sie eine Variable a, die ausschließlich eine ArrayListe von boolschen Werten aufnehmen kann. Die Lösung muss so kurz wie möglich sein.

@@ -5287,7 +5352,7 @@

12.5. Frage

-

12.6. Frage

+

12.6. Frage

Wie lautet die Syntax für eine generische Methode?

@@ -5299,9 +5364,9 @@

12.6. Frage

-

12.7. Frage

+

12.7. Frage

-

Inwiefern hebelt die Definition <T> T giveMeWhatIWant() { …​ } das Typsystem von Java aus?

+

Inwiefern hebelt die Definition <T> T giveMeWhatIWant() { …​ } das Typsystem von Java aus?

Antwort
@@ -5309,7 +5374,7 @@

12.7. Frage

-

12.8. Frage

+

12.8. Frage

Wie sieht schematisch die Syntax einer generischen Klasse aus? Reduzieren Sie die Syntax auf das Notwendigste.

@@ -5321,7 +5386,7 @@

12.8. Frage

-

12.9. Frage

+

12.9. Frage

class A<T> { void foo(T x) {} }
@@ -5337,7 +5402,7 @@ 

12.9. Frage

-

12.10. Frage

+

12.10. Frage

class Foo<T> {
@@ -5358,7 +5423,7 @@ 

12.10. Frage

-

12.11. Frage

+

12.11. Frage

class Bar<Blubber> { Blubber x; } Problem?

@@ -5368,7 +5433,7 @@

12.11. Frage

-

12.12. Frage

+

12.12. Frage

Man kann eine Klasse als MyClass<T extends Number> deklarieren, ist auch MyClass<T implements AutoCloseable> erlaubt?

@@ -5378,9 +5443,9 @@

12.12. Frage

-

12.13. Frage

+

12.13. Frage

-

class ICanHazGenerics<E extends Comparable> {} Und schon gibt’s was auf die Finger. Was ist der Grund?

+

class ICanHazGenerics<E extends Comparable> {} Und schon gibt’s was auf die Finger. Was ist der Grund?

Antwort
@@ -5388,7 +5453,7 @@

12.13. Frage

-

12.14. Frage

+

12.14. Frage

class A<T extends B> {} Kann man A<B> value = new A<B>(); schreiben? Gilt also B extends B?

@@ -5398,7 +5463,7 @@

12.14. Frage

-

12.15. Frage

+

12.15. Frage

List<? extends Number> lst = new ArrayList<>();
@@ -5416,7 +5481,8 @@ 

12.15. Frage

-

13. Lambda-Ausdrücke

+

13. Lambda-Ausdrücke +

@@ -5439,7 +5505,7 @@

14. Collections

-

14.1. Frage

+

14.1. Frage

Welche besondere Bedeutung hat das Interface Iterable in Java?

@@ -5449,7 +5515,7 @@

14.1. Frage

-

14.2. Frage

+

14.2. Frage

Sie wollen ArrayList verwenden und dürfen nicht vergessen, welches Paket zu importieren?

@@ -5459,7 +5525,7 @@

14.2. Frage

-

14.3. Frage

+

14.3. Frage

Welche dieser Klassen implementiert das Interface Collection?

@@ -5485,9 +5551,9 @@

14.3. Frage

-

14.4. Frage

+

14.4. Frage

-

Auf S.295 oben heißt es: "…​ bietet sich der Einsatz einer List-Klasse an." Ist List eine Klasse?

+

Auf S.295 oben heißt es: "…​ bietet sich der Einsatz einer List-Klasse an." Ist List eine Klasse?

Antwort
@@ -5495,7 +5561,7 @@

14.4. Frage

-

14.5. Frage

+

14.5. Frage

Set<Integer> s = new HashSet<Integer>();
@@ -5519,7 +5585,7 @@ 

14.5. Frage

-

14.6. Frage

+

14.6. Frage

Was bedeutet First in - First out?

@@ -5529,7 +5595,7 @@

14.6. Frage

-

14.7. Frage

+

14.7. Frage

Warum gibt es für eine Schnittstelle wie z.B. List mehrere Implementierungen wie z.B. ArrayList oder Stack? Woher soll ich wissen, welche Implementierung ich nutzen soll?

@@ -5539,7 +5605,7 @@

14.7. Frage

-

14.8. Frage

+

14.8. Frage

Den Interfaces Set, List, Stack, Queue und Map liegen anschauliche Vorstellungen zugrunde. Zeichnen Sie für jedes Interface ein Bild, was die zugrunde liegende Abstraktion illustriert. [Das soll helfen, sich zu erinnern, was die Schnittstellen tun.]

@@ -5570,7 +5636,7 @@

14.8. Frage

-

14.9. Frage

+

14.9. Frage

Warum kann man bei einer Collection die Variante der for-Schleife nutzen, die sich foreach-Schleife nennt?

@@ -5580,7 +5646,7 @@

14.9. Frage

-

14.10. Frage

+

14.10. Frage

Warum sollten Sie davon Abstand nehmen, `Collection`s selber zu implementieren?

@@ -5590,7 +5656,7 @@

14.10. Frage

-

14.11. Frage

+

14.11. Frage

Warum ist es oft attraktiv, wenn möglich, eine Schnittstelle statt eine Klasse als Typ einer Variablen anzugeben?

@@ -5600,7 +5666,7 @@

14.11. Frage

-

14.12. Frage

+

14.12. Frage

Warum ist es bei Collections manchmal sinnvoller, eine Variable mit der implementierenden Klasse statt dem Interface zu deklarieren.

@@ -5610,7 +5676,7 @@

14.12. Frage

-

14.13. Frage

+

14.13. Frage

List<Integer> lst = ...;
@@ -5628,9 +5694,9 @@ 

14.13. Frage

-

14.14. Frage

+

14.14. Frage

-

Herr Kofler benennt fünf statische Methoden der Klasse Collections, die nützlich sind — und oft gebraucht werden.

+

Herr Kofler benennt fünf statische Methoden der Klasse Collections, die nützlich sind — und oft gebraucht werden.

Antwort
@@ -5654,7 +5720,7 @@

14.14. Frage

-

14.15. Frage

+

14.15. Frage

Dem Kopf der for-Schleife fehlt doch was, oder?

@@ -5673,7 +5739,7 @@

14.15. Frage

-

14.16. Frage

+

14.16. Frage

Listen Sie freisprachlich auf (jeweils ein Verb), welche Fähigkeiten eine Collection mit sich bringt.

@@ -5696,7 +5762,7 @@

14.16. Frage

-

14.17. Frage

+

14.17. Frage

Was ist der wesentliche Unterschied zwischen einer Liste (List) und einer Menge (Set)?

@@ -5706,7 +5772,7 @@

14.17. Frage

-

14.18. Frage

+

14.18. Frage

Set definiert add mit dem Rückgabetyp boolean. Warum?

@@ -5716,7 +5782,7 @@

14.18. Frage

-

14.19. Frage

+

14.19. Frage

In welcher Klasse finden Sie eine Methode um Listen zu sortieren?

@@ -5726,7 +5792,7 @@

14.19. Frage

-

14.20. Frage

+

14.20. Frage

Die Implementierung HashSet<T> erwartet, das der parametrisierte Typ zwei Methoden "sauber" implementiert hat? Welche sind das?

@@ -5736,7 +5802,7 @@

14.20. Frage

-

14.21. Frage

+

14.21. Frage

Der Unterschied zwischen einem LinkedHashSet und einem HashSet ist?

@@ -5746,7 +5812,7 @@

14.21. Frage

-

14.22. Frage

+

14.22. Frage

Was ist ein TreeSet?

@@ -5756,9 +5822,9 @@

14.22. Frage

-

14.23. Frage

+

14.23. Frage

-

Set<java.awt.Point> pset = new TreeSet<java.awt.Point>(); Schon verloren. Wie kommt’s?

+

Set<java.awt.Point> pset = new TreeSet<java.awt.Point>(); Schon verloren. Wie kommt’s?

Antwort
@@ -5766,7 +5832,7 @@

14.23. Frage

-

14.24. Frage

+

14.24. Frage

Welchen Wert hat new ArrayList<Integer>(10).size()?

@@ -5776,7 +5842,7 @@

14.24. Frage

-

14.25. Frage

+

14.25. Frage

Wann sollte man der LinkedList den Vorrang vor ArrayList geben?

@@ -5786,7 +5852,7 @@

14.25. Frage

-

14.26. Frage

+

14.26. Frage

Was heißt "FIFO", was "LIFO"? (Das sind zwei ganz beliebte Abkürzungen.)

@@ -5803,7 +5869,7 @@

14.26. Frage

-

14.27. Frage

+

14.27. Frage

Wie sollte man am Besten eine Liste oder ein Set kopieren?

@@ -5813,7 +5879,7 @@

14.27. Frage

-

14.28. Frage

+

14.28. Frage

Wenn Sie über Schlüssel-Wert-Paare einer Map iterieren wollen (und beides brauchen), können Sie die Methode entrySet verwenden. Der Rückgabetyp dieser Methode ist Set<Map.Entry<K,V>>. Erklären Sie diesen Typ.

@@ -5823,7 +5889,7 @@

14.28. Frage

-

14.29. Frage

+

14.29. Frage

Ist Map.Entry als static deklariert oder nicht? Woran sieht man das?

@@ -5845,7 +5911,7 @@

14.29. Frage

-

14.30. Frage

+

14.30. Frage

Die Map-Schnittstelle gehört nicht zu den Collections. Was könnte der Grund dafür sein?

@@ -5855,7 +5921,7 @@

14.30. Frage

-

14.31. Frage

+

14.31. Frage

Die Map<K,V>-Schnittstelle hat zwei wichtige Methoden put und get. Was vermuten Sie, wie die Methodenköpfe zu den beiden Methoden aussehen?

@@ -5889,7 +5955,7 @@

14.31. Frage

-

14.32. Frage

+

14.32. Frage

class A { int x; A(int x) {this.x = x; } }
@@ -5910,7 +5976,7 @@ 

14.32. Frage

-

14.33. Frage

+

14.33. Frage

Zur Map<K,V>-Schnittstelle finden Sie boolean containsKey(Object key) deklariert. Komisch? Komisch! Was ist an der Deklaration überraschend?

@@ -5920,7 +5986,7 @@

14.33. Frage

-

14.34. Frage

+

14.34. Frage

Was unterscheidet eine HashMap von einer LinkedHashMap? Welche der beiden Implementierungen verwenden Sie im Regelfall?

@@ -5930,7 +5996,7 @@

14.34. Frage

-

14.35. Frage

+

14.35. Frage

Welche Probleme ergeben sich, wenn die Schlüssel einer Map veränderliche Objekte sind?

@@ -5940,7 +6006,7 @@

14.35. Frage

-

14.36. Frage

+

14.36. Frage

Wenn man über den Inhalt einer Map iterieren möchte gibt es drei Möglichkeiten an ein Objekt zu gelangen das Iterable implementiert. Diese Möglichkeiten entsprechen jeweils einer anderen Sicht auf den Inhalt der Map. Welche sind das?

@@ -5950,7 +6016,7 @@

14.36. Frage

-

14.37. Frage

+

14.37. Frage

Die Map-Methode put liefert einen Wert zurück. Weshalb ist Sie nicht einfach als void deklariert?

@@ -5960,7 +6026,7 @@

14.37. Frage

-

14.38. Frage

+

14.38. Frage

Angenommen, Sie haben eine Map namens book vom Typ HashMap<ISBN,Book>. Schreiben Sie den Kopf einer for-Schleife, die über alle ISBNs iteriert.

@@ -5980,7 +6046,7 @@

15. Dateien und Verzeichnisse

Tabelle 15.2, 15.3, 15.4 sind wieder ein Gold-Nuggets.

-

15.1. Frage

+

15.1. Frage

Handelt es sich bei java.io.IOException um eine geprüfte oder eine ungeprüfte Ausnahme? Weshalb?

@@ -5993,17 +6059,17 @@

15.1. Frage

-

15.2. Frage

+

15.2. Frage

Welches Konstrukt sollte man verwenden, um Ressourcen nach der Verwendung automatisch zu schließen?

Antwort
-

try-with-resource, try (…​) catch/finally.

+

try-with-resource, try (…​) catch/finally.

-

15.3. Frage

+

15.3. Frage

Geben Sie zwei Beispiele an, warum die Arbeit mit dem Dateisystem zu Exceptions führen kann.

@@ -6023,7 +6089,7 @@

15.3. Frage

-

15.4. Frage

+

15.4. Frage

try (BufferedReader br = Files.newBufferedReader("test.txt", StandardCharsets.UTF_8)) {
@@ -6040,7 +6106,7 @@ 

15.4. Frage

-

15.5. Frage

+

15.5. Frage

Welches gedankliche Modell liegt einer Ressource zugrunde, so dass man die Arbeit mit ihr per close-Methode abschliesst? (edited)

@@ -6050,7 +6116,7 @@

15.5. Frage

-

15.6. Frage

+

15.6. Frage

Wofür brauchen Sie die Methode System.getProperty? Nennen Sie Beispiele für Eigenschaften, die Sie mit dieser Methode auslesen können.

@@ -6060,7 +6126,7 @@

15.6. Frage

-

15.7. Frage

+

15.7. Frage

Was liefert in der JShell jshell> System.getProperty("user.dir") zurück?

@@ -6070,7 +6136,7 @@

15.7. Frage

-

15.8. Frage

+

15.8. Frage

Sie bekommen einen geheimen Pfad geheim vom Typ Path. Prüfen Sie, ob es sich dabei um ein existierendes Verzeichnis handelt und erstellen Sie dann ein neues Path-Objekt, das auf die Datei test.jar im Unterverzeichnis lib dieses Verzeichnisses verweist.

@@ -6104,7 +6170,7 @@

15.8. Frage

-

15.9. Frage

+

15.9. Frage

Was ist ein absoluter Pfad?

@@ -6114,17 +6180,17 @@

15.9. Frage

-

15.10. Frage

+

15.10. Frage

Unter Windows entspricht System.getProperty("user.dir") welcher Umgebungsvariablen (aubrufbar in der Kommandozeile)?

Antwort
-

 — TODO — 

+

 — TODO — 

-

15.11. Frage

+

15.11. Frage

Mit welchem Kommando in der Windows-Kommandozeile wechseln Sie das Verzeichnis? Wir schauen Sie sich den Inhalt eines Verzeichnisses an?

@@ -6141,17 +6207,17 @@

15.11. Frage

-

15.12. Frage

+

15.12. Frage

Sie haben wieder einen geheimen Pfad geheim, der auf eine Datei MyTest.java verweist. Sie wissen nicht, in welchem Verzeichnis sich die Datei befindet, aber sie wissen dass es dort auch eine Datei namens MyOtherTest.java gibt. Nennen Sie zwei Wege, wie sie einen Pfad zu dieser Datei erzeugen können.

Antwort
-

 — TODO — 

+

 — TODO — 

-

15.13. Frage

+

15.13. Frage

Was ist eine Datei?

@@ -6161,7 +6227,7 @@

15.13. Frage

-

15.14. Frage

+

15.14. Frage

Was ist ein Verzeichnis?

@@ -6171,7 +6237,7 @@

15.14. Frage

-

15.15. Frage

+

15.15. Frage

Wie muss die Signatur der Methode Paths.get aussehen, wenn Sie beliebig viele Strings als Argumente akzeptiert?

@@ -6189,7 +6255,7 @@

15.15. Frage

-

15.16. Frage

+

15.16. Frage

Was ist ein Link?

@@ -6199,7 +6265,7 @@

15.16. Frage

-

15.17. Frage

+

15.17. Frage

Wie kopiert und wie verschiebt man eine Datei unter Windows von der Konsole aus?

@@ -6216,7 +6282,7 @@

15.17. Frage

-

15.18. Frage

+

15.18. Frage

Welche Methode der Klasse Files liefert einen Stream - newDirectoryStream oder list?

@@ -6226,7 +6292,7 @@

15.18. Frage

-

15.19. Frage

+

15.19. Frage

Schreiben Sie ein Programmfragment, das eine Textdatei zeilenweise einliest.

@@ -6248,7 +6314,7 @@

15.19. Frage

-

15.20. Frage

+

15.20. Frage

Schreiben Sie ein Programmfragment, das die Einträge eines String-Arrays als einzelne Zeilen in eine Textdatei schreibt.

@@ -6268,7 +6334,7 @@

15.20. Frage

-

15.21. Frage

+

15.21. Frage

Muss man immer Files.createFile zum Anlegen einer neuen Datei verwenden, oder geht das auch einfacher?

@@ -6278,7 +6344,7 @@

15.21. Frage

-

15.22. Frage

+

15.22. Frage

Was bedeuten die Zahlen in UTF-8, UTF-16 und UTF-32

@@ -6288,25 +6354,27 @@

15.22. Frage

-

15.23. Frage

+

15.23. Frage

Muss man immer Files.createDirectory bzw. Files.createDirectories aufrufen um ein neues Verzeichnis zu erstellen, oder geht das auch einfacher?

Antwort
-

 — TODO — 

+

 — TODO — 

-

16. JavaFX

+

16. JavaFX +

-

17. Javadoc

+

17. Javadoc +

@@ -6315,7 +6383,7 @@

17. 18. Pakete und Bibliotheken

-

18.1. Frage

+

18.1. Frage

Ist es möglich, umfangreiche Java-Programme ohne eine einzige import-Anweisung zu schreiben?

@@ -6325,7 +6393,7 @@

18.1. Frage

-

18.2. Frage

+

18.2. Frage

import java.util.Arrays.sort;
@@ -6338,7 +6406,7 @@ 

18.2. Frage

-

18.3. Frage

+

18.3. Frage

Eine import-Anweisung muss immer wo stehen?

@@ -6348,7 +6416,7 @@

18.3. Frage

-

18.4. Frage

+

18.4. Frage

In den Fragen zu vorherigen Kapiteln haben wir immer java.awt.Point als Typ verwendet statt Point. Weshalb haben wir das gemacht und was muss man tun, um einfach direkt Point schreiben zu können?

@@ -6358,7 +6426,7 @@

18.4. Frage

-

18.5. Frage

+

18.5. Frage

Was kann man mit import importieren?

@@ -6368,7 +6436,7 @@

18.5. Frage

-

18.6. Frage

+

18.6. Frage

Was kann man mit import static importieren?

@@ -6378,7 +6446,7 @@

18.6. Frage

-

18.7. Frage

+

18.7. Frage

Warum ist import ein irreführender Name? Tatsächlich organisiert man über import nur ___räume!

@@ -6388,7 +6456,7 @@

18.7. Frage

-

18.8. Frage

+

18.8. Frage

import java.awt.Point;
@@ -6405,7 +6473,7 @@ 

18.8. Frage

-

18.9. Frage

+

18.9. Frage

import java.awt.*;
@@ -6420,11 +6488,11 @@ 

18.9. Frage

Ja, da Point in dem Paket java.awt definiert ist und der * alle Klassen (und Interfaces und Enums) in dem Paket importiert.

-

Hinweis: Der importiert *keine Klassen die in Unterpaketen des angegebenen Pakets liegen, also z.B. in java.awt.color.

+

Hinweis: Der importiert *keine Klassen die in Unterpaketen des angegebenen Pakets liegen, also z.B. in java.awt.color.

-

18.10. Frage

+

18.10. Frage

Was ist der Unterschied von import de.thm.mni; und import de.thm.mni.*;?

@@ -6434,7 +6502,7 @@

18.10. Frage

-

18.11. Frage

+

18.11. Frage

Welches Paket ist standardmäßig in Java SE importiert?

@@ -6444,7 +6512,7 @@

18.11. Frage

-

18.12. Frage

+

18.12. Frage

import static java.awt.Color.* Jetzt darf ich Color c = new Color(0,0,0); deklarieren, richtig?

@@ -6454,7 +6522,7 @@

18.12. Frage

-

18.13. Frage

+

18.13. Frage

Wozu braucht man auf S.372 oben am Anfang die Codezeile import java.awt.Color; wenn unten darunter import static java.awt.Color.*; steht?

@@ -6464,7 +6532,7 @@

18.13. Frage

-

18.14. Frage

+

18.14. Frage

Was muss man tun, damit man die Methoden der Klasse Math direkt ohne den Anteil Math. in seinem Code verwenden kann?

@@ -6474,7 +6542,7 @@

18.14. Frage

-

18.15. Frage

+

18.15. Frage

Kann ich die Klasse java.awt.Color und eine Klasse de.thm.mni.Color zusammen im gleichen Stück Code verwenden?

@@ -6484,7 +6552,7 @@

18.15. Frage

-

18.16. Frage

+

18.16. Frage

Man kann import static java.lang.System.out; schreiben. Dann geht doch auch import static java.lang.System.out.println;, oder?

@@ -6494,7 +6562,7 @@

18.16. Frage

-

18.17. Frage

+

18.17. Frage

Was ist der Unterschied von import de.thm.mni.OOP; zu import static de.thm.mni.OOP;

@@ -6504,7 +6572,7 @@

18.17. Frage

-

18.18. Frage

+

18.18. Frage

Sie schreiben ein Programm im Fachbereich MNI der THM im Kurs OOP. Sie definieren ein Paket für Ihr Programm. Wie sollte der Paketname anfangen?

@@ -6514,7 +6582,7 @@

18.18. Frage

-

18.19. Frage

+

18.19. Frage

Die Option -cp bei java bzw. javac steht für welches Java-Konzept?

@@ -6524,7 +6592,7 @@

18.19. Frage

-

18.20. Frage

+

18.20. Frage

Welche Argumente müssen sie an java übergeben, wenn sie eine eigene Klasse main.Main ausführen wollen, die das Paket somePackage.jar verwendet? In welchen Ordnern sucht die JVM dabei nach der .class-Datei von main.Main und der Datei somePackage.jar?

@@ -6554,4 +6622,4 @@

18.20. Frage

- \ No newline at end of file + diff --git a/JavaFragen.html b/JavaFragen.html index 41bb584..b88b968 100644 --- a/JavaFragen.html +++ b/JavaFragen.html @@ -1,6 +1,7 @@ + @@ -418,6 +419,61 @@ .show-for-print{display:inherit!important}} + + +
-

2.19. Frage

+

2.19. Frage

Im Anschluss an obigen Code: Was ergibt { int x; int x; }?

-

2.20. Frage

+

2.20. Frage

Ist es eine gute Idee, die drei Punkte eines Dreiecks mit dem folgenden Code zu initialisieren? Warum?

@@ -1353,19 +1511,19 @@

2.20. Frage

-

2.21. Frage

+

2.21. Frage

Wie könnte einer dieser ominösen auf S.77 erwähnten "Copy-Konstruktoren" für die Klasse java.awt.Point aussehen?

-

2.22. Frage

+

2.22. Frage

Was sind boxing und unboxing bei Wrapper-Klassen?

-

2.23. Frage

+

2.23. Frage

Was passiert bei der Ausführung von folgendem Code:

@@ -1377,19 +1535,19 @@

2.23. Frage

-

2.24. Frage

+

2.24. Frage

Warum kann man sowohl int x = Integer.parseInt("123"); als auch Integer x = Integer.parseInt("123"); schreiben? Was ist der Unterschied?

-

2.25. Frage

+

2.25. Frage

Was passiert bei folgender Deklaration Double x = 10;? Warum?

-

2.26. Frage

+

2.26. Frage

Gibt es einen Unterschied zwischen den folgenden beiden Codestücken?

@@ -1407,19 +1565,19 @@

2.26. Frage

-

2.27. Frage

+

2.27. Frage

Ist Integer eine Sub- oder Superklasse von Long, oder keins von beidem?

-

2.28. Frage

+

2.28. Frage

Welche einzelnen Schritte müssen passieren, um eine Zahl von der Konsole einzulesen?

-

2.29. Frage

+

2.29. Frage

Woher weiß System.out.println in dem folgenden Beispiel, wie ein Punkt auf der Konsole aussehen soll?

@@ -1430,13 +1588,13 @@

2.29. Frage

-

2.30. Frage

+

2.30. Frage

Definieren Sie einen Enumerationstyp Ternary, der die drei Werte TRUE, FALSE, und MAYBE besitzt.

-

2.31. Frage

+

2.31. Frage

Können Enumerationstypen auch Methoden haben? Wie sieht die Deklaration eines solchen Typs aus?

@@ -1447,94 +1605,94 @@

2.31. Frage

3. Operatoren

-

3.1. Frage

+

3.1. Frage

Operatoren kommen nur vor in __?

-

3.2. Frage

+

3.2. Frage

Was ist mit der Priorität eines Operators gemeint? Geben Sie ein Beispiel an.

-

3.3. Frage

+

3.3. Frage

-

Der Minus-Operator “-” ist linksassoziativ. Was ist damit gemeint? Erklären Sie das an einem Beispiel.

+

Der Minus-Operator “-” ist linksassoziativ. Was ist damit gemeint? Erklären Sie das an einem Beispiel.

-

3.4. Frage

+

3.4. Frage

Was ist der Unterschied zwischen & und &&?

-

3.5. Frage

+

3.5. Frage

Die Zuweisung ist ein Operator. Das heißt, die Zuweisung hat als Ergebnis einen _?

-

3.6. Frage

+

3.6. Frage

Anschluss an vorherige Frage: Ist der Zuweisungsoperator rechts- oder linksassoziativ? Können Sie einen Grund angeben, warum es so sein muss?

-

3.7. Frage

+

3.7. Frage

-

Es gibt drei(!) Kontexte im Zusammenhang von Ausdrücken, in denen runde Klammernpaare (…​) vorkommen. Welche sind das?

+

Es gibt drei(!) Kontexte im Zusammenhang von Ausdrücken, in denen runde Klammernpaare (…​) vorkommen. Welche sind das?

-

3.8. Frage

+

3.8. Frage

Erklären Sie, wie die Kopfzeile im while funktioniert:

-

whileline = breader.readLine( != null) { …​ }

+

whileline = breader.readLine( != null) { …​ }

-

3.9. Frage

+

3.9. Frage

Angenommen, es gäbe den Modulo-Operator % in Java nicht. Wie müsste dann eine Implementierung mod(int x, int y) z.B. in der Math-Klasse aussehen?

-

3.10. Frage

+

3.10. Frage

Die Kurzform x += 3 bedeutet ausführlich was?

-

3.11. Frage

+

3.11. Frage

Erläutern Sie den Unterschied von int a = n;` zu `int a = n;!

-

3.12. Frage

+

3.12. Frage

-

Die Vergleichoperatoren wie >, , == usw. stehen für welche Typen zur Verfügung?

+

Die Vergleichoperatoren wie >, , == usw. stehen für welche Typen zur Verfügung?

-

3.13. Frage

+

3.13. Frage

Wann kann man die Methode compareTo verwenden?

-

3.14. Frage

+

3.14. Frage

Warum ist es keine gute Idee, zwei Zeichenketten mit == zu vergleichen?

-

3.15. Frage

+

3.15. Frage

Was ist der Unterschied von & und && bei boolschen Werten? In beiden Fällen ergibt sich immer das gleiche Ergebnis, z.B.:

@@ -1548,37 +1706,37 @@

3.15. Frage

-

3.16. Frage

+

3.16. Frage

-

Wandeln Sie ein if (expr1 && expr2) {…​} so um, dass Sie nur if-Anweisungen ohne den &&-Operator verwenden!

+

Wandeln Sie ein if (expr1 && expr2) {…​} so um, dass Sie nur if-Anweisungen ohne den &&-Operator verwenden!

-

3.17. Frage

+

3.17. Frage

-

Gleiche Aufgabe: Umwandlung von if (expr1 || expr2) { …​ }.

+

Gleiche Aufgabe: Umwandlung von if (expr1 || expr2) { …​ }.

-

3.18. Frage

+

3.18. Frage

Multiplizieren Sie eine int-Zahl mit 4 ohne die Multiplikation zu verwenden.

-

3.19. Frage

+

3.19. Frage

Warum ist der ternäre-Operator nicht mit einem if zu vergleichen? Was ist anders?

-

3.20. Frage

+

3.20. Frage

Implementieren Sie eine Methode odd(int n) (odd heißt "ungerade"), die mithilfe eines Bitoperators ermittelt, ob der übergebene Integer ungerade ist oder nicht.

-

3.21. Frage

+

3.21. Frage

return b == true ? false : true; Verkürzen Sie die return-Anweisung.

@@ -1589,37 +1747,37 @@

3.21. Frage

4. Verzweigungen und Schleifen

-

4.1. Frage

+

4.1. Frage

Wie sieht die Syntax einer If-Abfrage aus?

-

4.2. Frage

+

4.2. Frage

Wie sähe der Ausdruck x = x < 0 ? -x : x mit einer normalen If-Abfrage aus?

-

4.3. Frage

+

4.3. Frage

Schreiben sie eine If-Abfrage, die abhängig vom Monat in der Integer-Variablen month (Der Januar entspricht der 1) die Jahreszeit ausgibt. (3-5: Frühling, 6-8: Sommer, 9-11: Herbst, 12-2: Winter)

-

4.4. Frage

+

4.4. Frage

Schreiben sie eine Switch-Verzweigung, die abhängig vom Monat in der Integer-Variablen month (Der Januar entspricht der 1) die Jahreszeit ausgibt. (3-5: Frühling, 6-8: Sommer, 9-11: Herbst, 12-2: Winter)

-

4.5. Frage

+

4.5. Frage

Was sind die drei Teile des Kopfes einer For-Schleife?

-

4.6. Frage

+

4.6. Frage

Ist die folgende Schleife syntaktisch korrekt? Falls ja, was wird auf der Konsole ausgegeben?

@@ -1633,13 +1791,13 @@

4.6. Frage

-

4.7. Frage

+

4.7. Frage

In Anlehnung an die letzte Frage: Können Sie mit einem einzigen Schleifenkopf eine Schleife schreiben, die die x- und y-Koordinaten aller Pixel eines Bildes mit 8x10 Pixeln durchläuft?

-

4.8. Frage

+

4.8. Frage

Ist die folgende Variante der Schleife auf S. 108 auch korrekt?

@@ -1653,52 +1811,52 @@

4.8. Frage

-

4.9. Frage

+

4.9. Frage

-

Ist for(int i; i < 10; i++) { …​ } korrekt?

+

Ist for(int i; i < 10; i++) { …​ } korrekt?

-

4.10. Frage

+

4.10. Frage

Was ist bei Schleifen zu beachten deren Zählvariable vom Typ float oder double ist?

-

4.11. Frage

+

4.11. Frage

Kann der Zähler einer for-Schleife auch den Typ char haben?

-

4.12. Frage

+

4.12. Frage

-

Ein Student und eine Studentin schreiben den folgenden for-Kopf, um die Summe der Zahlen von 1 bis 50 zu berechnen: for(i = 1, sum = 0; i ⇐ 50; sum = i+); Was sagt Ihnen Ihr Programmierverstand?

+

Ein Student und eine Studentin schreiben den folgenden for-Kopf, um die Summe der Zahlen von 1 bis 50 zu berechnen: for(i = 1, sum = 0; i ⇐ 50; sum = i+); Was sagt Ihnen Ihr Programmierverstand?

(Übrigens: Der Kopf der Schleife ist syntaktisch korrekt, da liegt nicht das Problem!)

-

4.13. Frage

+

4.13. Frage

Schreiben Sie die folgende For-each-Schleife mit einer normalen for-Schleife: for(int x: ar) { System.out.println(x); }

-

4.14. Frage

+

4.14. Frage

Was ist der Unterschied zwischen einer while-Schleife und einer do-while-Schleife? In welchem Fall ist die eine sinnvoller, in welchem die andere?

-

4.15. Frage

+

4.15. Frage

Man kann jede for-Schleife in eine while- bzw. do/while-Schleife umwandeln. Stimmt das?

-

4.16. Frage

+

4.16. Frage

Beschreiben Sie die Ausführung einer for-Schleife:

@@ -1707,13 +1865,13 @@

4.16. Frage

-

4.17. Frage

+

4.17. Frage

Herrn Kofler kräuseln sich die Fußnägel, wenn Sie Fließkommazahlen im Kopf einer for-Schleife verwenden. Warum?

-

4.18. Frage

+

4.18. Frage

for(int i = 0; i < 100; i++) { if (i % 2 == 0) System.out.println(i); }

@@ -1735,7 +1893,7 @@

4.18. Frage

-

4.19. Frage

+

4.19. Frage

Der Kopf for(int i = 1; ; i++) sei gegeben, Sie dürfen ihn nicht verändern. Allerdings darf die Schleife nur für i bis 50 laufen. Retten Sie das im Rumpf!

@@ -1746,19 +1904,19 @@

4.19. Frage

5. Arrays

-

5.1. Frage

+

5.1. Frage

Wie lauten die zwei Syntaxvarianten zur Deklaration einer (eindimensionalen) Array-Variable?

-

5.2. Frage

+

5.2. Frage

Kann die Größe von Java-Array nachträglich verändert werden? Warum/Warum nicht?

-

5.3. Frage

+

5.3. Frage

Seite 121: "Arrays können auch in for-each-Schleifen durchlaufen werden. Die Array-Elemente können dann jedoch nur gelesen, nicht aber verändert werden."

@@ -1767,62 +1925,62 @@

5.3. Frage

-

5.4. Frage

+

5.4. Frage

Seite 121: Was ist wohl mit "echten mehrdimensionalen Arrays" gemeint?

-

5.5. Frage

+

5.5. Frage

Seite 122: Warum for(int j=0; j<x[i].length; j)` beim Durchlauf von zweidimensionalen Arrays? Warum nicht `for(int j=0; j<x[0].length; j)?

-

5.6. Frage

+

5.6. Frage

Ist \u0000 wirklich das Zeichen 0? Deklarieren Sie in der JShell ein leeres char-Array und geben Sie den Inhalt aus.

-

5.7. Frage

+

5.7. Frage

Welchen Typ hat ein Array, das auf der Konsole als [Ljava.lang.String;@ff5b51f ausgegeben wird?

-

5.8. Frage

+

5.8. Frage

Wie könnte man eine "schönere" String-Darstellung des Arrays aus der letzten Aufgabe erhalten?

-

5.9. Frage

+

5.9. Frage

Was ist eine Shallow-Copy?

-

5.10. Frage

+

5.10. Frage

Worauf muss man beim Kopieren von mehrdimensionalen Arrays achten?

-

5.11. Frage

+

5.11. Frage

Was müsste man tun, um eine Deep-Copy eines Arrays zu erhalten?

-

5.12. Frage

+

5.12. Frage

Es gibt zwei Probleme mit dem folgenden Snippet. Welche? Array.sort(new int[]{5,7,-1,3,2})

-

5.13. Frage

+

5.13. Frage

Seite 126: Ändern Sie die Deklaration des Arrays so, dass der Code von Herrn Kofler auf die Nase fällt. Sie dürfen weder den Typ noch den Namen des Arrays verändern.

@@ -1833,163 +1991,163 @@

5.13. Frage

6. Zeichenketten

-

6.1. Frage

+

6.1. Frage

Wir ist die Schreibweise für ein Einzelzeichen-Literal?

-

6.2. Frage

+

6.2. Frage

Bei Literalen für Einzelzeichen hat der Backslash \ eine Sonderfunktion: Welche? (Wie nennt man den "Backslash"? Er ist das sogenannte ___zeichen.)

-

6.3. Frage

+

6.3. Frage

Was bedeutet "Unicode"?

-

6.4. Frage

+

6.4. Frage

Wie prüfen Sie, ob ein char c eine Ziffer oder ein Großbuchstabe ist?

-

6.5. Frage

+

6.5. Frage

Definieren Sie eine char-Variable, die das Unicode-Symbol "Airplane" (U+2708) enthält.

-

6.6. Frage

+

6.6. Frage

Ich gebe Ihnen ein geheimnisvolles Einzelzeichen geheim. Ermitteln Sie, welches Einzelzeichen geheim vorangeht und welches ihm folgt.

-

6.7. Frage

+

6.7. Frage

Was ergibt 'T' + 'H' + 'M'?

-

6.8. Frage

+

6.8. Frage

Was ergibt "" + 'T' + 'H' + 'M'?

-

6.9. Frage

+

6.9. Frage

Was ergibt 'T' + 'H' + 'M' + ""?

-

6.10. Frage

+

6.10. Frage

Wie machen Sie aus "MNI" eine Folge von Einzelzeichen?

-

6.11. Frage

+

6.11. Frage

Erstellen Sie die Zeichenkette "C:\Users\mni\oop\" (Windows-Stil) als Pfad-Angabe unter Java.

-

6.12. Frage

+

6.12. Frage

Beschreiben Sie den visuellen Effekt der Zeichenkette "\n\tTest\n".

-

6.13. Frage

+

6.13. Frage

Initialisieren Sie String s als leere Zeichenkette!

-

6.14. Frage

+

6.14. Frage

Gegeben sei das Array String[] s. Wir möchten davon eine Kopie anlegen. Muss man eine deep copy anfordern, reicht eine shallow copy oder genügt gar eine einfache Zuweisung?

-

6.15. Frage

+

6.15. Frage

Warum sollte man eine Zeichenkette niemals mit == vergleichen?

-

6.16. Frage

+

6.16. Frage

Ergibt "abc" == "abc" immer true oder kann es vielleicht auch mal false ergeben?

-

6.17. Frage

+

6.17. Frage

Was liefert der Vergleich "aaa" > "abc"?

-

6.18. Frage

+

6.18. Frage

Was ergibt String.valueOf("String")?

-

6.19. Frage

+

6.19. Frage

Welchen Formatierungscode brauchen Sie, um eine Fließkommazahl mit drei Nachkommastellen darzustellen?

-

6.20. Frage

+

6.20. Frage

Alles happy? int i = 3; System.out.println(i.toString());

-

6.21. Frage

+

6.21. Frage

Warum gibt es String.valueOf(), wenn es doch die toString()-Methode gibt?

-

6.22. Frage

+

6.22. Frage

Trennen Sie die Zeichenkette C:\Users\mni\oop\ mit der Methode split in die einzelnen Pfadbestandteile auf. Welches Problem ergibt sich dabei?

-

6.23. Frage

+

6.23. Frage

Geben Sie ein String-Format an, das die Zahl 12.345678f nur mit exakt zwei Nachkommastellen angibt. (edited)

-

6.24. Frage

+

6.24. Frage

Gegeben sei float[] floats = { 1.234f, 12.56f, 123f }. Gehen Sie in einer Schleife durch das Array und geben Sie die Zahlen untereinander aus. Die Kommas sollen positionsgleich untereinander stehen, eine Nachkommastelle ist relevant. (edited)

-

6.25. Frage

+

6.25. Frage

Welcher Hex-Darstellung entspricht 2017?

-

6.26. Frage

+

6.26. Frage

In einer String-Variable namens geheim steht ein Dateiname. Finden sie die Dateiendung heraus (der Teil nach dem letzten Punkt im Namen).

-

6.27. Frage

+

6.27. Frage

Sie treffen auf Aliens, die Ihnen auf eine Tafel die Zahl "110" schreiben. Sie stellen fest, dass die Aliens an ihren beiden Händen insgesamt 6 Finger haben. Wie lautet die Zahl also im 6er-System?

@@ -1998,43 +2156,43 @@

6.27. Frage

-

6.28. Frage

+

6.28. Frage

-

Long.parseLong("55",5) — Autsch! Warum?

+

Long.parseLong("55",5) — Autsch! Warum?

-

6.29. Frage

+

6.29. Frage

-

Long.parseLong("55L") — Autsch! Schade! Warum schade?

+

Long.parseLong("55L") — Autsch! Schade! Warum schade?

-

6.30. Frage

+

6.30. Frage

In welchen Fällen ist der Einsatz der Klasse StringBuilder sinnvoll?

-

6.31. Frage

+

6.31. Frage

Sie wollen sicherstellen, dass Java bei der Übersetzung Ihres Java-Programms die Java-Datei in der Kodierung UTF-8 einliest. Wie machen Sie das?

-

6.32. Frage

+

6.32. Frage

StringBuilder s1 = new StringBuilder("Hallo "); StringBuilder s2 = new StringBuilder("Welt"); Wären s1 und s2 Strings, so könnten Sie beide mit s1+s2 konkatenieren. Wie lösen Sie das Problem vergleichbar hier?

-

6.33. Frage

+

6.33. Frage

Das Programm auf Seite 147/148 zählt Groß- und Kleinbuchstaben in einem String. Wäre statt der if-Anweisungen nicht ein switch passender und würde den Code lesbarer machen?

-

6.34. Frage

+

6.34. Frage

Zeichensatzprobleme gibt es nicht nur in Quellcodedateien, sondern auch immer dann wenn Zeichenketten von außerhalb in das Programm kommen oder ausgegeben werden (z.B. über das Netzwerk oder aus einer Datei). Um zwischen verschiedenen Kodierungen wechseln zu können bietet die Klasse String den Konstruktor String(byte[], Charset) und die Methode getBytes(Charset).Wandeln Sie das Zeichen ä (unicode \u00e4) erst in US_ASCII um und lesen das resultierende Byte-Array wieder so ein als wäre es UTF_8-kodiert.

@@ -2042,7 +2200,8 @@

6.34. Frage

-

7. Datum und Uhrzeit

+

7. Datum und Uhrzeit +

@@ -2051,85 +2210,85 @@

7. 8. Methoden

-

8.1. Frage

+

8.1. Frage

Haben Klassen Methoden? Oder haben Objekte Methoden?

-

8.2. Frage

+

8.2. Frage

In Java gibt es Klassen, die nur statische Methoden haben. Macht das Sinn? Nennen Sie ein Beispiel.

-

8.3. Frage

+

8.3. Frage

Wie sieht der syntaktische Aufbau des Kopfes einer Methode aus? Beginnen Sie beim Rückgabetyp.

-

8.4. Frage

+

8.4. Frage

Jemand schreibt die Methode void Sort(String[] passwords) und bekommt sofort Schelte von seinen Kolleg(inn)en. Warum?

-

8.5. Frage

+

8.5. Frage

-

Wenn Arrays.sort() ein bestehendes Array verändern kann, könnte man dann auch eine Methode void increment(int i) {…​} schreiben, die eine bestehende Integer-Variable verändert?

+

Wenn Arrays.sort() ein bestehendes Array verändern kann, könnte man dann auch eine Methode void increment(int i) {…​} schreiben, die eine bestehende Integer-Variable verändert?

-

8.6. Frage

+

8.6. Frage

In jedem Java-Programm muss es genau eine main-Methode geben. Wie muss der Kopf der main-Methode aussehen?

-

8.7. Frage

+

8.7. Frage

static Car getCar() { return this.car; } Autsch! Warum?

-

8.8. Frage

+

8.8. Frage

In welchem Fall muss eine Methode in ihrem Rumpf eine return-Anweisung enthalten?

-

8.9. Frage

+

8.9. Frage

Die Methode String.valueOf muss mit sehr vielen verschiedenen Datentypen als Parameter umgehen. Wie kann es sein, dass man an die Methode sowohl einen double als auch einen char übergeben kann und trotzdem immer das richtige Ergebnis bekommt?

-

8.10. Frage

+

8.10. Frage

float numberOne() { return 1.0; } Autsch oder nicht Autsch, das ist hier die Frage!

-

8.11. Frage

+

8.11. Frage

Könnte man den Parameter args der Main-Methode auch als eine variable Anzahl von Strings definieren? Probieren Sie es aus!

-

8.12. Frage

+

8.12. Frage

-

Eine Methode sei mit einem Argument deklariert (keine Überladung), sie wird jedoch mit drei Argumenten aufgerufen — und Java akzeptiert das klaglos. Wie muss die Methode deklariert worden sein?

+

Eine Methode sei mit einem Argument deklariert (keine Überladung), sie wird jedoch mit drei Argumenten aufgerufen — und Java akzeptiert das klaglos. Wie muss die Methode deklariert worden sein?

-

8.13. Frage

+

8.13. Frage

Was ist der sogenannte CallStack?

-

8.14. Frage

+

8.14. Frage

Ist die folgende Definition von überladenen Methoden zulässig?

@@ -2141,43 +2300,43 @@

8.14. Frage

-

8.15. Frage

+

8.15. Frage

Auf welche Weisen kann man eine Methode "überladen"?

-

8.16. Frage

+

8.16. Frage

-

void doStuff(int …​ x, String y) { …​ } - Geht das?

+

void doStuff(int …​ x, String y) { …​ } - Geht das?

-

8.17. Frage

+

8.17. Frage

Was ist der Grund, wenn der CallStack überläuft?

-

8.18. Frage

+

8.18. Frage

Definieren Sie eine Methode floatEquals, die zwei float-Werte a und b und einen optionalen dritten float Wert tolerance übernimmt und einen boolean zurückgibt.

-

8.19. Frage

+

8.19. Frage

Welche Informationen werden auf dem CallStack gespeichert?

-

8.20. Frage

+

8.20. Frage

-

Wenn man einen Parameter mit final ausweist verhindert das …​ was?

+

Wenn man einen Parameter mit final ausweist verhindert das …​ was?

-

8.21. Frage

+

8.21. Frage

void foo() {
@@ -2191,7 +2350,7 @@ 

8.21. Frage

-

8.22. Frage

+

8.22. Frage

void bar() {
@@ -2205,13 +2364,13 @@ 

8.22. Frage

-

8.23. Frage

+

8.23. Frage

return(0) statt return 0 ist in Java zulässig. Geht auch return() statt return für void-Methoden?

-

8.24. Frage

+

8.24. Frage

Läuft der Code?

@@ -2224,7 +2383,7 @@

8.24. Frage

-

8.25. Frage

+

8.25. Frage

Und dieser hier?

@@ -2237,7 +2396,7 @@

8.25. Frage

-

8.26. Frage

+

8.26. Frage

Was passiert bei der Ausführung dieser Methode?

@@ -2256,7 +2415,7 @@

8.26. Frage

-

8.27. Frage

+

8.27. Frage

int rek(int n) {
@@ -2270,13 +2429,13 @@ 

8.27. Frage

-

8.28. Frage

+

8.28. Frage

Bei der Rekursion unterscheidet man stets den Abbruch- und den Wiederholungsfall. Erklären Sie das am Beispiel der rekursiven Implementierung der Fakultätsfunktion.

-

8.29. Frage

+

8.29. Frage

int fib(int n) { return n < 2 ? n : fib(n-1) + fib(n-2); }
@@ -2287,7 +2446,7 @@

8.29. Frage

-

8.30. Frage

+

8.30. Frage

boolean isOdd(int n) {
@@ -2300,13 +2459,13 @@ 

8.30. Frage

-

8.31. Frage

+

8.31. Frage

Es gibt einen Klassiker zur sogenannten wechselseitigen Rekursion: Methode boolean isOdd(int n) ruft boolean isEven(int n) auf und umgekehrt. Dabei reduziert jede Methode den Zahlenwert um 1, bevor der Gegenpartner aufgerufen wird. Was ist der jeweilige Abbruchfall? Implementieren Sie diese Rekursion.

-

8.32. Frage

+

8.32. Frage

int foo(int n) {
@@ -2325,91 +2484,91 @@ 

8.32. Frage

9. Exceptions

-

9.1. Frage

+

9.1. Frage

-

Wenn eine Exception geworfen wird, dann sieht sich Java zur Laufzeit außerstande …​?

+

Wenn eine Exception geworfen wird, dann sieht sich Java zur Laufzeit außerstande …​?

-

9.2. Frage

+

9.2. Frage

Kann javac, der Java-Compiler, eine Exception zu Ihrem Code werfen?

-

9.3. Frage

+

9.3. Frage

Die Informationen, die zu einer Exception geführt haben, werden wie kommuniziert?

-

9.4. Frage

+

9.4. Frage

Wie heißt die oberste Klasse in der Exception-Hierarchie?

-

9.5. Frage

+

9.5. Frage

Was ist ein Stack Trace?

-

9.6. Frage

+

9.6. Frage

Wenn eine Exception vom Typ Error geworfen wird, dann hat das was für Konsequenzen?

-

9.7. Frage

+

9.7. Frage

Was unterscheidet Exceptions, die von RuntimeException erben von anderen Subklassen von Exception?

-

9.8. Frage

+

9.8. Frage

Warum ist der Name RunTimeException für eine der Exception-Klassen ein wenig unsinnig? (edited)

-

9.9. Frage

+

9.9. Frage

In welchem Fall muss im Kopf einer Methode throws samt Angabe der möglichen Ausnahme(n) stehen?

-

9.10. Frage

+

9.10. Frage

Wenn catch-Blöcke identischen Code haben, bietet sich eine Verkürzungsform an. Beschreiben Sie den syntaktischen Aufbau des "verkürzten" catch-Kopfes.

-

9.11. Frage

+

9.11. Frage

Die StackTrace eines StackOverflowError ist sehr lang. Warum?

-

9.12. Frage

+

9.12. Frage

try { /* some code */ } and there is something wrong.

-

9.13. Frage

+

9.13. Frage

Was ist der Vorteil eines try-with-resources gegenüber einem normalen finally-Block?

-

9.14. Frage

+

9.14. Frage

Anschlussfrage: Was ist eine resource?

-

9.15. Frage

+

9.15. Frage

Ein Student schreibt folgende main-Methode und wird sofort dafür gescholten. Warum?

@@ -2422,13 +2581,13 @@

9.15. Frage

-

9.16. Frage

+

9.16. Frage

Was macht die assert-Anweisung?

-

9.17. Frage

+

9.17. Frage

try {
@@ -2445,13 +2604,13 @@ 

9.17. Frage

-

9.18. Frage

+

9.18. Frage

Sie haben in Ihrem Code assert-Anweisungen, die eigentlich eine Exception auslösen müssten (Beispiel: assert false;). Die Exceptions bleiben aus. Was ist los?

-

9.19. Frage

+

9.19. Frage

Kann man selbst Exceptions definieren?

@@ -2476,19 +2635,19 @@

10. Klassen

-

10.1. Frage

+

10.1. Frage

Herr Kofler nennt welche Vorteile, die Objektorientierung bietet?

-

10.2. Frage

+

10.2. Frage

Wann ist eine Klasse keine top level-Klasse?

-

10.3. Frage

+

10.3. Frage

void foo() {
@@ -2505,43 +2664,43 @@ 

10.3. Frage

-

10.4. Frage

+

10.4. Frage

Wie sieht schematisch die Syntax zur Klasse aus? [ohne Annotationen und Generics]

-

10.5. Frage

+

10.5. Frage

In einer .java-Datei können mehrere Klassen deklariert werden. Allerdings gilt eine Einschränkung, was den Namen der Datei angeht. Welche?

-

10.6. Frage

+

10.6. Frage

Schreibe class test und schon ist der Kopf ab, bevor auch nur ein { folgt. Warum? [Gemeint ist Ihr Kopf, nicht der der Klassendeklaration :upside_down_face:!)

-

10.7. Frage

+

10.7. Frage

Eine top level-Klasse darf welche Sichtbarkeiten nicht haben?

-

10.8. Frage

+

10.8. Frage

Gibt es in Java das Laufzeitkonstrukt der Klasse?

-

10.9. Frage

+

10.9. Frage

Gibt es in Java das Laufzeitkonstrukt des Objekts?

-

10.10. Frage

+

10.10. Frage

class Thing {
@@ -2556,25 +2715,25 @@ 

10.10. Frage

-

10.11. Frage

+

10.11. Frage

Auf welcher Ebene ist die Klasse class A {} sichtbar?

-

10.12. Frage

+

10.12. Frage

Was ist eine Klassenvariable? Doch dasselbe wie ein statisches Feld, oder?

-

10.13. Frage

+

10.13. Frage

Klären Sie die Begriffe "Feld" und "Variable".

-

10.14. Frage

+

10.14. Frage

class Thing {
@@ -2587,13 +2746,13 @@ 

10.14. Frage

-

10.15. Frage

+

10.15. Frage

Im Rumpf einer Klasse können welche Sprachkonstrukte deklariert werden?

-

10.16. Frage

+

10.16. Frage

class Point {
@@ -2610,37 +2769,37 @@ 

10.16. Frage

-

10.17. Frage

+

10.17. Frage

Was ist mit dem Begriff "paketsicher" gemeint?

-

10.18. Frage

+

10.18. Frage

Mit welchem Modifizierer kann man die Voraussetzung für einen immutablen (unveränderlichen) Datentyp schaffen? Reicht die Verwendung dieses Modifizierers allein schon aus, um die Immutabilität zu garantieren?

-

10.19. Frage

+

10.19. Frage

Nennen Sie die einzelnen Schritte, die bei einem Aufruf von new ausgeführt werden.

-

10.20. Frage

+

10.20. Frage

Wie sieht das Schema zum Zugriff auf eine statische Variable bzw. zum Aufruf einer statischen Methode aus?

-

10.21. Frage

+

10.21. Frage

Recherchieren Sie: In der OOP-Veranstaltung hatten wir ein Beispiel, in dem wir eine statische Klassenvariable genutzt haben. Worum ging es bei dem Beispiel? Welchen Zweck hatte die statische Klassenvariable?

-

10.22. Frage

+

10.22. Frage

class Point {
@@ -2655,37 +2814,37 @@ 

10.22. Frage

-

10.23. Frage

+

10.23. Frage

Deklarieren Sie eine Klasse, von der keine Objekte erzeugt werden können.

-

10.24. Frage

+

10.24. Frage

Ein Konstruktor ist mit einer Methodendeklaration sehr vergleichbar. Nur: Der Konstruktor hat zwar einen Namen, ihm scheint jedoch der Rückgabetyp zu fehlen. Warum?

-

10.25. Frage

+

10.25. Frage

Was sind die Defaultwerte für Felder (Klassenvariablen)? Was sind die Defaultwerte für lokale Variablen?

-

10.26. Frage

+

10.26. Frage

Warum kann man finalize nicht für Aufräumarbeiten verwenden?

-

10.27. Frage

+

10.27. Frage

Wie ruft man im Konstruktor einen anderen Konstruktor der gleichen Klasse auf? Warum sollte man das überhaupt tun wollen?

-

10.28. Frage

+

10.28. Frage

class A {
@@ -2706,103 +2865,103 @@ 

10.28. Frage

-

10.29. Frage

+

10.29. Frage

Im Vorgriff auch das nächste Kapitel: Wie ruft man im Konstruktor den Konstruktor der Oberklasse auf?

-

10.30. Frage

+

10.30. Frage

Was ist die Besonderheit des Interfaces AutoCloseable? Welche Methoden deklariert es?

-

10.31. Frage

+

10.31. Frage

Ist this eine Variable?

-

10.32. Frage

+

10.32. Frage

Ist es nicht das gleiche, ob eine Klasse jetzt ein public int x definiert oder ein private int x mit den Methoden int getX() und void setX(int x)? Wo liegt der Unterschied?

-

10.33. Frage

+

10.33. Frage

Wozu benötigt man this?

-

10.34. Frage

+

10.34. Frage

Wenn man sich in den Namensgebungen für Parameter und lokale Variablen diszipliniert, benötigt man dann überhaupt noch this?

-

10.35. Frage

+

10.35. Frage

Wenn an den Konstruktor "falsche" Werte übergeben werden, empfiehlt es sich mit einer Exception darauf zu reagieren. Welche Exception sollte man wählen, sofern man nicht spezifischer sein kann/möchte?

-

10.36. Frage

+

10.36. Frage

Wenn es einen Konstruktor gibt, muss es auch einen Destruktor geben, nicht wahr?! Hat Java einen Destruktor? Begründen Sie Ihre Antwort!

-

10.37. Frage

+

10.37. Frage

Eine Klasse, die eine close-Methode anbietet sollte die Schnittstelle AutoCloseable implementieren. Warum?

-

10.38. Frage

+

10.38. Frage

Was ist mit "Settern" und "Gettern" gemeint?

-

10.39. Frage

+

10.39. Frage

Was ist damit gemeint, wenn man von einer "Datenklasse" spricht?

-

10.40. Frage

+

10.40. Frage

Wenn Sie Setter- und Getter-Methoden implementieren, dann sollten die Felder wie deklariert sein?

-

10.41. Frage

+

10.41. Frage

Oft sieht man Setter wie public setName(Typ value) { name = value; }. Was könnte man daran kritisieren?

-

10.42. Frage

+

10.42. Frage

Aufgrund welchen Prinzips der Softwaretechnik werden Setter und Getter begründet?

-

10.43. Frage

+

10.43. Frage

Welcher softwaretechnische Nutzen steckt vor allem in den Setter-Methoden?

-

10.44. Frage

+

10.44. Frage

Warum ist der Begriff "Unterklasse" für eine innere Klasse problematisch?

-

10.45. Frage

+

10.45. Frage

class A {
@@ -2821,13 +2980,13 @@ 

10.45. Frage

-

10.46. Frage

+

10.46. Frage

this.name oder name.this, das ist hier die Frage!

-

10.47. Frage

+

10.47. Frage

AutoCloseable a = new AutoCloseable() {
@@ -2840,13 +2999,13 @@ 

10.47. Frage

-

10.48. Frage

+

10.48. Frage

Kann eine anonyme Klasse einen Konstruktor haben? Warum, oder warum nicht?

-

10.49. Frage

+

10.49. Frage

class A {
@@ -2862,13 +3021,13 @@ 

10.49. Frage

-

10.50. Frage

+

10.50. Frage

Erzeugen Sie eine anonyme Unterklasse von java.awt.Point, die die Methode toString so überschreibt, dass die String-Repräsentation jetzt einfach der mathematischen Schreibweise (x, y) entspricht. Wie können Sie beim Erzeugen des Objektes dieser Klasse die Koordinaten x und y übergeben?

-

10.51. Frage

+

10.51. Frage

Object obj = new Object() {
@@ -2881,25 +3040,25 @@ 

10.51. Frage

-

10.52. Frage

+

10.52. Frage

Eine Instanz einer anonyme Klasse kann nur auf bestimmte Variablen des Kontextes zugreifen, in dem sie erzeugt wurde. Welche Variablen sind das?

-

10.53. Frage

+

10.53. Frage

Definieren Sie, was effectively final heißt?

-

10.54. Frage

+

10.54. Frage

-

AutoCloseable a = () → System.out.println("auto"); Wie nennt man so etwas?

+

AutoCloseable a = () → System.out.println("auto"); Wie nennt man so etwas?

-

10.55. Frage

+

10.55. Frage

String message = "foo";
@@ -2914,7 +3073,7 @@ 

10.55. Frage

-

10.56. Frage

+

10.56. Frage

class A {
@@ -2930,13 +3089,13 @@ 

10.56. Frage

-

10.57. Frage

+

10.57. Frage

Warum sind laut Herrn Kofler statische innere Klassen gar keine "inneren Klassen" im eigentlichen Sinne?

-

10.58. Frage

+

10.58. Frage

Kann man eine Klasse mit dem qualifizierten Namen A.B.C definieren? Wenn ja, wie? (Die Punkte sind Teil des Namens.)

@@ -2975,19 +3134,19 @@

11. Vererbung und Schnittstellen

-

11.1. Frage

+

11.1. Frage

Wenn Sie class A extends B sehen, wissen Sie, dass B was an A vererbt?

-

11.2. Frage

+

11.2. Frage

Wenn das hier geht Object getSelf() { return this; }, geht dann auch das Object getSelf() { return super; }?

-

11.3. Frage

+

11.3. Frage

Ordnen Sie (siehe letztes Beispiel) die Begriffe A oder B zu:

@@ -3018,25 +3177,25 @@

11.3. Frage

-

11.4. Frage

+

11.4. Frage

Wann ist die Implementierung eines eigenen Konstruktors in einer abgeleiteten Klasse nicht optional?

-

11.5. Frage

+

11.5. Frage

Wenn man eine Methode überschreibt, dann ist die Verwendung einer Annotation üblich. Welcher?

-

11.6. Frage

+

11.6. Frage

Eine Method überladen und sie überschreiben ist nicht dasselbe. Erkläre den Unterschied!

-

11.7. Frage

+

11.7. Frage

class A { int method(int i) { return i+1; } }
@@ -3048,49 +3207,49 @@ 

11.7. Frage

-

11.8. Frage

+

11.8. Frage

Mit welchem Schlüsselwort kann auf Members (Felder und Methoden) der Oberklasse zugegriffen werden?

-

11.9. Frage

+

11.9. Frage

Wie Sie wissen, ist jede Klasse abgeleitet von Object. Wenn Sie Code wie class A { } sehen, welche Ergänzungen daran nimmt der Compiler vermutlich vor?

-

11.10. Frage

+

11.10. Frage

Kann eine abstrakte Klasse einen Konstruktor haben?

-

11.11. Frage

+

11.11. Frage

-

Wenn ich etwas super(…​) machen will, wohin damit?

+

Wenn ich etwas super(…​) machen will, wohin damit?

-

11.12. Frage

+

11.12. Frage

Ich möchte gerne den Konstruktor der Ober-Oberklasse aufrufen. Wie geht das?

-

11.13. Frage

+

11.13. Frage

Hans deklariert eine Klasse als final, Hannah als abstract. Was hat Hans mit der Klasse vor, was Hannah?

-

11.14. Frage

+

11.14. Frage

Hannah deklariert eine Methode als final, Hans als abstract. Woran muss Hans denken, was Hannah egal sein kann? Und was kann Hans sein lassen, was Hannah wiederum tun muss?

-

11.15. Frage

+

11.15. Frage

class A { int x; }
@@ -3105,7 +3264,7 @@ 

11.15. Frage

-

11.16. Frage

+

11.16. Frage

class A {
@@ -3122,7 +3281,7 @@ 

11.16. Frage

-

11.17. Frage

+

11.17. Frage

for (Object o : objects) {
@@ -3136,7 +3295,7 @@ 

11.17. Frage

-

11.18. Frage

+

11.18. Frage

Object o = "abc";
@@ -3148,37 +3307,37 @@ 

11.18. Frage

-

11.19. Frage

+

11.19. Frage

-

Ein …​cast passiert implizit, wenn ein Objekt einer Variable von einem Supertyp zugewiesen wird. Ein …​cast muss dagegen explizit angegeben werden.

+

Ein …​cast passiert implizit, wenn ein Objekt einer Variable von einem Supertyp zugewiesen wird. Ein …​cast muss dagegen explizit angegeben werden.

-

11.20. Frage

+

11.20. Frage

Was bedeutet das Wort "Polymorphie" von seiner sprachlichen Herkunft?

-

11.21. Frage

+

11.21. Frage

Was gibt die Methode toString standardmäßig zurück?

-

11.22. Frage

+

11.22. Frage

Eine Klasse, die als class A {} deklariert wird, wird vom Compiler als class A extends Object {} aufgefasst. Wie ist das bei class A extends B {}? Ist eine Deklaration der Form class A extends B, Object {} oder class A extends B extends Object {} überhaupt erlaubt?

-

11.23. Frage

+

11.23. Frage

Die Aussage ist nicht ganz korrekt: "`getClass` gibt die Klasse einer Instanz zurück." Berichtigen Sie den Satz.

-

11.24. Frage

+

11.24. Frage

class Foo {
@@ -3198,13 +3357,13 @@ 

11.24. Frage

-

11.25. Frage

+

11.25. Frage

Wie sieht schematisch die Syntax einer Schnittstellen-Deklaration aus? [vereinfachte Variante, so wie Schnittstellen meist verwendet werden]

-

11.26. Frage

+

11.26. Frage

Welche Methodenkörper wären für die Methode hashCode der Klasse java.awt.Point zulässig und sinnvoll?

@@ -3238,7 +3397,7 @@

11.26. Frage

-

11.27. Frage

+

11.27. Frage

Was ist richtig?

@@ -3248,55 +3407,55 @@

11.27. Frage

-

11.28. Frage

+

11.28. Frage

Man kann mit Überladung keine zwei Methoden mit gleicher Signatur erstellen. Schließen Sie daraus, was der Begriff Signatur bedeutet.

-

11.29. Frage

+

11.29. Frage

Eine Schnittstellendeklaration mit genau einer abstrakten Methode heißen?

-

11.30. Frage

+

11.30. Frage

Wie können wir Java überprüfen lassen, ob eine Schnittstelle ein funktionales Interface ist?

-

11.31. Frage

+

11.31. Frage

Wie sieht schematisch die Syntax einer Methode in einer Schnittstelle aus, die mit einer Implementierung versehen ist?

-

11.32. Frage

+

11.32. Frage

Mit der Nutzung von implements im Kopf einer Klassendeklaration verpflichtet sich der Rumpf, was zu tun?

-

11.33. Frage

+

11.33. Frage

Welchen Nutzen haben Schnittstellen außer von einer Klasse eine Implementierungsverpflichtung einzufordern?

-

11.34. Frage

+

11.34. Frage

Karl sagt: "Wozu Schnittstellen, ich kann auch alles mit abstrakten Klassen machen, was Schnittstellen können." Was antwortet ihm Carla darauf?

-

11.35. Frage

+

11.35. Frage

Carla sagt: "Seitdem es default-Implementierungen bei Schnittstellen gibt, sind abstrakte Klassen überflüssig geworden." Was antwortet Karl darauf?

-

11.36. Frage

+

11.36. Frage

interface I { void foo(); }
@@ -3308,7 +3467,7 @@ 

11.36. Frage

-

11.37. Frage

+

11.37. Frage

abstract class A { void foo(); }
@@ -3319,13 +3478,13 @@

11.37. Frage

-

11.38. Frage

+

11.38. Frage

interface I { abstract void foo(); } Geht das? Macht das Sinn?

-

11.39. Frage

+

11.39. Frage

Die Frage ist angeregt durch den Code auf S.277 aus Kapitel 12.

@@ -3339,7 +3498,7 @@

11.39. Frage

-

11.40. Frage

+

11.40. Frage

Die Frage ist angeregt durch den Code auf S.277 aus Kapitel 12.

@@ -3371,55 +3530,55 @@

12. Generische Klassen und Methoden

-

12.1. Frage

+

12.1. Frage

Eine Klasse Container soll im Konstruktor einen beliebigen Typ als Inhalt (content) aufnehmen können. Schreiben Sie den Code ohne Object zu verwenden.

-

12.2. Frage

+

12.2. Frage

Aus unerfindlichen Gründen bietet die Java-API keine Tupel-Klasse an. Wie würde so eine Klasse aussehen, die zwei Variablen von beliebigem Typ enthalten kann?

-

12.3. Frage

+

12.3. Frage

Legen Sie eine neue ArrayList an, die ausschließlich aus Ganzzahlen besteht.

-

12.4. Frage

+

12.4. Frage

Was ist ein Typparameter?

-

12.5. Frage

+

12.5. Frage

Deklarieren und initialisieren Sie eine Variable a, die ausschließlich eine ArrayListe von boolschen Werten aufnehmen kann. Die Lösung muss so kurz wie möglich sein.

-

12.6. Frage

+

12.6. Frage

Wie lautet die Syntax für eine generische Methode?

-

12.7. Frage

+

12.7. Frage

-

Inwiefern hebelt die Definition <T> T giveMeWhatIWant() { …​ } das Typsystem von Java aus?

+

Inwiefern hebelt die Definition <T> T giveMeWhatIWant() { …​ } das Typsystem von Java aus?

-

12.8. Frage

+

12.8. Frage

Wie sieht schematisch die Syntax einer generischen Klasse aus? Reduzieren Sie die Syntax auf das Notwendigste.

-

12.9. Frage

+

12.9. Frage

class A<T> { void foo(T x) {} }
@@ -3431,7 +3590,7 @@ 

12.9. Frage

-

12.10. Frage

+

12.10. Frage

class Foo<T> {
@@ -3448,31 +3607,31 @@ 

12.10. Frage

-

12.11. Frage

+

12.11. Frage

class Bar<Blubber> { Blubber x; } Problem?

-

12.12. Frage

+

12.12. Frage

Man kann eine Klasse als MyClass<T extends Number> deklarieren, ist auch MyClass<T implements AutoCloseable> erlaubt?

-

12.13. Frage

+

12.13. Frage

-

class ICanHazGenerics<E extends Comparable> {} Und schon gibt’s was auf die Finger. Was ist der Grund?

+

class ICanHazGenerics<E extends Comparable> {} Und schon gibt’s was auf die Finger. Was ist der Grund?

-

12.14. Frage

+

12.14. Frage

class A<T extends B> {} Kann man A<B> value = new A<B>(); schreiben? Gilt also B extends B?

-

12.15. Frage

+

12.15. Frage

List<? extends Number> lst = new ArrayList<>();
@@ -3486,7 +3645,8 @@ 

12.15. Frage

-

13. Lambda-Ausdrücke

+

13. Lambda-Ausdrücke +

@@ -3509,19 +3669,19 @@

14. Collections

-

14.1. Frage

+

14.1. Frage

Welche besondere Bedeutung hat das Interface Iterable in Java?

-

14.2. Frage

+

14.2. Frage

Sie wollen ArrayList verwenden und dürfen nicht vergessen, welches Paket zu importieren?

-

14.3. Frage

+

14.3. Frage

Welche dieser Klassen implementiert das Interface Collection?

@@ -3543,13 +3703,13 @@

14.3. Frage

-

14.4. Frage

+

14.4. Frage

-

Auf S.295 oben heißt es: "…​ bietet sich der Einsatz einer List-Klasse an." Ist List eine Klasse?

+

Auf S.295 oben heißt es: "…​ bietet sich der Einsatz einer List-Klasse an." Ist List eine Klasse?

-

14.5. Frage

+

14.5. Frage

Set<Integer> s = new HashSet<Integer>();
@@ -3561,49 +3721,49 @@ 

14.5. Frage

-

14.6. Frage

+

14.6. Frage

Was bedeutet First in - First out?

-

14.7. Frage

+

14.7. Frage

Warum gibt es für eine Schnittstelle wie z.B. List mehrere Implementierungen wie z.B. ArrayList oder Stack? Woher soll ich wissen, welche Implementierung ich nutzen soll?

-

14.8. Frage

+

14.8. Frage

Den Interfaces Set, List, Stack, Queue und Map liegen anschauliche Vorstellungen zugrunde. Zeichnen Sie für jedes Interface ein Bild, was die zugrunde liegende Abstraktion illustriert. [Das soll helfen, sich zu erinnern, was die Schnittstellen tun.]

-

14.9. Frage

+

14.9. Frage

Warum kann man bei einer Collection die Variante der for-Schleife nutzen, die sich foreach-Schleife nennt?

-

14.10. Frage

+

14.10. Frage

Warum sollten Sie davon Abstand nehmen, `Collection`s selber zu implementieren?

-

14.11. Frage

+

14.11. Frage

Warum ist es oft attraktiv, wenn möglich, eine Schnittstelle statt eine Klasse als Typ einer Variablen anzugeben?

-

14.12. Frage

+

14.12. Frage

Warum ist es bei Collections manchmal sinnvoller, eine Variable mit der implementierenden Klasse statt dem Interface zu deklarieren.

-

14.13. Frage

+

14.13. Frage

List<Integer> lst = ...;
@@ -3617,13 +3777,13 @@ 

14.13. Frage

-

14.14. Frage

+

14.14. Frage

-

Herr Kofler benennt fünf statische Methoden der Klasse Collections, die nützlich sind — und oft gebraucht werden.

+

Herr Kofler benennt fünf statische Methoden der Klasse Collections, die nützlich sind — und oft gebraucht werden.

-

14.15. Frage

+

14.15. Frage

Dem Kopf der for-Schleife fehlt doch was, oder?

@@ -3635,103 +3795,103 @@

14.15. Frage

-

14.16. Frage

+

14.16. Frage

Listen Sie freisprachlich auf (jeweils ein Verb), welche Fähigkeiten eine Collection mit sich bringt.

-

14.17. Frage

+

14.17. Frage

Was ist der wesentliche Unterschied zwischen einer Liste (List) und einer Menge (Set)?

-

14.18. Frage

+

14.18. Frage

Set definiert add mit dem Rückgabetyp boolean. Warum?

-

14.19. Frage

+

14.19. Frage

In welcher Klasse finden Sie eine Methode um Listen zu sortieren?

-

14.20. Frage

+

14.20. Frage

Die Implementierung HashSet<T> erwartet, das der parametrisierte Typ zwei Methoden "sauber" implementiert hat? Welche sind das?

-

14.21. Frage

+

14.21. Frage

Der Unterschied zwischen einem LinkedHashSet und einem HashSet ist?

-

14.22. Frage

+

14.22. Frage

Was ist ein TreeSet?

-

14.23. Frage

+

14.23. Frage

-

Set<java.awt.Point> pset = new TreeSet<java.awt.Point>(); Schon verloren. Wie kommt’s?

+

Set<java.awt.Point> pset = new TreeSet<java.awt.Point>(); Schon verloren. Wie kommt’s?

-

14.24. Frage

+

14.24. Frage

Welchen Wert hat new ArrayList<Integer>(10).size()?

-

14.25. Frage

+

14.25. Frage

Wann sollte man der LinkedList den Vorrang vor ArrayList geben?

-

14.26. Frage

+

14.26. Frage

Was heißt "FIFO", was "LIFO"? (Das sind zwei ganz beliebte Abkürzungen.)

-

14.27. Frage

+

14.27. Frage

Wie sollte man am Besten eine Liste oder ein Set kopieren?

-

14.28. Frage

+

14.28. Frage

Wenn Sie über Schlüssel-Wert-Paare einer Map iterieren wollen (und beides brauchen), können Sie die Methode entrySet verwenden. Der Rückgabetyp dieser Methode ist Set<Map.Entry<K,V>>. Erklären Sie diesen Typ.

-

14.29. Frage

+

14.29. Frage

Ist Map.Entry als static deklariert oder nicht? Woran sieht man das?

-

14.30. Frage

+

14.30. Frage

Die Map-Schnittstelle gehört nicht zu den Collections. Was könnte der Grund dafür sein?

-

14.31. Frage

+

14.31. Frage

Die Map<K,V>-Schnittstelle hat zwei wichtige Methoden put und get. Was vermuten Sie, wie die Methodenköpfe zu den beiden Methoden aussehen?

-

14.32. Frage

+

14.32. Frage

class A { int x; A(int x) {this.x = x; } }
@@ -3745,37 +3905,37 @@ 

14.32. Frage

-

14.33. Frage

+

14.33. Frage

Zur Map<K,V>-Schnittstelle finden Sie boolean containsKey(Object key) deklariert. Komisch? Komisch! Was ist an der Deklaration überraschend?

-

14.34. Frage

+

14.34. Frage

Was unterscheidet eine HashMap von einer LinkedHashMap? Welche der beiden Implementierungen verwenden Sie im Regelfall?

-

14.35. Frage

+

14.35. Frage

Welche Probleme ergeben sich, wenn die Schlüssel einer Map veränderliche Objekte sind?

-

14.36. Frage

+

14.36. Frage

Wenn man über den Inhalt einer Map iterieren möchte gibt es drei Möglichkeiten an ein Objekt zu gelangen das Iterable implementiert. Diese Möglichkeiten entsprechen jeweils einer anderen Sicht auf den Inhalt der Map. Welche sind das?

-

14.37. Frage

+

14.37. Frage

Die Map-Methode put liefert einen Wert zurück. Weshalb ist Sie nicht einfach als void deklariert?

-

14.38. Frage

+

14.38. Frage

Angenommen, Sie haben eine Map namens book vom Typ HashMap<ISBN,Book>. Schreiben Sie den Kopf einer for-Schleife, die über alle ISBNs iteriert.

@@ -3789,25 +3949,25 @@

15. Dateien und Verzeichnisse

Tabelle 15.2, 15.3, 15.4 sind wieder ein Gold-Nuggets.

-

15.1. Frage

+

15.1. Frage

Handelt es sich bei java.io.IOException um eine geprüfte oder eine ungeprüfte Ausnahme? Weshalb?

-

15.2. Frage

+

15.2. Frage

Welches Konstrukt sollte man verwenden, um Ressourcen nach der Verwendung automatisch zu schließen?

-

15.3. Frage

+

15.3. Frage

Geben Sie zwei Beispiele an, warum die Arbeit mit dem Dateisystem zu Exceptions führen kann.

-

15.4. Frage

+

15.4. Frage

try (BufferedReader br = Files.newBufferedReader("test.txt", StandardCharsets.UTF_8)) {
@@ -3820,115 +3980,115 @@ 

15.4. Frage

-

15.5. Frage

+

15.5. Frage

Welches gedankliche Modell liegt einer Ressource zugrunde, so dass man die Arbeit mit ihr per close-Methode abschliesst? (edited)

-

15.6. Frage

+

15.6. Frage

Wofür brauchen Sie die Methode System.getProperty? Nennen Sie Beispiele für Eigenschaften, die Sie mit dieser Methode auslesen können.

-

15.7. Frage

+

15.7. Frage

Was liefert in der JShell jshell> System.getProperty("user.dir") zurück?

-

15.8. Frage

+

15.8. Frage

Sie bekommen einen geheimen Pfad geheim vom Typ Path. Prüfen Sie, ob es sich dabei um ein existierendes Verzeichnis handelt und erstellen Sie dann ein neues Path-Objekt, das auf die Datei test.jar im Unterverzeichnis lib dieses Verzeichnisses verweist.

-

15.9. Frage

+

15.9. Frage

Was ist ein absoluter Pfad?

-

15.10. Frage

+

15.10. Frage

Unter Windows entspricht System.getProperty("user.dir") welcher Umgebungsvariablen (aubrufbar in der Kommandozeile)?

-

15.11. Frage

+

15.11. Frage

Mit welchem Kommando in der Windows-Kommandozeile wechseln Sie das Verzeichnis? Wir schauen Sie sich den Inhalt eines Verzeichnisses an?

-

15.12. Frage

+

15.12. Frage

Sie haben wieder einen geheimen Pfad geheim, der auf eine Datei MyTest.java verweist. Sie wissen nicht, in welchem Verzeichnis sich die Datei befindet, aber sie wissen dass es dort auch eine Datei namens MyOtherTest.java gibt. Nennen Sie zwei Wege, wie sie einen Pfad zu dieser Datei erzeugen können.

-

15.13. Frage

+

15.13. Frage

Was ist eine Datei?

-

15.14. Frage

+

15.14. Frage

Was ist ein Verzeichnis?

-

15.15. Frage

+

15.15. Frage

Wie muss die Signatur der Methode Paths.get aussehen, wenn Sie beliebig viele Strings als Argumente akzeptiert?

-

15.16. Frage

+

15.16. Frage

Was ist ein Link?

-

15.17. Frage

+

15.17. Frage

Wie kopiert und wie verschiebt man eine Datei unter Windows von der Konsole aus?

-

15.18. Frage

+

15.18. Frage

Welche Methode der Klasse Files liefert einen Stream - newDirectoryStream oder list?

-

15.19. Frage

+

15.19. Frage

Schreiben Sie ein Programmfragment, das eine Textdatei zeilenweise einliest.

-

15.20. Frage

+

15.20. Frage

Schreiben Sie ein Programmfragment, das die Einträge eines String-Arrays als einzelne Zeilen in eine Textdatei schreibt.

-

15.21. Frage

+

15.21. Frage

Muss man immer Files.createFile zum Anlegen einer neuen Datei verwenden, oder geht das auch einfacher?

-

15.22. Frage

+

15.22. Frage

Was bedeuten die Zahlen in UTF-8, UTF-16 und UTF-32

-

15.23. Frage

+

15.23. Frage

Muss man immer Files.createDirectory bzw. Files.createDirectories aufrufen um ein neues Verzeichnis zu erstellen, oder geht das auch einfacher?

@@ -3936,13 +4096,15 @@

15.23. Frage

-

16. JavaFX

+

16. JavaFX +

-

17. Javadoc

+

17. Javadoc +

@@ -3951,13 +4113,13 @@

17. 18. Pakete und Bibliotheken

-

18.1. Frage

+

18.1. Frage

Ist es möglich, umfangreiche Java-Programme ohne eine einzige import-Anweisung zu schreiben?

-

18.2. Frage

+

18.2. Frage

import java.util.Arrays.sort;
@@ -3970,37 +4132,37 @@ 

18.2. Frage

-

18.3. Frage

+

18.3. Frage

Eine import-Anweisung muss immer wo stehen?

-

18.4. Frage

+

18.4. Frage

In den Fragen zu vorherigen Kapiteln haben wir immer java.awt.Point als Typ verwendet statt Point. Weshalb haben wir das gemacht und was muss man tun, um einfach direkt Point schreiben zu können?

-

18.5. Frage

+

18.5. Frage

Was kann man mit import importieren?

-

18.6. Frage

+

18.6. Frage

Was kann man mit import static importieren?

-

18.7. Frage

+

18.7. Frage

Warum ist import ein irreführender Name? Tatsächlich organisiert man über import nur ___räume!

-

18.8. Frage

+

18.8. Frage

import java.awt.Point;
@@ -4013,7 +4175,7 @@ 

18.8. Frage

-

18.9. Frage

+

18.9. Frage

import java.awt.*;
@@ -4025,67 +4187,67 @@ 

18.9. Frage

-

18.10. Frage

+

18.10. Frage

Was ist der Unterschied von import de.thm.mni; und import de.thm.mni.*;?

-

18.11. Frage

+

18.11. Frage

Welches Paket ist standardmäßig in Java SE importiert?

-

18.12. Frage

+

18.12. Frage

import static java.awt.Color.* Jetzt darf ich Color c = new Color(0,0,0); deklarieren, richtig?

-

18.13. Frage

+

18.13. Frage

Wozu braucht man auf S.372 oben am Anfang die Codezeile import java.awt.Color; wenn unten darunter import static java.awt.Color.*; steht?

-

18.14. Frage

+

18.14. Frage

Was muss man tun, damit man die Methoden der Klasse Math direkt ohne den Anteil Math. in seinem Code verwenden kann?

-

18.15. Frage

+

18.15. Frage

Kann ich die Klasse java.awt.Color und eine Klasse de.thm.mni.Color zusammen im gleichen Stück Code verwenden?

-

18.16. Frage

+

18.16. Frage

Man kann import static java.lang.System.out; schreiben. Dann geht doch auch import static java.lang.System.out.println;, oder?

-

18.17. Frage

+

18.17. Frage

Was ist der Unterschied von import de.thm.mni.OOP; zu import static de.thm.mni.OOP;

-

18.18. Frage

+

18.18. Frage

Sie schreiben ein Programm im Fachbereich MNI der THM im Kurs OOP. Sie definieren ein Paket für Ihr Programm. Wie sollte der Paketname anfangen?

-

18.19. Frage

+

18.19. Frage

Die Option -cp bei java bzw. javac steht für welches Java-Konzept?

-

18.20. Frage

+

18.20. Frage

Welche Argumente müssen sie an java übergeben, wenn sie eine eigene Klasse main.Main ausführen wollen, die das Paket somePackage.jar verwendet? In welchen Ordnern sucht die JVM dabei nach der .class-Datei von main.Main und der Datei somePackage.jar?

@@ -4102,4 +4264,4 @@

18.20. Frage

- \ No newline at end of file + diff --git a/makefile b/makefile index c4a3c2d..a3af299 100644 --- a/makefile +++ b/makefile @@ -2,6 +2,7 @@ ADOC = asciidoctor PDF = -r asciidoctor-pdf -b pdf SOL = -a solution NSOL = -a solution! +QaA = -r asciidoctor-question # Makros: # $< -- vollständiger Name der Quelle @@ -9,9 +10,9 @@ NSOL = -a solution! # $* -- Name des Ziels ohne Endung %.html: %.adoc Fragen/*.adoc - $(ADOC) $(SOL)! $< -o $@ - $(ADOC) $(SOL) $< -o $*.Antworten.html + $(ADOC) $(SOL)! $(QaA) $< -o $@ + $(ADOC) $(SOL) $(QaA) $< -o $*.Antworten.html %.pdf: %.adoc Fragen/*.adoc - $(ADOC) $(PDF) $(SOL)! $< -o $@ - $(ADOC) $(PDF) $(SOL) $< -o $*.Antworten.pdf + $(ADOC) $(PDF) $(SOL)! $(QaA) $< -o $@ + $(ADOC) $(PDF) $(SOL) $(QaA) $< -o $*.Antworten.pdf