Fragen zu Typen, Operationen und Zuweisungen
Fragen zu Typen, Operationen und Zuweisungen javafrage Thu, 09/06/2018 - 18:09- 1909 views
1. Zuweisungen mit dem Datentyp char
1. Zuweisungen mit dem Datentyp charWelche der Zuweisungen der Typen short und char werden nicht vom Übersetzer akzeptiert?
public class CharTest {
public static void main(String[] args) {
short s1 = 70;
short s2 = 0;;
char c = 'a';
System.out.println(c);
c++;
System.out.println(c);
c = s1;
System.out.println(c);
c = (char)s1;
System.out.println(c);
c = (char)(c + s1);
System.out.println(c);
s2= c;
System.out.println(s2);
s2= (short)c;
System.out.println(s2);
}
}
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
4 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
- 6580 views
2. Syntax von Zuweisungen
2. Syntax von ZuweisungenWelche der folgenden 10 Zuweisungen haben eine korrekte (richtige) bzw. inkorrekte (falsche) Syntax?
Was stimmt an den inkorrekten Zuweisungen nicht?
Nr. | Zuweisung | Bewertung (richtig, falsch) | Erklärung (nur bei falscher Zuweisung) |
---|---|---|---|
int a; int b; int c; |
richtig | Die Variablen sind alle im gleichen Block deklariert und mit dem Wert 0 initialisiert. | |
1 |
a = 4; |
||
2 |
a = b; |
||
3 |
b := a; |
||
4 |
19 = b; |
||
5 |
a = a+c; |
||
6 |
a = 2*c |
||
7 |
a = a*a; |
||
8 |
a = 4; |
||
9 |
a,c = b; |
||
10 |
c = c; |
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
4 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu 1.: Zuweisungen mit dem Datentyp char
char und short sind Datenbehälter der gleichen Größe (16 Bit). Auf beiden sind die arithmetischen Operationen definiert. Man darf sie aber aus Sicherheitsgründen nicht ohne Cast (Typkonversion) aufeinander zuweisen.
public class CharTest {
public static void main(String[] args) {
short s1 = 70;
short s2 = 0;
char c = 'a';
System.out.println(c);
c++;
System.out.println(c);
//c = s1;
System.out.println(c);
c = (char)s1;
System.out.println(c);
c = (char)(c + s1);
System.out.println(c);
//s2= c;
System.out.println(s2);
s2= (short)c;
System.out.println(s2);
}
}
- 5465 views
3. Syntax von Bezeichnern
3. Syntax von BezeichnernMit welchen Zeichen dürfen in Java Namen (Identifier) von Variablen beginnen?
Achten Sie auf Groß- und Kleinschreibung!
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 2.: Syntax von Zuweisungen
Nr. | Zuweisung | Bewertung (richtig, falsch) | Erklärung (nur bei falscher Zuweisung) |
---|---|---|---|
int a; int b; int c; |
richtig | Die Variablen sind alle im gleichen Block deklariert und mit dem Wert 0 initialisiert. | |
1 |
a = 4; |
richtig | |
2 |
a = b; |
richtig | |
3 |
b := a; |
falsch | Der Zuweisungsoperator in Java ist „=“ |
4 |
19 = b; |
falsch | Man kann einem konstanten Literal keinen Wert zuweisen. |
5 |
a = a+c; |
richtig | |
6 |
a = 2*c |
falsch | Semikolon fehlt |
7 |
a = a*a; |
richtig | |
8 |
a = 4; |
richtig | |
9 |
a,c = b; |
falsch | Man kann nur einer Variablen einen Wert zuweisen |
10 |
c = c; |
richtig |
- 5226 views
4. Nicht erlaubte Namen von Bezeichnern
4. Nicht erlaubte Namen von BezeichnernNennen Sie 10 Namen (Identifier) die Sie nicht in Java verwenden dürfen, obwohl Sie von der Zeichenfolge her, gültig aufgebaute Namen sind.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 3.: Syntax von Bezeichnern
„_“, „$“ oder Buchstaben
- 5140 views
5 Vererbung, Konstruktoren, Schlüsselworte
5 Vererbung, Konstruktoren, SchlüsselworteGegeben seien die beiden Klassen Unterklasse und Oberklasse:
public class Oberklasse { public int wert; public Oberklasse(int a) { wert=a; System.out.println("K-Oberklasse: "+ wert); a++; } // Ende Konstruktor Oberklasse ** Hier fehlte ein CR public static void main(String[] args) { Oberklasse ok = new Oberklasse(10); ok.wert++; System.out.println(ok.wert); } // Ende main } // Ende Klasse Oberklasse public class Unterklasse extends Oberklasse { public Unterklasse (int e, int f) { super(e+f); System.out.println("K-Unterklasse: "+ wert); wert = wert + e +f; System.out.println("K-Unterklasse: "+ wert); } // Ende Konstruktor Unterklasse public static void main(String[] args) { System.out.println("ok"); Oberklasse ok = new Oberklasse(10); ok.wert++; System.out.println(ok.wert); System.out.println("uk"); Unterklasse uk = new Unterklasse(2,3); ok.wert--; System.out.println(ok.wert); } // Ende main } // Ende Klasse Unterklasse
a.) Schreiben Sie die Konsolenausgaben auf, die das Programm schreibt wenn es mit dem Befehl java Unterklasse gestartet wird.
b.) Unterlinieren Sie alle Schlüsselworte der Sprache Java
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 8+3 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 4.: Nicht erlaubte Namen von Bezeichnern
Schlüsselwörter und die Literale true, false, null können nicht für Bezeichnernamen verwendet werden. Alle Antworten mit 10 Beispielen von Schlüsselwörtern sind korrekt.
- 5633 views
Frage zu 5
Macht es Sinn, diese Frage in Kapitel 2 zu packen, wenn hier noch nicht klar ist, was Vererbung überhaupt ist?
- Log in to post comments
6. Deklaration und Zuweisung von Variablen
6. Deklaration und Zuweisung von VariablenDeklarieren Sie eine Variable mit dem Namen x mit einem Typ der die Verwaltung von ganzen Zahlen mit 32 Bit erlaubt. Achten Sie auf die korrekte Syntax.
- Deklarieren Sie die Variable in einem Befehl und weisen Sie der Variablen den Wert 17 in einem zweiten Befehl zu.
- Deklarieren Sie die Variable und weisen Ihr den Wert 17 in einem integrierten Befehl zu.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 5.: Vererbung, Konstruktoren, Schlüsselwörter
public class Oberklasse { public int wert; public Oberklasse(int a) { wert=a; System.out.println("K-Oberklasse: "+ wert); a++; } // Ende Konstruktor Oberklasse ** Hier fehlte ein CR public static void main(String[] args) { Oberklasse ok = new Oberklasse(10); ok.wert++; System.out.println(ok.wert); } // Ende main } // Ende Klasse Oberklasse public class Unterklasse extends Oberklasse { public Unterklasse (int e, int f) { super(e+f); System.out.println("K-Unterklasse: "+ wert); wert = wert + e +f; System.out.println("K-Unterklasse: "+ wert); } // Ende Konstruktor Unterklasse public static void main(String[] args) { System.out.println("ok"); Oberklasse ok = new Oberklasse(10); ok.wert++; System.out.println(ok.wert); System.out.println("uk"); Unterklasse uk = new Unterklasse(2,3); ok.wert--; System.out.println(ok.wert); } // Ende main } // Ende Klasse Unterklasse
a.) Die Konsolenausgaben
ok K-Oberklasse: 10 11 uk K-Oberklasse: 5 K-Unterklasse: 5 K-Unterklasse: 10 10
b.) Unterlinieren Sie alle Schlüsselworte der Sprache Java: siehe oben
- 4708 views
7. Beispiele impliziter und expliziter Typkonvertierungen
7. Beispiele impliziter und expliziter TypkonvertierungenGeben Sie jeweils ein Beispiel für implizite und notwendige explizite Typkonvertierungen (Casts) bei einer Zuweisung. Nutzen Sie die vorgegebenen Variablen, weisen Sie sie aufeinander zu:
int ii = -1000000; long ll = -100L; double db = 3.13;
- Beispiel einer Zuweisung mit einer impliziten Typkonvertierung
- Beispiel einer Zuweisung mit einer notwendigen, expliziten Typkonvertierung
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 6.: Deklaration und Zuweisung von Variablen
-
int x; x = 17;
-
int x = 17;
- 5236 views
8. Unterschiede zwischen char und short Typen
8. Unterschiede zwischen char und short Typen
char und short sind Datenbehälter die 16 Bit große Zahlen verwalten.
Warum ist eine explizite Typkonversion (Cast) bei Zuweisungen von Variablen dieser beiden Typen notwendig?
Beispiel:
short sh = 1;; char ch = 1; ch = (char)sh; sh = (short)ch;
Geben Sie ein kurze Erklärung.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 7.: Beispiele impliziter und expliziter Typkonvertierungen
Beispiel einer Zuweisung mit einer impliziten Typkonvertierung:
ll = ii;
Beispiel einer Zuweisung mit einer notwendigen, expliziten Typkonvertierung:
ii = (int) ll;
- 4750 views
9. Bedingt auswertende Operatoren
9. Bedingt auswertende OperatorenNennen Sie zwei bedingt auswertende Operatoren und nennen Sie einen Verwendungszweck.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 8.: Unterschiede zwischen char und short Typen
char repräsentiert Zeichen und hat einen Wertebereich von 0 bis 216-1. short hat einen Wertebereich von -215 bis 215-1. Beide Wertebereiche überlappen sich nur zur Hälfte. Bei Zuweisungen im nicht überlappenden Bereich kommt es zu Werten die im Zieltyp eine andere Bedeutung haben. Hierdurch können unbemerkt Rechenfehler entstehen.
- 4859 views
10. long versus double
10. long versus doubleDie Javatypen double und long belegen jeweils 64 Bit Speicherplatz. Nennen Sie zwei Anwendungsfälle in den man den Typ double anstatt long verwenden sollte.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 9.: Bedingt auswertende Operatoren
|| und &&. Sie erlauben den Abbruch eines boolschen Ausdrucks wenn das Ergebnis schon feststeht. Die hinteren Teile des Ausdrucks werden dann nicht mehr ausgewertet. Man kann hierdurch unsichere Operationen, wie die Benutzung eines Zeigers, vor dem auslösen einer Ausnahme schützen. Man wertet im ersten Teil des Terms den potentiellen Fehlerfall, hier ein Nullzeiger, aus und fährt nur fort wenn der zweite Teil des Terms sicher ausgewertet werden kann.
- 3923 views
11. Automatische Typkonversionen bei Termen (double, long)
11. Automatische Typkonversionen bei Termen (double, long)Sie addieren eine Variable a von Type double zu einer Variablen b vom Typ long. Was ist der Typ des Ergebnis dieser Addition?
Tragen Sie den Typ den Java, ohne Casting, nach der Addition für die Variable c erwartet ein.
Geben Sie eine kurze Erklärung für Ihre Wahl:
double a = 24.3D; long b = 17L; ? c = a + b;
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 10.: long versus double
- Man sollte den Typ double benutzen wenn man erwartet, dass der Wertebereich den eines long Typen überschritten wird.
- Man sollte den Typ double benutzen wenn man Werte mit Nachkommastellen verwalten muss
- 3297 views
12. Typkonversionen bei Termen (int, long)
12. Typkonversionen bei Termen (int, long)Addieren Sie zwei sehr große Variablen d und e vom Typ int.
Das Ergebnis wird in der Variable f vom Type long gespeichert. f hat einen größeren Wertbereich damit das Ergebnis korrekt verwaltet werden kann.
Implementieren Sie die Addition im Code unten so, dass in f ein korrektes Ergebnis abgelegt wird.
int d= Integer.MAX_VALUE-2; int e= Integer.MAX_VALUE-3; long f = ; // hier implementieren
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 11.: Automatische Typkonversionen bei Termen (double, long)
double a = 24.3D; long b = 17L; double c = a +b;
Bei arithmetischen Termen wird die Operation immer im Wertebereich des größten Operanden durchgeführt. Diese ist double.
- 3331 views
13. Typen, Arithmetik und Wertebereiche
13. Typen, Arithmetik und WertebereicheWas würde geschehen wenn Sie die Summe der beiden Variablen d und e, wie folgt berechnen und in in der Variable g speichern würden?
int d= Integer.MAX_VALUE-2; int e= Integer.MAX_VALUE-3; int g = d + e;
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 1.78: Typkonversionen bei Termen (int, long)
int d= Integer.MAX_VALUE-2; int e= Integer.MAX_VALUE-3;
long f = (long)d + (long)e;
- 3487 views
fehlendes Semikolon
Hallo,
fehlt bei der Antwort zu Frage 1.78: Typkonversionen bei Termen (int,long) nicht ein Semikolon hinter der zweiten Zeile?
- Log in to post comments
14. int versus float
14. int versus floatDie Javatypen float und int belegen jeweils 32 Bit Speicherplatz.
Nennen Sie zwei Anwendungsfälle in den man den Typ float anstatt int verwenden sollte.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 13: Typen, Arithmetik und Wertebereiche
Bei der Addition dieser beiden großen Zahlen kommt es jenseits des positiven Wertebereichs zu einem Überlauf. Das Ergebnis ist negativ (-7 umgenau zu sein). Für Java ist das eine reguläre Operation es wird kein Fehler berichtet obwohl das Ergebnis nicht korrekt ist. Die ist ein Kompromis in der Java Spezifikation um eine extrem effiziente Arithmetik implementieren zu können.
- 2912 views
15. char versus short, Beispiele
15. char versus short, Beispielechar und short sind, obwohl sind unterschiedlich eingesetzt werden, 16 Bit Zahlentypen in Java.
Hilfe: 215=32768
- Nennen sie eine Zahl die man mit short Typen darstellen kann und nicht dem char Typ.
- Nennen Sie eine Zahl die man dem char Typ darstellen kann und nicht mit dem short Typ.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 14. : int versus float
- Man sollte float benutzen wenn man erwartet, dass der Wertebereich den eines int Typen übertrifft.
- Man sollte float benutzen wenn man Werte mit Nachkommastellen verwalten muss
- 3093 views
16. Erste ganze Zahl größer Null die man noch mit int darstellen kann aber nicht mit float Typen
16. Erste ganze Zahl größer Null die man noch mit int darstellen kann aber nicht mit float TypenWas ist die erste ganze Zahl größer Null, die man noch mit dem Typ int darstellen kann aber nicht mit dem Typ float?
Geben Sie eine Erklärung die auf dem Zahlenformat der beiden Typen basiert.
Schreiben Sie ein Programm welches diesen Wert berechnet.
Diese Frage ist für Klausuren etwas zu schwer...
Niveau | 1 |
Schwierigkeitsgrad | schwer |
Zeit |
10 Minuten (Herleitung) |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 15. char versus short
- Im Wertebereich vom short aber nicht im Wertebereich von char : -1
- Im Wertebereich von char aber nicht im Wertebereich short: (215 -1) + 1 = 215 = 32768
- Herleitung: Größte Wert von short: 215-1. Dann noch mindestens 1 addieren.
- 5486 views
17. Schlüsselwörter
17. SchlüsselwörterNennen Sie soviele Java Schlüsselworte wie möglich!
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
3 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 16.: Erste ganze Zahl größer Null die man noch mit int darstellen kann aber nicht mit float Typen
16777217
Erklärung
Der Typ int kann alle ganzen Zahlen bis 231-1 darstellen (Siehe)
Der Typ float kann alle ganzen Zahlen darstellen solange der Exponent 20 ist. Wird der Exponent zu 21, kann der Typ float nur noch jede zweite Zahl genau darstellen.
Der größte Wert den man im Typ float in der Mantisse beschreiben kann ist hat alle 23 Bits gesetzt. Der Wert is also 224-1=16777215.
float kann also noch (224-1)*20 = 16777215 darstellen.
Der nächste Wert kann float auch noch darstellen: 224=16777216. Hier wird ein größerer Exponent verwendet und eine 1 steht in der Mantisse.
Die nächste Zahl 16777217 kann aber von float nicht mehr dargestellt werden. Der Exponent muss größer als 20 sein, da die Mantisse nicht mehr ausreicht. Ist der Exponent aber 21 kann man nur noch jede zweite Zahl genau repräsentieren. Ist der Exponent 22, kann man nur noch jede vierte Zahl genau repräsentieren.
Eine mögliche Implementierung
package javafrage;public class IntVersusFloat {
public static void main(String[] args) {
int i=0;
float j=0.0f;
while (i==(int)j) {
j++;
i++;
}
System.out.println("i: "+i+", j: "+j);
double k = (int)Math.pow(2, 24);
System.out.println(k);
}
}
- 4516 views
18. Typkonversion: Casten
18. Typkonversion: CastenWas geschieht mit dem Ergebnis einer Zuweisung die von den Basistypen her unsicher ist und mit einem „Cast“ erzwungen wird...
- … im günstigsten Fall?
- … im ungünstigen Fall?
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 4 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 17 : Schlüsselwörter
Java hat 50 Schlüsselwörter (Siehe)
Wertung
- 20 und mehr: Ausreichend für den Kurs
- 40 und mehr: Gurulevel
- 50: Sie sind wohl James Gosling?
- 4837 views
19. Sichere Zuweisungen
19. Sichere ZuweisungenNicht alle Basistypen können wegen ihrer unteschiedlichen Wertebereiche sicher aufeinander zugewiesen werden. Markieren alle sicheren Zuweisungen mit einem Kreuz in der dritten Spalte. Tragen Sie für die unsicheren Zuweisungen eine Zuweisung mit einer Typkonversion(Cast) so ein, so das der Übersetzer die unsichere Zeile ohne Fehler übersetzt.
Zuweisung | Erlaubt und sicher | Nicht erlaubt und unsicher (Zuweisung mit Typkonversion) |
|
---|---|---|---|
Deklaration der Variablen. Belegung sei unbekannt und nicht die Standardinitialisierung |
byte by; short sh; char ch; int in; long lo; ... |
Nichts in diese Zelle eintragen | Nichts in diese Zelle eintragen |
Beispiel a.) |
by = lo; |
by = (byte) lo; | |
Beispiel b.) |
by = by; |
X | |
1. |
lo = lo; |
||
2. |
lo = in; |
||
3. |
lo = sh; |
||
4. |
lo = by; |
||
5. |
sh = lo; |
||
6. |
sh = in; |
||
7. |
sh = ch; |
||
8. |
sh = by; |
||
9. |
in = lo; |
||
10. |
in = in; |
||
11. |
in = sh; |
||
12. |
in = by; |
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
6 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 18: Typkonversion, Casten
- … im günstigsten Fall?
- Nichts. Der zugewiesene Wert ist der korrekte Wert
- … im ungünstigen Fall?
- Der zugewiesene Wert ist kleiner, da Bits die ausserhalb des Wertebereichs des kleineren Typs liegen ohne Fehlermeldung abgeschnitten werden.
Antwort zu Frage 19: Sichere Zuweisungen
Zuweisung | Erlaubt und sicher | Nicht erlaubt und unsicher (Zuweisung mit Typkonversion) |
|
---|---|---|---|
Deklaration der Variablen. Belegung sei unbekannt und nicht die Standardinitialisierung |
byte by; short sh; char ch; int in; long lo; ... |
Nichts in diese Zelle eintragen | Nichts in diese Zelle eintragen |
Beispiel a.) |
by = lo; |
by = (byte) lo; |
|
Beispiel b.) |
by = by; |
X | |
1. |
lo = lo; |
X | |
2. |
lo = in; |
X | |
3. |
lo = sh; |
X | |
4. |
lo = by; |
X | |
5. |
sh = lo; |
sh=(short)lo; |
|
6. |
sh = in; |
sh=(short)in; |
|
7. |
sh = ch; |
sh=(short)ch; |
|
8. |
sh = by; |
X | |
9. |
in = lo; |
in=(int)lo; |
|
10. |
in = in; |
X | |
11. |
in = sh; |
X | |
12. |
in = by; |
X |
- 3962 views