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 verwenden?
gewinn
Gewinn
_private_i
i
$i
_i
Welchen Namen würden Sie für eine Konstante 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";
Wie viele 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?
(long) ((float) (Long.MAX_VALUE - Integer.MAX_VALUE)) == Long.MAX_VALUE;
Ist die Länge eines Strings gleich der Anzahl sichtbarer Zeichen?
Wie fügen Sie in einen String ein Anführungszeichen ein?
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 in Java?
(D. h. wenn Sie eine Restwertberechnung in Java durchführen wollen.)
Wie sieht der ternäre Operator in Java aus?
Welchen Wert haben die folgenden Ausdrücke?
x
hat vor der jeweiligen Auswertung den Wert 5.
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 >> 2
Was stellt ein Block in Hinblick auf eine Variable dar?
Können while
- und for
-Schleifen ineinander umgewandelt werden?
Wie unterscheidet sich eine do
-while
- von einer while
-Schleife?
Schleifen und Variablen - wie ist die Ausgabe auf der JShell?
1int i = 0;
2for (int i = 0; i < 10; i++) {
3if (i == 5) {
4break;
5}
6}
7System.out.println(i);
Schleife mit break - wie ist die Ausgabe?
1int i = 0;
2for (; i < 10; i++) {
3if (i == 5) {
4break;
5}
6}
7System.out.println(i);
Ganz einfache Schleife - wie ist die Ausgabe?
1int i = 10;
2for (; i < 10; i++) {
3System.out.println(i);
4}
Schleife mit continue - wie ist die Ausgabe?
1int i = 0;
2for (; i < 10; i++) {
3if (i % 2 == 0) {
4continue;
5}
6System.out.println(i);
7}
Verschachteltet Schleifen - wie ist die Ausgabe?
1int i = 0;
2outer : for (; i < 10; i++) {
3if (i % 2 == 0)
4continue;
5System.out.println(i);
6for (int j = 1; j < 10; j++) {
7if (j % 3 == 0)
8continue outer;
9System.out.println(i + " " + j);
10}
11}
12System.out.println(i);
Verschachteltet Schleifen - wie ist die Ausgabe?
1outer : for (int i = 0; i < 10; i++) {
2if (i % 2 == 0) {
3i = 10;
4continue outer;
5}
6System.out.println(i);
7for (int j = 1; j < 10; j++) {
8if (j % 3 != i % 5)
9break;
10System.out.println(i + " " + j);
11} }
Rekursive Funktion
1int f(int n) {
2if (n == 0) return 0; return n + f(n-1);
3}
Was berechnet diese Funktion?
Ist diese Funktion effizient?
Ist eine Lösung mit for-Schleife besser?
Funktion mit „Tail-Call“
1/* private */ int f(int n, int sum) {
2if (n == 0) return sum; return f(n-1,n+sum);
3}
4int f(int n) { return f(n,0); }
Was berechnet diese Funktion?
Ist diese Funktion effizient(er)?
Wie werden Parameter übergeben?
Wie bewerten Sie folgende Kommentierung?
1/**
2* Testet ob eine Zahl eine Primzahl ist.
3*
4* Die Laufzeit ist O(n/4).
5*
6* @param n Eine positive ganze Zahl.
7* @return true, wenn n eine Primzahl ist, sonst false.
8*/
9boolean isPrim(int n) {
10...
11}
Ist der Kommentar ausreichend?
1/**
2* Computes the absolute value of the argument.
3*
4* @param a - the argument whose absolute value is to be
5* determined
6* @return the absolute value of the argument.
7*/
8double abs(double a) { ... }
Ist die Kommentierung hier ausreichend?
1/**
2* Returns the absolute value of an int value.
3* If the argument is not negative, the argument is returned.
4* If the argument is negative, the negation of the argument
5* is returned.
6*
7* @param a - the argument whose absolute value is to be
8* determined
9* @return the absolute value of the argument.
10*/
11long abs(long a) { ... }
Sind Java Assertions (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 des Programms
1int width = 20;
2int height = 10;
3for (int i = 0; i < width; i++) print("-");
4println("");
5for (int i = 0; i < height - 2; i++) {
6print("|");
7for (int j = 0; j < width - 2; j++) print(" ");
8println("|");
9}
10for (int i = 0; i < width; i++) {
11print("-");
12}
13println("");