diff --git a/src/org/eidecker/oca8lernen/general/Final.java b/src/org/eidecker/oca8lernen/general/Final.java new file mode 100644 index 0000000..63d96b6 --- /dev/null +++ b/src/org/eidecker/oca8lernen/general/Final.java @@ -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"); + } +} diff --git a/src/org/eidecker/oca8lernen/general/InstanceOfUndCast.java b/src/org/eidecker/oca8lernen/general/InstanceOfUndCast.java new file mode 100644 index 0000000..90a476e --- /dev/null +++ b/src/org/eidecker/oca8lernen/general/InstanceOfUndCast.java @@ -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 { + + } + +} diff --git a/src/org/eidecker/oca8lernen/general/KLassenInitialisierung.java b/src/org/eidecker/oca8lernen/general/KlassenInitialisierung.java similarity index 81% rename from src/org/eidecker/oca8lernen/general/KLassenInitialisierung.java rename to src/org/eidecker/oca8lernen/general/KlassenInitialisierung.java index 56a2944..9291ac5 100644 --- a/src/org/eidecker/oca8lernen/general/KLassenInitialisierung.java +++ b/src/org/eidecker/oca8lernen/general/KlassenInitialisierung.java @@ -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"; + } } diff --git a/src/org/eidecker/oca8lernen/general/PrimitiveUndWrapperTest.java b/src/org/eidecker/oca8lernen/general/PrimitiveUndWrapperTest.java index 9417405..2a1c4cb 100644 --- a/src/org/eidecker/oca8lernen/general/PrimitiveUndWrapperTest.java +++ b/src/org/eidecker/oca8lernen/general/PrimitiveUndWrapperTest.java @@ -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");