michael.eichberg@dhbw.de, Raum 149B
1.1
Welche primitiven Datentypen kennen wir?
Was sind Literale?
Welche der folgenden Bezeichner sind für Variablen gültig?
fooBar
BarFoo
_fooBar
1fooBar
fooBar1
fooBar!
$fooBar
$_BarFoo
Welche der folgenden Bezeichner sollte man für eine Variable verwenden?
gewinn
Gewinn
_private_i
i
$i
_i
Sie definieren eine Konstante, welchen Namen würden Sie verwenden?
ISOLAENDERCODE
ISO_LÄNDERCODE
ISO_LAENDERCODE
ISO_Ländercode
ISO_Laendercode
iso_Laendercode
Welchen Typ hat die Variable x in folgendem Code?
var x = 1;
var x = 1.0;
var x = '1';
var x = 1f;
var x = 2F;
var x = "x";
Wieviele Bits hat ein int?
8
16
24
32
40
48
Wie ist der Wertebereich von byte?
0 bis 255
-128 bis 128
-128 bis 127
-127 bis 127
-127 bis 128
Was passiert bei den folgenden Typumwandlungen?
int i = 42; byte b = (byte) i;
int i = 255; byte b = (byte) i;
int i = 256; byte b = (byte) i;
Warum ist der folgende Ausdruck wahr obwohl dieser mathematisch falsch ist?
(long) ((float) (Long.MAX_VALUE - Integer.MAX_VALUE)) == Long.MAX_VALUE;
Ist die Länge eines Strings gleich der Anzahl *sichtbarer* Zeichen?
Sie möchten in einem String ein Anführungszeichen verwenden. Wie machen Sie das?
Muss ich bei der Variablendeklaration den Typ explizit angeben?
Wie deklariert man eine Konstante? Sollte man Werte, die man nicht ändern möchte immer als Konstanten deklarieren?
Wie ist der Operator für die Modulorechnung (d. h. Restwertberechnung) in Java?
Wie sieht der ternäre Operator in Java aus?
Welchen Wert haben die folgenden Ausdrücke, wenn x vor der jeweiligen Auswertung den Wert 5 hat?
x++
++x
x += 1
x = (x = x - 2 ) + 3 * 4
x = x = x - 2 + 3 * 4
(x = (x = x - 2 ) + 3) * 4
x >= 5 || 2 / (x - 5) == 0
x >= 5 | 2 / (x - 5) == 0
x << 1
x << 1 >> 2
Was stellt ein Block in Hinblick auf eine Variable dar?
Eine while-Schleife und eine for-Schleife können immer ineinander umgewandelt werden?
In welcher Weise unterscheidet sich eine do-while-Schleife von einer while-Schleife?
Schleifen und Variablen - wie ist die Ausgabe auf der *JShell*?
int i = 0;
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
}
System.out.println(i);
Schleife mit break - wie ist die Ausgabe?
int i = 0;
for (; i < 10; i++) {
if (i == 5) {
break;
}
}
System.out.println(i);
Ganz einfache Schleife - wie ist die Ausgabe?
int i = 10;
for (; i < 10; i++) {
System.out.println(i);
}
Schleife mit continue - wie ist die Ausgabe?
int i = 0;
for (; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
}
Verschachteltet Schleifen - wie ist die Ausgabe?
int i = 0;
outer : for (; i < 10; i++) {
if (i % 2 == 0) {
continue;
}
System.out.println(i);
for (int j = 1; j < 10; j++) {
if (j % 3 == 0) {
continue outer;
}
System.out.println(i + " " + j);
}
}
System.out.println(i);
Verschachteltet Schleifen - wie ist die Ausgabe?
outer : for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
i = 10;
continue outer;
}
System.out.println(i);
for (int j = 1; j < 10; j++) {
if (j % 3 != i % 5) {
break;
}
System.out.println(i + " " + j);
}
}
Rekursive Funktion
Was berechnet diese Funktion?
Ist diese Funktion effizient?
Ist eine Lösung mit for-Schleife besser?
int f(int n) {
if (n == 0) return 0; return n + f(n-1);
}
Funktion mit "Tail-Call"
Was berechnet diese Funktion?
Ist diese Funktion effizient(er)?
/* private */ int f(int n, int sum) {
if (n == 0) return sum; return f(n-1,n+sum);
}
int f(int n) { return f(n,0); }
Wie werden Parameter übergeben?
Wie bewerten Sie folgende Kommentierung?
/**
* Testet ob eine Zahl eine Primzahl ist.
*
* Die Laufzeit ist O(n/4).
*
* @param n Eine positive ganze Zahl.
* @return true, wenn n eine Primzahl ist, sonst false.
*/
boolean isPrim(int n) {
...
}
Ist der Kommentar ausreichend?
/**
* Computes the absolute value of the argument.
*
* @param a - the argument whose absolute value is to be determined
* @return the absolute value of the argument.
*/
double abs(double a) { ... }
Ist die Kommentierung hier ausreichend?
/**
* Returns the absolute value of an int value.
* If the argument is not negative, the argument is returned.
* If the argument is negative, the negation of the argument is returned.
*
* @param a - the argument whose absolute value is to be determined
* @return the absolute value of the argument.
*/
long abs(long a) { ... }
Sind Java Assertions (:java:`assert`) in Java immer aktiv?
Wofür sollten Assertions verwendet werden?
Zur Validierung von Eingabeparametern?
Zur Validierung von Rückgabewerten?
Zur Validierung von internen Invarianten?
Beschreiben Sie die Ausgabe:
int width = 20;
int height = 10;
for (int i = 0; i < width; i++) print("-");
println("");
for (int i = 0; i < height - 2; i++) {
print("|");
for (int j = 0; j < width - 2; j++) print(" ");
println("|");
}
for (int i = 0; i < width; i++) {
print("-");
}
println("");