instanceof und Casts

This commit is contained in:
Sebastian Eidecker
2019-11-14 21:39:21 +01:00
parent 53a5fea3da
commit 6e2c77ab31
4 changed files with 155 additions and 3 deletions

View File

@@ -0,0 +1,39 @@
package org.eidecker.oca8lernen.general;
import java.util.concurrent.ExecutionException;
import org.junit.jupiter.api.Test;
/**
* Final deklarierte Felder müssen im Konstruktor oder einem Initialisierungsblock gesetzt werden.
* Die Standardwerte genügen nicht.
*/
public class Final {
{
String s = "s";
finalString = "Hallo";
if (false) throw new RuntimeException();
testIfBloecke();
}
{
String s = "s";
}
final String finalString;
public Final() {
}
@Test
public void testIfBloecke() {
if (true)
System.out.println("Eins");
if (false)
System.out.println("Zwei");
else
System.out.printf("Drei");
}
}

View File

@@ -0,0 +1,84 @@
package org.eidecker.oca8lernen.general;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.lang.reflect.Array;
import org.junit.jupiter.api.Test;
public class InstanceOfUndCast {
@Test
public void testInstanceof() {
// Instanceof außerhalb Typhierarchie nicht möglich
// boolean b = "Hallo" instanceof InstanceOfUndCast;
assertEquals(false, null instanceof InstanceOfUndCast);
String s;
// Nicht möglich, da nicht initialisiert
// s instanceof String;
int[] array = {1, 3, 4};
assertEquals(true, array instanceof Object);
// Nicht möglich, null kein Typ
// "Hallo" instanceof null
}
@Test
public void testPrimitiveCast() {
byte a = 4;
a = (byte) (a + 3); // Expliziter Cast erforderlich
byte b = 2;
b += 3;
}
@Test
public void testCast() {
OberCast echterOber = new OberCast();
OberCast oberAberUnter = new UnterCast();
UnterCast echterUnterCast = new UnterCast();
String s = (String) null;
echterOber = (UnterCast) echterUnterCast;
echterOber = oberAberUnter;
echterUnterCast = (UnterCast) oberAberUnter;
assertThrows(ClassCastException.class, () -> {
UnterCast echterUnterCast2 = new UnterCast();
OberCast echterOber2 = new OberCast();
echterUnterCast2 = (UnterCast) echterOber2;
});
{int i, j;}
for (int i = 1; i< 3; i++) {
}
}
class OberCast {
}
class UnterCast extends OberCast {
void untercast() {
System.out.printf("untercast");
}
}
class AußerhalbCast {
}
}

View File

@@ -2,7 +2,7 @@ package org.eidecker.oca8lernen.general;
import org.junit.jupiter.api.Test;
public class KLassenInitialisierung {
public class KlassenInitialisierung {
@Test
public void testInitialisierung() {
@@ -26,6 +26,8 @@ public class KLassenInitialisierung {
class Oberklasse {
private String s = initString();
static {
synchronized (Oberklasse.class) {
System.out.println("Oberklasse statischer Initialisierungsblock");
@@ -54,10 +56,17 @@ class Oberklasse {
}
private String initString() {
System.out.println("OberklasseString wurde initialisiert");
return "OberklasseString";
}
}
class Unterklasse extends Oberklasse {
private String s = initString();
static {
System.out.println("Unterklasse statischer Initialisierungsblock");
}
@@ -78,4 +87,9 @@ class Unterklasse extends Oberklasse {
public Unterklasse() {
System.out.println("Unterklasse Konstruktor");
}
private String initString() {
System.out.println("UnterklasseString wurde initialisiert");
return "UnterklasseString";
}
}

View File

@@ -12,10 +12,25 @@ public class PrimitiveUndWrapperTest {
@Test
public void zuweisungWertebereich() {
char c = (char) 1L;
byte e, f = 2, g = 4;
// Compilefehler, da + implizit int erzeugt
// e = f + g;
char r, s = 3, t = 4;
// Compilefehler, da + implizit int erzeugt
// r = s + t;
float f1, f2 = 0, f3 = 3;
f1 = f2 + f3;
char c = (char) -1L;
short sh = Short.MAX_VALUE;
// char s = sh;
// char ch = (byte)sh;
"Hallo".concat(" Welt");