From 1d09da4811363c6889b2340e6220346afd8293cd Mon Sep 17 00:00:00 2001 From: stedS <sven.steddin@reutlingen-university.de> Date: Thu, 5 Dec 2019 02:09:42 +0100 Subject: [PATCH] Uebertragung Beispiele fuer VL04.04 --- VL04_04/CallByRef-C/.classpath | 6 ++ VL04_04/CallByRef-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/CallByRef-C/src/CallByRef.java | 36 +++++++++++ VL04_04/CallByRefArray-C/.classpath | 6 ++ VL04_04/CallByRefArray-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/CallByRefArray-C/bin/.gitignore | 1 + .../src/inf3/CallByRefArray.java | 51 +++++++++++++++ VL04_04/CallByRef_Part2-C/.classpath | 6 ++ VL04_04/CallByRef_Part2-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/CallByRef_Part2-C/bin/.gitignore | 1 + .../src/inf3/CallByRef_Part2.java | 64 +++++++++++++++++++ .../CallByRef_Part2-C/src/inf3/RefClass.java | 15 +++++ VL04_04/CallByVal-C/.classpath | 6 ++ VL04_04/CallByVal-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/CallByVal-C/src/CallByVal.java | 32 ++++++++++ VL04_04/Doublefehler-C/.classpath | 6 ++ VL04_04/Doublefehler-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/Doublefehler-C/src/Doublefehler.java | 27 ++++++++ VL04_04/DownCast_PosToNeg-C/.classpath | 6 ++ VL04_04/DownCast_PosToNeg-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ .../src/DownCast_Demo.java | 22 +++++++ VL04_04/EqualsDemo-C/.classpath | 6 ++ VL04_04/EqualsDemo-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/EqualsDemo-C/src/EqualsDemo.java | 41 ++++++++++++ VL04_04/ForEachDemo-C/.classpath | 6 ++ VL04_04/ForEachDemo-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/ForEachDemo-C/bin/.gitignore | 1 + .../ForEachDemo-C/src/inf3/ForEachDemo.java | 28 ++++++++ VL04_04/ImmutableWrapper-C/.classpath | 6 ++ VL04_04/ImmutableWrapper-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/ImmutableWrapper-C/bin/.gitignore | 1 + .../src/inf3/ImmutableWrapper.java | 45 +++++++++++++ VL04_04/InitArray-C/.classpath | 10 +++ VL04_04/InitArray-C/.gitignore | 1 + VL04_04/InitArray-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 14 ++++ VL04_04/InitArray-C/src/inf3/InitArray.java | 26 ++++++++ VL04_04/InitDemo1-C/.classpath | 6 ++ VL04_04/InitDemo1-C/.project | 17 +++++ VL04_04/InitDemo1-C/src/InitDemo1.java | 44 +++++++++++++ .../InitDemo1-C/src/InitDemo1_Loesung.java | 52 +++++++++++++++ VL04_04/ReferenzielleIdent-C/.classpath | 6 ++ VL04_04/ReferenzielleIdent-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ .../ReferenzielleIdent.java | 33 ++++++++++ VL04_04/StringBufPerformance-C/.classpath | 6 ++ VL04_04/StringBufPerformance-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/StringBufPerformance-C/bin/.gitignore | 1 + .../src/inf/StringBufPerformance.java | 40 ++++++++++++ VL04_04/StringGen1-C/.classpath | 6 ++ VL04_04/StringGen1-C/.project | 17 +++++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/StringGen1-C/src/StringGen1.java | 49 ++++++++++++++ VL04_04/StringMethoden-C/.classpath | 6 ++ VL04_04/StringMethoden-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/StringMethoden-C/bin/.gitignore | 1 + .../src/inf3/StringMethoden.java | 23 +++++++ VL04_04/TreeSetDemo-C/.classpath | 6 ++ VL04_04/TreeSetDemo-C/.project | 17 +++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++ VL04_04/TreeSetDemo-C/bin/.gitignore | 1 + .../TreeSetDemo-C/src/inf3/TreeSetDemo.java | 32 ++++++++++ 74 files changed, 1210 insertions(+) create mode 100644 VL04_04/CallByRef-C/.classpath create mode 100644 VL04_04/CallByRef-C/.project create mode 100644 VL04_04/CallByRef-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/CallByRef-C/src/CallByRef.java create mode 100644 VL04_04/CallByRefArray-C/.classpath create mode 100644 VL04_04/CallByRefArray-C/.project create mode 100644 VL04_04/CallByRefArray-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/CallByRefArray-C/bin/.gitignore create mode 100644 VL04_04/CallByRefArray-C/src/inf3/CallByRefArray.java create mode 100644 VL04_04/CallByRef_Part2-C/.classpath create mode 100644 VL04_04/CallByRef_Part2-C/.project create mode 100644 VL04_04/CallByRef_Part2-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/CallByRef_Part2-C/bin/.gitignore create mode 100644 VL04_04/CallByRef_Part2-C/src/inf3/CallByRef_Part2.java create mode 100644 VL04_04/CallByRef_Part2-C/src/inf3/RefClass.java create mode 100644 VL04_04/CallByVal-C/.classpath create mode 100644 VL04_04/CallByVal-C/.project create mode 100644 VL04_04/CallByVal-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/CallByVal-C/src/CallByVal.java create mode 100644 VL04_04/Doublefehler-C/.classpath create mode 100644 VL04_04/Doublefehler-C/.project create mode 100644 VL04_04/Doublefehler-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/Doublefehler-C/src/Doublefehler.java create mode 100644 VL04_04/DownCast_PosToNeg-C/.classpath create mode 100644 VL04_04/DownCast_PosToNeg-C/.project create mode 100644 VL04_04/DownCast_PosToNeg-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/DownCast_PosToNeg-C/src/DownCast_Demo.java create mode 100644 VL04_04/EqualsDemo-C/.classpath create mode 100644 VL04_04/EqualsDemo-C/.project create mode 100644 VL04_04/EqualsDemo-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/EqualsDemo-C/src/EqualsDemo.java create mode 100644 VL04_04/ForEachDemo-C/.classpath create mode 100644 VL04_04/ForEachDemo-C/.project create mode 100644 VL04_04/ForEachDemo-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/ForEachDemo-C/bin/.gitignore create mode 100644 VL04_04/ForEachDemo-C/src/inf3/ForEachDemo.java create mode 100644 VL04_04/ImmutableWrapper-C/.classpath create mode 100644 VL04_04/ImmutableWrapper-C/.project create mode 100644 VL04_04/ImmutableWrapper-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/ImmutableWrapper-C/bin/.gitignore create mode 100644 VL04_04/ImmutableWrapper-C/src/inf3/ImmutableWrapper.java create mode 100644 VL04_04/InitArray-C/.classpath create mode 100644 VL04_04/InitArray-C/.gitignore create mode 100644 VL04_04/InitArray-C/.project create mode 100644 VL04_04/InitArray-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/InitArray-C/src/inf3/InitArray.java create mode 100644 VL04_04/InitDemo1-C/.classpath create mode 100644 VL04_04/InitDemo1-C/.project create mode 100644 VL04_04/InitDemo1-C/src/InitDemo1.java create mode 100644 VL04_04/InitDemo1-C/src/InitDemo1_Loesung.java create mode 100644 VL04_04/ReferenzielleIdent-C/.classpath create mode 100644 VL04_04/ReferenzielleIdent-C/.project create mode 100644 VL04_04/ReferenzielleIdent-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/ReferenzielleIdent-C/ReferenzielleIdent.java create mode 100644 VL04_04/StringBufPerformance-C/.classpath create mode 100644 VL04_04/StringBufPerformance-C/.project create mode 100644 VL04_04/StringBufPerformance-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/StringBufPerformance-C/bin/.gitignore create mode 100644 VL04_04/StringBufPerformance-C/src/inf/StringBufPerformance.java create mode 100644 VL04_04/StringGen1-C/.classpath create mode 100644 VL04_04/StringGen1-C/.project create mode 100644 VL04_04/StringGen1-C/.settings/org.eclipse.core.resources.prefs create mode 100644 VL04_04/StringGen1-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/StringGen1-C/src/StringGen1.java create mode 100644 VL04_04/StringMethoden-C/.classpath create mode 100644 VL04_04/StringMethoden-C/.project create mode 100644 VL04_04/StringMethoden-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/StringMethoden-C/bin/.gitignore create mode 100644 VL04_04/StringMethoden-C/src/inf3/StringMethoden.java create mode 100644 VL04_04/TreeSetDemo-C/.classpath create mode 100644 VL04_04/TreeSetDemo-C/.project create mode 100644 VL04_04/TreeSetDemo-C/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_04/TreeSetDemo-C/bin/.gitignore create mode 100644 VL04_04/TreeSetDemo-C/src/inf3/TreeSetDemo.java diff --git a/VL04_04/CallByRef-C/.classpath b/VL04_04/CallByRef-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/CallByRef-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/CallByRef-C/.project b/VL04_04/CallByRef-C/.project new file mode 100644 index 0000000..92b9a1a --- /dev/null +++ b/VL04_04/CallByRef-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>CallByRef-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/CallByRef-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/CallByRef-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/CallByRef-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/CallByRef-C/src/CallByRef.java b/VL04_04/CallByRef-C/src/CallByRef.java new file mode 100644 index 0000000..126d1b2 --- /dev/null +++ b/VL04_04/CallByRef-C/src/CallByRef.java @@ -0,0 +1,36 @@ +/** +* CallByRef.java +* +* Das Programm verdeutlicht, dass die Übergabe eines Referenzdatentyps +* als Parameter nicht automatisch bedeutet, dass die Änderungen am +* übergebenen Parameter nicht unbedingt bedeuten, dass diese Änderungen +* auch in der aufrufenden Methode sichtbar sind. Der Grund hierfür liegt +* darin, dass beim unboxing und autoboxing ggf. neue Instanzen des ursprünglichen +* Referenzdatentyps erzeugt werden. Die aufrufende Methode wird hierüber nicht +* informiert. Es ist daher immer ratsam, eine Referenz auf das geänderte Objekt als +* return-Wert zurückzugeben. +* +* @author Steddin +* @version 1.00, 2017-11-20 +*/ + +public class CallByRef { + + static public Integer power_callByRef(Integer val) { + val = val * val; + return val; + } + + public static void main(String[] args) { + + Integer z, zReturn; + z = 2; //Wrapper Klasse wird über Autoboxing erzeugt + + zReturn = power_callByRef(z); + System.out.println("Referenz: "+ z + "^2 = " + z); + System.out.println("Rueckgabe: "+ z + "^2 = " + zReturn); + } +} + + + diff --git a/VL04_04/CallByRefArray-C/.classpath b/VL04_04/CallByRefArray-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/CallByRefArray-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/CallByRefArray-C/.project b/VL04_04/CallByRefArray-C/.project new file mode 100644 index 0000000..82ef554 --- /dev/null +++ b/VL04_04/CallByRefArray-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>CallByRefArray-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/CallByRefArray-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/CallByRefArray-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/CallByRefArray-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/CallByRefArray-C/bin/.gitignore b/VL04_04/CallByRefArray-C/bin/.gitignore new file mode 100644 index 0000000..e7d460a --- /dev/null +++ b/VL04_04/CallByRefArray-C/bin/.gitignore @@ -0,0 +1 @@ +/inf3/ diff --git a/VL04_04/CallByRefArray-C/src/inf3/CallByRefArray.java b/VL04_04/CallByRefArray-C/src/inf3/CallByRefArray.java new file mode 100644 index 0000000..6e5eeef --- /dev/null +++ b/VL04_04/CallByRefArray-C/src/inf3/CallByRefArray.java @@ -0,0 +1,51 @@ +/** +* CallByRefArray.java +* +* Das Programm zeigt, dass bei der Übergabe eines Arrays an eine +* Methode bei Änderung des Inhaltes des Arrays kein neues Array Objekt erzeugt +* wird und somit die in der aufgerufenen Methode durchgeführten Änderungen am +* Array anschließend auch im aufrufenden Programmteil sichtbar sind (Verhalten +* wie bei call by reference). +* +* Hierbei spielt es keine Rolle, ob im Array Wrappertypen (z.B. Integer) oder Wertetypen +* (z.B. int) enthalten sind. +* +* @author Steddin +* @version 1.00, 2016-11-23 +*/ +package inf3; + +public class CallByRefArray { + + static void Call_intArray(int ia[]) { + for (int ii=0; ii< ia.length; ii++) { + ia[ii] = 9; + } + } + static void Call_IntArray(Integer ia[]) { + for (int ii=0; ii< ia.length; ii++) { + ia[ii] = 9; + } + } + + public static void main(String[] args) { + int arr_int[] = {1,2,3,4,5}; + Integer arr_Int[] = {1,2,3,4,5}; + + Call_intArray(arr_int); + System.out.print("int-Array nach Methodenaufruf: "); + for (int ii=0; ii< arr_int.length; ii++) { + System.out.print(arr_int[ii] + ", "); + } + System.out.println(); + + Call_IntArray(arr_Int); + System.out.print("Integer-Array nach Methodenaufruf: "); + for (int ii=0; ii< arr_Int.length; ii++) { + System.out.print(arr_int[ii] + ", "); + } + System.out.println(); + } +} + + diff --git a/VL04_04/CallByRef_Part2-C/.classpath b/VL04_04/CallByRef_Part2-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/CallByRef_Part2-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/CallByRef_Part2-C/.project b/VL04_04/CallByRef_Part2-C/.project new file mode 100644 index 0000000..a609504 --- /dev/null +++ b/VL04_04/CallByRef_Part2-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>CallByRef_Part2-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/CallByRef_Part2-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/CallByRef_Part2-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/CallByRef_Part2-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/CallByRef_Part2-C/bin/.gitignore b/VL04_04/CallByRef_Part2-C/bin/.gitignore new file mode 100644 index 0000000..e7d460a --- /dev/null +++ b/VL04_04/CallByRef_Part2-C/bin/.gitignore @@ -0,0 +1 @@ +/inf3/ diff --git a/VL04_04/CallByRef_Part2-C/src/inf3/CallByRef_Part2.java b/VL04_04/CallByRef_Part2-C/src/inf3/CallByRef_Part2.java new file mode 100644 index 0000000..d1580ea --- /dev/null +++ b/VL04_04/CallByRef_Part2-C/src/inf3/CallByRef_Part2.java @@ -0,0 +1,64 @@ +/** VL04-04_CallByRef_Part2.java +* +* Das Programm zeigt, dass Wrapper-Typen, die als Parameter an eine Funktion übergeben werden, +* anders behandelt werden als Objekte eines anderen Referenzdatentyps: <p> +* Während eine Änderung des Wertes einer als Parameter übergebenen Wrapper-Klasse zur Generierung +* eines neuen Wrapper-Objektes führt und somit die Änderung nicht an dem übergebenen Wrapper-Parameter +* durchgeführt wird (also kein call by reference), findet bei der Übergabe eines nicht-Wrapper-Objekts +* tatsächlich ein call by reference statt. <p> +* +* Somit gilt: Bei Wrapper-Typen, die als Parameter an eine Methode übergeben werden gibt es kein call by +* reference sondern nur ein call by value. Eine in der Methode mit dem übergebenen Wrapper-Objekt durchgeführte +* Änderung wird immer an einer Kopie des Parameters durchgeführt. Die Änderung muss daher in Form eines +* Return-Wertes zurückgereicht werden. <p> +* +* Der Grund hierfür ist, dass alle Wrapper-Typen "immutable" sind: <p> +* Wird diesen Typen ein Wert zugewiesen, so lässt sich dieser nicht mehr ändern; stattdessen muss bei einer +* Änderung ein neues Objekt angelegt werden. Dieses Verhalten findet sich auch beim Typ String. +* +* +* @author Steddin +* @version 1.00, 2016-11-21 +*/ +package inf3; + +public class CallByRef_Part2 { + + static RefClass ChangeValue(RefClass rC) { + rC.myPublicValue++; + rC.ChangeMyPrivateValue(); + return rC; + } + + static Integer ChangeIntValue(Integer rI) { + rI = rI + 1; + //rI++; //gleiches Ergebnis, wenn Inkrement aufgerufen wird + return rI; + } + + + public static void main(String[] args) { + RefClass rC = new RefClass(); + RefClass new_rC; + new_rC = ChangeValue(rC); + System.out.println("Per return zurückgegebene Klasse: " + new_rC.myPublicValue + " "+new_rC.getPrivVal()); + System.out.println("Per Referenz übergebene Klasse: " + rC.getPrivVal() + " " + rC.getPrivVal()); + if (new_rC == rC) + System.out.println("Die als Return Wert zurückgegenene Klasse ist mit der als Parameter übergebenen Klasse identisch"); + else + System.out.println("Die als Return Wert zurückgegenene Klasse ist mit der als Parameter übergebenen Klasse nicht identisch"); + + Integer refWrapperClass = 0; + Integer new_refWrapperClass; + + new_refWrapperClass = ChangeIntValue(refWrapperClass); + System.out.println("Per return zurückgegebene Klasse: " + new_refWrapperClass); + System.out.println("Per Referenz übergebene Klasse: " + refWrapperClass); + if (new_refWrapperClass == refWrapperClass) + System.out.println("Die als Return Wert zurückgegenene Klasse ist mit der als Parameter übergebenen Klasse identisch"); + else + System.out.println("Die als Return Wert zurückgegenene Klasse ist mit der als Parameter übergebenen Klasse nicht identisch"); + + } + +} diff --git a/VL04_04/CallByRef_Part2-C/src/inf3/RefClass.java b/VL04_04/CallByRef_Part2-C/src/inf3/RefClass.java new file mode 100644 index 0000000..609dffb --- /dev/null +++ b/VL04_04/CallByRef_Part2-C/src/inf3/RefClass.java @@ -0,0 +1,15 @@ +package inf3; + +public class RefClass { + private int myPrivateValue = 0; + public int myPublicValue = 0; + + void ChangeMyPrivateValue() { + myPrivateValue++; + } + + int getPrivVal() { + return myPrivateValue; + } + +} diff --git a/VL04_04/CallByVal-C/.classpath b/VL04_04/CallByVal-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/CallByVal-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/CallByVal-C/.project b/VL04_04/CallByVal-C/.project new file mode 100644 index 0000000..80e87ec --- /dev/null +++ b/VL04_04/CallByVal-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>CallByVal-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/CallByVal-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/CallByVal-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/CallByVal-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/CallByVal-C/src/CallByVal.java b/VL04_04/CallByVal-C/src/CallByVal.java new file mode 100644 index 0000000..cf2d3fd --- /dev/null +++ b/VL04_04/CallByVal-C/src/CallByVal.java @@ -0,0 +1,32 @@ +/** +* CallByVal.java +* +* Primitive Typen werden beim Aufruf einer MEthode +* immer als Kopie übergeben. D.h. Änderungen an der +* Kopie innerhalb der aufgerufenen Methode haben keine +* Auswirkung auf die aufrufende Methode. Sollen die +* Änderungen an den Aufrufer zurückgegeben werden, so +* muss dies immer über einen Return value erfolgen. +* +* @author Steddin +* @version 1.00, 2017-11-20 +*/ +public class CallByVal { + + static public int power_callByValue(int val) { + val = val * val; + return val; + } + + public static void main(String[] args) { + + int z = 2; + int result; + + result = power_callByValue(z); + System.out.println(z + "^2 = " + result); + } +} + + + diff --git a/VL04_04/Doublefehler-C/.classpath b/VL04_04/Doublefehler-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/Doublefehler-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/Doublefehler-C/.project b/VL04_04/Doublefehler-C/.project new file mode 100644 index 0000000..2883eee --- /dev/null +++ b/VL04_04/Doublefehler-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>Doublefehler-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/Doublefehler-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/Doublefehler-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/Doublefehler-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/Doublefehler-C/src/Doublefehler.java b/VL04_04/Doublefehler-C/src/Doublefehler.java new file mode 100644 index 0000000..b1acadf --- /dev/null +++ b/VL04_04/Doublefehler-C/src/Doublefehler.java @@ -0,0 +1,27 @@ +/** +* Doublefehler.java +* +* Das Programm zeigt, dass bei der Berechnung von Double-Werten +* Ergebnisse auftreten können, die nicht erwartet werden. Ursache hierfür +* sind die bei der Berechnung von Double-Werten auftretenden Rundungsfehler. +* +* @author Steddin +* @version 1.00, 2016-11-22 +*/ + +public class Doublefehler { + + public static void main(String[] args) { + + double a1 = 3.01; + double a2 = 2.01; + double a3 = 1.99; + double b = 0.01; + + System.out.println("3.01 - 0.01 = " + (a1 - b)); + System.out.println("2.01 - 0.01 = " + (a2 - b)); + System.out.println("2.01 - 0.01 - 2.0 = " + (a2 - b - 2.0)); + System.out.println("Vergleich (1.99 + 0.01) == (2.01 - 0.01) ergibt: " + ((a3+b) == (a2-b))); + } +} + diff --git a/VL04_04/DownCast_PosToNeg-C/.classpath b/VL04_04/DownCast_PosToNeg-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/DownCast_PosToNeg-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/DownCast_PosToNeg-C/.project b/VL04_04/DownCast_PosToNeg-C/.project new file mode 100644 index 0000000..5d0f7c1 --- /dev/null +++ b/VL04_04/DownCast_PosToNeg-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>DownCast_PosToNeg-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/DownCast_PosToNeg-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/DownCast_PosToNeg-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/DownCast_PosToNeg-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/DownCast_PosToNeg-C/src/DownCast_Demo.java b/VL04_04/DownCast_PosToNeg-C/src/DownCast_Demo.java new file mode 100644 index 0000000..d8be07b --- /dev/null +++ b/VL04_04/DownCast_PosToNeg-C/src/DownCast_Demo.java @@ -0,0 +1,22 @@ +/** + * DownCast_Demo.java + * + * Programm zeigt, dass der downcast einer Zahl zu einem unerwarteten + * Ergebnis führen kann. Lösung des Problems: Verwendung von ... + * + * @author stedS + * @version 1.0.0 + */ +public class DownCast_Demo { + + public static void main(String[] args) { + int integerZahl = 0x000001FF; //entspricht +511 + byte byteZahl = (byte)integerZahl; + System.out.println("integerZahl = "+integerZahl); + System.out.println("byteZahl = "+byteZahl); + } +} + + + + diff --git a/VL04_04/EqualsDemo-C/.classpath b/VL04_04/EqualsDemo-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/EqualsDemo-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/EqualsDemo-C/.project b/VL04_04/EqualsDemo-C/.project new file mode 100644 index 0000000..451c693 --- /dev/null +++ b/VL04_04/EqualsDemo-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>EqualsDemo-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/EqualsDemo-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/EqualsDemo-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/EqualsDemo-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/EqualsDemo-C/src/EqualsDemo.java b/VL04_04/EqualsDemo-C/src/EqualsDemo.java new file mode 100644 index 0000000..999cf41 --- /dev/null +++ b/VL04_04/EqualsDemo-C/src/EqualsDemo.java @@ -0,0 +1,41 @@ +/** EqualsDemo.java +* +* Das Programm verdeutlicht den Unterschied zwischen der referenziellen +* Identität (Vergleich der Zugriffsadresse) und der inhaltlichen +* (Vergleich der Datenfelder der Instanzvariablen) Identität. +* +* @author Steddin +* @version 1.00, 2017-11-20 +*/ +public class EqualsDemo { + + public static void main(String[] args) { + Person hans = new Person(); + Person hugo = new Person(); + if (hugo == hans) + System.out.println("Hans und Hugo sind identisch"); + else + System.out.println("Hans und Hugo sind nicht identisch"); + + if (hans.equals(hugo)) + System.out.println("Hans und Hugo haben identische Daten"); + } + +} + +class Person { + int geburtsjahr = 2010; + int geburtsmonat = 10; + int geburtstag = 31; + boolean equals(Person anderePerson) { + if ((this.geburtsjahr == anderePerson.geburtsjahr) && + (this.geburtsmonat == anderePerson.geburtsmonat) && + (this.geburtstag == anderePerson.geburtstag)) + return true; + else + return false; + } +} + + + diff --git a/VL04_04/ForEachDemo-C/.classpath b/VL04_04/ForEachDemo-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/ForEachDemo-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/ForEachDemo-C/.project b/VL04_04/ForEachDemo-C/.project new file mode 100644 index 0000000..3b1a2a6 --- /dev/null +++ b/VL04_04/ForEachDemo-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ForEachDemo-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/ForEachDemo-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/ForEachDemo-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/ForEachDemo-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/ForEachDemo-C/bin/.gitignore b/VL04_04/ForEachDemo-C/bin/.gitignore new file mode 100644 index 0000000..e7d460a --- /dev/null +++ b/VL04_04/ForEachDemo-C/bin/.gitignore @@ -0,0 +1 @@ +/inf3/ diff --git a/VL04_04/ForEachDemo-C/src/inf3/ForEachDemo.java b/VL04_04/ForEachDemo-C/src/inf3/ForEachDemo.java new file mode 100644 index 0000000..ef07f5a --- /dev/null +++ b/VL04_04/ForEachDemo-C/src/inf3/ForEachDemo.java @@ -0,0 +1,28 @@ +/** ForEachDemo.java +* +* Das Programm zeigt, dass Änderungen eines Array-Elementes innerhalb einer for-each-Schleife +* das Array nicht verändern +* +* @author Steddin +* @version 1.00, 2017-11-28 +*/ +package inf3; +public class ForEachDemo { + + public static void main(String[] args) { + Integer myArray[] = {0,1,2,3}; + int ii = 0; + for (Integer v: myArray) { + v += 10; + System.out.println("v["+ ii++ +"] = " + v); + } + myArray[2] = myArray[2] + 10; + + ii = 0; + for (Integer v: myArray) { + System.out.println("v["+ ii++ +"] = " + v); + } + } +} + + diff --git a/VL04_04/ImmutableWrapper-C/.classpath b/VL04_04/ImmutableWrapper-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/ImmutableWrapper-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/ImmutableWrapper-C/.project b/VL04_04/ImmutableWrapper-C/.project new file mode 100644 index 0000000..053046a --- /dev/null +++ b/VL04_04/ImmutableWrapper-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ImmutableWrapper-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/ImmutableWrapper-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/ImmutableWrapper-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/ImmutableWrapper-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/ImmutableWrapper-C/bin/.gitignore b/VL04_04/ImmutableWrapper-C/bin/.gitignore new file mode 100644 index 0000000..e7d460a --- /dev/null +++ b/VL04_04/ImmutableWrapper-C/bin/.gitignore @@ -0,0 +1 @@ +/inf3/ diff --git a/VL04_04/ImmutableWrapper-C/src/inf3/ImmutableWrapper.java b/VL04_04/ImmutableWrapper-C/src/inf3/ImmutableWrapper.java new file mode 100644 index 0000000..ef2a21b --- /dev/null +++ b/VL04_04/ImmutableWrapper-C/src/inf3/ImmutableWrapper.java @@ -0,0 +1,45 @@ +/** +* ImmutableWrapper.java +* +* Das Programm zeigt, dass bei kleinen Integer-Werten die Speicherung +* ähnlich wie beim Java String-Pool erfolgt: für wertgleiche Objekte +* werden nicht getrennte Objekte angelegt, stattdessen wird hierfür +* ein gemeinsames Objekt angelegt. <p> +* Hieran lässt sich erkennen, warum Integer und String immutable sind: +* wird dem Objekt ein neuer Wert zugewiesen, so würden alle andere Referenzen +* auf dieses Objekt ebenfalls von der Wertänderung betroffen sein. Aus diesem +* Grunde muss also bei jeder Änderung ein neues Objekt angelegt werden. <p> +* +* Java implementiert dieses Verhalten, um die Performance zu optimieren. <p> +* Siehe auch: http://www.itcsolutions.eu/2011/02/12/tutorial-java-scjp-12-immutable-string-and-integer/ +* (Zugriff 2016-11-21) +* +* @author Steddin +* @version 1.00, 2016-11-21 +*/package inf3; + +public class ImmutableWrapper { + + public static void main(String[] args) { + Integer i1 =100; //use constant values + Integer i2 =100; //use small values + + System.out.println("Integer i1 = i2 = 100 (-128 < i < 127"); + + if(i1 == i2) //compare the references + System.out.println("i1 und i2 zeigen auf ein identisches Objekt"); + else + System.out.println("i1 und i2 zeigen auf unterschiedliche Objekte"); + + i1 = 300; //use bigger values + i2 = 300; + + System.out.println("Integer i1 = i2 = 300 (-128 >= i || ii > 127"); + + if(i1 == i2) //compare the references + System.out.println("i1 und i2 zeigen auf ein identisches Objekt"); + else + System.out.println("i1 und i2 zeigen auf unterschiedliche Objekte"); + } + +} diff --git a/VL04_04/InitArray-C/.classpath b/VL04_04/InitArray-C/.classpath new file mode 100644 index 0000000..d986294 --- /dev/null +++ b/VL04_04/InitArray-C/.classpath @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-13"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/InitArray-C/.gitignore b/VL04_04/InitArray-C/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/VL04_04/InitArray-C/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/VL04_04/InitArray-C/.project b/VL04_04/InitArray-C/.project new file mode 100644 index 0000000..42fca58 --- /dev/null +++ b/VL04_04/InitArray-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>InitArray-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/InitArray-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/InitArray-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..2b084d8 --- /dev/null +++ b/VL04_04/InitArray-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=12 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=12 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=12 diff --git a/VL04_04/InitArray-C/src/inf3/InitArray.java b/VL04_04/InitArray-C/src/inf3/InitArray.java new file mode 100644 index 0000000..1bd3e2e --- /dev/null +++ b/VL04_04/InitArray-C/src/inf3/InitArray.java @@ -0,0 +1,26 @@ +package inf3; +public class InitArray { + public static void main(String[] args) { + MyArrayClass myAC = new MyArrayClass(); + myAC.initArrays(); + System.out.print("\nInstanzvariable instance_intArr: "); + for (int ii: myAC.instance_intArr) System.out.print(ii + "; "); + System.out.print("\nInstanzvariable instance_IntegerArr: "); + for (Integer ii: myAC.instance_IntegerArr) System.out.print(ii + "; "); + } +} +class MyArrayClass { + int instance_intArr[]; + Integer instance_IntegerArr[]; + + void initArrays() { + int local_intArray[] = new int[3]; + Integer local_IntegerArray[] = new Integer[3]; + instance_intArr = new int[3]; + instance_IntegerArr = new Integer[3]; + System.out.print("\nlocal_intArr: "); + for (int ii: local_intArray) System.out.print(ii + "; "); + System.out.print("\nlocal_IntegerArr: "); + for (Integer ii: local_IntegerArray) System.out.print(ii + "; "); + } +} diff --git a/VL04_04/InitDemo1-C/.classpath b/VL04_04/InitDemo1-C/.classpath new file mode 100644 index 0000000..42f2e9f --- /dev/null +++ b/VL04_04/InitDemo1-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry excluding="*Loesung.java" kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/InitDemo1-C/.project b/VL04_04/InitDemo1-C/.project new file mode 100644 index 0000000..5483ae0 --- /dev/null +++ b/VL04_04/InitDemo1-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>InitDemo1-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/InitDemo1-C/src/InitDemo1.java b/VL04_04/InitDemo1-C/src/InitDemo1.java new file mode 100644 index 0000000..462ae3a --- /dev/null +++ b/VL04_04/InitDemo1-C/src/InitDemo1.java @@ -0,0 +1,44 @@ +/** InitDemo1.java +* +* Demonstration der Behandlung von initialisierten und nicht initialisierten Variablen. +* Das Programm beinhaltet Fehler. Wo sind die Fehler und wie kommen diese zustande? +* +* @author Steddin +* @version 1.00, 2016-11-18 +*/ + +public class InitDemo1 { + static int anzAchsen = 2; + public static void main(String[] args) { + System.out.println("Anzahl Lenkräder: " + Kfz.anzLenkrad); + Kfz ente; + System.out.println("Anzahl Hupen: " + ente.anzHupen); + ente = new Kfz(); + System.out.println("Anzahl Räder vor Initialisierung: " + ente.GetAnzahlRaeder()); + ente.SetAnzahlRaeder(4); + System.out.println("Anzahl Räder nach Initialisierung: " + ente.GetAnzahlRaeder()); + System.out.println("Anzahl Sitze: " + ente.GetAnzahlSitze()); + } +} + +class Kfz { + static int anzLenkrad; //wenn nicht als public deklariert, dann nur im package sichtbar + private int anzahlRaeder; //Instanzvariable + public int anzHupen; + + void SetAnzahlRaeder(int anz) { + static final int anzRaederProAchse = 2; + anzahlRaeder = anzRaederProAchse * anzAchsen; + } + + int GetAnzahlRaeder() { + return anzahlRaeder; + } + + int GetAnzahlSitze() { + public int anzSitze; // lokale Variable + return anzSitze; + } +} + + diff --git a/VL04_04/InitDemo1-C/src/InitDemo1_Loesung.java b/VL04_04/InitDemo1-C/src/InitDemo1_Loesung.java new file mode 100644 index 0000000..c624a26 --- /dev/null +++ b/VL04_04/InitDemo1-C/src/InitDemo1_Loesung.java @@ -0,0 +1,52 @@ +/** +* InitDemo1_Loesung.java +* +* Demonstration der Behandlung von initialisierten und nicht initialisierten Variablen. +* Das Programm beinhaltet Fehler. Wo sind die Fehler und wie kommen diese zustande? +* +* @author Steddin +* @version 1.00, 2016-11-18 +*/ + +public class InitDemo1_Loesung { + final static int anzAchsen=2; // ist als Klassenvariable im ganzen Package sichtbar + public static void main(String[] args) { + System.out.println("Anzahl Lenkräder: " + Kfz.anzLenkrad); + Kfz ente; + ente = new Kfz(); + //auf eine Instanzvariable kann erst nach der Initialisierung zugeriffen werden: + System.out.println("Anzahl Hupen: " + ente.anzHupen); + System.out.println("Anzahl Räder vor Initialisierung: " + ente.GetAnzahlRaeder()); + ente.SetAnzahlRaeder(4); + System.out.println("Anzahl Räder nach Initialisierung: " + ente.GetAnzahlRaeder()); + System.out.println("Anzahl Sitze: " + ente.GetAnzahlSitze()); + } +} + +class Kfz { + static int anzLenkrad; //wenn nicht als public deklariert, dann nur im package sichtbar + private int anzahlRaeder; //Instanzvariable + public int anzHupen = 2; + + void SetAnzahlRaeder(int anz) { + final int anzRaederProAchse = 2; + anzahlRaeder = anzRaederProAchse * InitDemo1_Loesung.anzAchsen; + //Klassenvariable muss über Klassenname referenziert werden + //vorher: anzahlRaeder = anzRaederProAchse * anzAchsen; + } + + int GetAnzahlRaeder() { + return anzahlRaeder; + } + + int GetAnzahlSitze() { + // lokale Variable kann nicht als public deklariert werden + // lokale Variable muss vor dem ersten Zugriff initialisiert werden. + int anzSitze; + //vorher: public int anzSitze; + // Ohne Initialisierung wird das Programm nicht übersetzt! + anzSitze = 4; + return anzSitze; + } +} + diff --git a/VL04_04/ReferenzielleIdent-C/.classpath b/VL04_04/ReferenzielleIdent-C/.classpath new file mode 100644 index 0000000..b82a42f --- /dev/null +++ b/VL04_04/ReferenzielleIdent-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path=""/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path=""/> +</classpath> diff --git a/VL04_04/ReferenzielleIdent-C/.project b/VL04_04/ReferenzielleIdent-C/.project new file mode 100644 index 0000000..514f44b --- /dev/null +++ b/VL04_04/ReferenzielleIdent-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ReferenzielleIdent-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/ReferenzielleIdent-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/ReferenzielleIdent-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/ReferenzielleIdent-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/ReferenzielleIdent-C/ReferenzielleIdent.java b/VL04_04/ReferenzielleIdent-C/ReferenzielleIdent.java new file mode 100644 index 0000000..e534b4c --- /dev/null +++ b/VL04_04/ReferenzielleIdent-C/ReferenzielleIdent.java @@ -0,0 +1,33 @@ +/** +* ReferenzielleIdent.java +* +* Das Programm zeigt, dass bei der bei der Zuweisung von Objekt ws2016 +* an ws2017 nicht der Inhalt von ws2016 übertragen sondern stattdessen +* die Referenz (Adresse) von ws2016 auf ws 2017 übertragen wird. +* +* Das ursprüngliche Objekt ws2017 verwaist auf diese Weise: Es gibt keine +* Referenzvariable mehr, die auf dieses Objekt verweist. Demzufolge ist das +* Objekt im Programm nicht mehr zugänglich. +* +* @author Steddin +* @version 1.00, 2017-11-20 +*/ +public class ReferenzielleIdent { + + public static void main(String[] args) { + MetiJahrgang ws2017 = new MetiJahrgang(); + MetiJahrgang ws2016 = new MetiJahrgang(); + ws2016.anzStud = 49; + ws2017 = ws2016; + ws2017.anzStud = 51; + System.out.println("Anz. Stud. WS2017: "+ws2017.anzStud); + System.out.println("Anz. Stud. WS2016: "+ws2016.anzStud); + } +} + +class MetiJahrgang { + public int anzStud =0; +} + + + diff --git a/VL04_04/StringBufPerformance-C/.classpath b/VL04_04/StringBufPerformance-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/StringBufPerformance-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/StringBufPerformance-C/.project b/VL04_04/StringBufPerformance-C/.project new file mode 100644 index 0000000..b9ce41d --- /dev/null +++ b/VL04_04/StringBufPerformance-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>StringBufPerformance-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/StringBufPerformance-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/StringBufPerformance-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/StringBufPerformance-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/StringBufPerformance-C/bin/.gitignore b/VL04_04/StringBufPerformance-C/bin/.gitignore new file mode 100644 index 0000000..f09bbfd --- /dev/null +++ b/VL04_04/StringBufPerformance-C/bin/.gitignore @@ -0,0 +1 @@ +/inf/ diff --git a/VL04_04/StringBufPerformance-C/src/inf/StringBufPerformance.java b/VL04_04/StringBufPerformance-C/src/inf/StringBufPerformance.java new file mode 100644 index 0000000..acdec1f --- /dev/null +++ b/VL04_04/StringBufPerformance-C/src/inf/StringBufPerformance.java @@ -0,0 +1,40 @@ +/** StringBufPerformance.java +* +* Das Programm zeigt, dass die Verwendung der Klasse +* StringBuffer im Vergleich zu String einen eindeutigen +* Vorteil bringt, wenn die Länge des Strings häufig verändert +* wird. +* +* @author Steddin +* @version 1.00, 2016-11-22 +*/ +package inf; +import java.time.*; + +public class StringBufPerformance { + + public static void main(String[] args) { + Instant startTime, stopTime; + + String testString = "blabla\n"; + startTime = Instant.now(); + for (int ii=0; ii< 10_000; ii++) { + testString += "blabla\n"; + } + stopTime = Instant.now(); + System.out.println("Dauer für String-Operation: " + + Duration.between(startTime, stopTime).toMillis()*1000 + "µs"); + + StringBuffer testSB = new StringBuffer("blabla\n"); + // zu schnell ... StringBuffer testSB = new StringBuffer("blabla\n".length()*1000); + startTime = Instant.now(); + for (int ii=0; ii< 1_000_000; ii++) { + testSB.append("blabla\n"); + } + stopTime = Instant.now(); + System.out.println("Dauer für StringBuffer-Operation: " + + (Duration.between(startTime, stopTime).toMillis()*10) + "µs"); + //Multiplikation statt mit 1000 nur mir 10: Dies entspricht dann der Zeit von 10000 Durchläufen + } +} + diff --git a/VL04_04/StringGen1-C/.classpath b/VL04_04/StringGen1-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/StringGen1-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/StringGen1-C/.project b/VL04_04/StringGen1-C/.project new file mode 100644 index 0000000..3f6c71f --- /dev/null +++ b/VL04_04/StringGen1-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>StringGen1-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/StringGen1-C/.settings/org.eclipse.core.resources.prefs b/VL04_04/StringGen1-C/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..27491e9 --- /dev/null +++ b/VL04_04/StringGen1-C/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding//src/StringGen1.java=UTF-8 diff --git a/VL04_04/StringGen1-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/StringGen1-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/StringGen1-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/StringGen1-C/src/StringGen1.java b/VL04_04/StringGen1-C/src/StringGen1.java new file mode 100644 index 0000000..f092f22 --- /dev/null +++ b/VL04_04/StringGen1-C/src/StringGen1.java @@ -0,0 +1,49 @@ +/** StringGen1.java +* +* Programm demonstriert, bei welchen Initialisierungen bzw. +* Zuweisungen mit referenzieller Identität oder mit Werteidentität +* zu rechnen ist. Es werden außerdem noch einzelnen Methoden +* demonstriert, welche von der Klasse String zur Verfügung gestellt werden. +* +* Die gesamte Übersicht zu den zur Verfügung stehenden String-Methoden +* findet sich in der Dokumentation von Oracle zu Klasse String. +* +* @author Steddin +* @version 2.00, 2017-12-05 +*/ +public class StringGen1 { + + public static void main(String[] args) { + + char[] cArr1 = {'M','e','t','i'}; + char cArr2[] = {'M','e','t','i'}; + char[] cArr3 = cArr1; + + String s1 = new String(); + s1 = "Meti"; + String s2 = "Meti"; //Besonderheit: Instanz ohne new (wie bei Wrapper-Typ) + String s3 = new String (cArr1); + String s4 = new String (cArr2); + + if(cArr1 == cArr2) System.out.println("Vergleich1: cArr1 und cArr2 sind gleich"); + if(cArr1 == cArr3) System.out.println("Vergleich2: cArr1 und cArr3 sind gleich"); + if(s3 == s4) System.out.println("Vergleich3: cArr1 und cArr2 sind gleich"); + if(s3.equals(s4)) System.out.println("Vergleich4: cArr1 und cArr2 sind inhaltlich gleich"); + + s4 = s4.replace('M', 'Y'); + System.out.println(s4 + " und " + s3 + " sind nicht das Gleiche"); + String s2Copy = s2; + s2 += s4; + if (s2!= s2Copy) { + System.out.println("s2 wurde neu angelegt"); + } else { + System.out.println("s2 ist unverändert"); + } + System.out.println(s2); + s4 = s1.concat(s4); + System.out.println(s4); + } +} + + + diff --git a/VL04_04/StringMethoden-C/.classpath b/VL04_04/StringMethoden-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/StringMethoden-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/StringMethoden-C/.project b/VL04_04/StringMethoden-C/.project new file mode 100644 index 0000000..45b671c --- /dev/null +++ b/VL04_04/StringMethoden-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>StringMethoden-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/StringMethoden-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/StringMethoden-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/StringMethoden-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/StringMethoden-C/bin/.gitignore b/VL04_04/StringMethoden-C/bin/.gitignore new file mode 100644 index 0000000..e7d460a --- /dev/null +++ b/VL04_04/StringMethoden-C/bin/.gitignore @@ -0,0 +1 @@ +/inf3/ diff --git a/VL04_04/StringMethoden-C/src/inf3/StringMethoden.java b/VL04_04/StringMethoden-C/src/inf3/StringMethoden.java new file mode 100644 index 0000000..9aa1c11 --- /dev/null +++ b/VL04_04/StringMethoden-C/src/inf3/StringMethoden.java @@ -0,0 +1,23 @@ +/** StringMethoden.java +* +* Das Programm demonstriert den Einsatz einiger Methoden, +* die von der Klasse String zur Bearbeitung von Strings +* bereitgestellt wird. +* +* @author Steddin +* @version 1.00, 2016-11-22 +*/ +package inf3; + +public class StringMethoden { + public static void main(String[] args) { + char euroZeichen = '\u20ac'; + String preis = String.valueOf(10.0); + int cent = 0; + System.out.println(preis+cent+euroZeichen); + String bananenPreis = "Wucher-Bananen (kg) :\t"+preis+cent+euroZeichen+"\n\r"; + System.out.print(bananenPreis.substring(bananenPreis.indexOf("-")+1)); + } +} + + diff --git a/VL04_04/TreeSetDemo-C/.classpath b/VL04_04/TreeSetDemo-C/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_04/TreeSetDemo-C/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_04/TreeSetDemo-C/.project b/VL04_04/TreeSetDemo-C/.project new file mode 100644 index 0000000..f954350 --- /dev/null +++ b/VL04_04/TreeSetDemo-C/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>TreeSetDemo-C</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_04/TreeSetDemo-C/.settings/org.eclipse.jdt.core.prefs b/VL04_04/TreeSetDemo-C/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_04/TreeSetDemo-C/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_04/TreeSetDemo-C/bin/.gitignore b/VL04_04/TreeSetDemo-C/bin/.gitignore new file mode 100644 index 0000000..e7d460a --- /dev/null +++ b/VL04_04/TreeSetDemo-C/bin/.gitignore @@ -0,0 +1 @@ +/inf3/ diff --git a/VL04_04/TreeSetDemo-C/src/inf3/TreeSetDemo.java b/VL04_04/TreeSetDemo-C/src/inf3/TreeSetDemo.java new file mode 100644 index 0000000..0434368 --- /dev/null +++ b/VL04_04/TreeSetDemo-C/src/inf3/TreeSetDemo.java @@ -0,0 +1,32 @@ +/** TreeSetDemo.java +* +* Das Programm demonstriert die Eigenschaften eines TreeSets: +* - Ein Element kann nicht doppelt enthalten sein +* - Die Elemente werden ihrer Ordnung entsprechend einsortiert +* Quelle: Dirk Louis, Peter Müller: Java-Tutorium (Hanser 2016) +* @author - +* @version 1.00, 2017-11-28 +*/package inf3; + +import java.util.Random; +import java.util.TreeSet; + +public class TreeSetDemo { + + public static void main(String[] args) { + TreeSet<Integer> gezogen = new TreeSet<Integer>(); + Random zufall = new Random(); + while (gezogen.size() != 6) { + int z = zufall.nextInt(50); + if (z == 0) + continue; + // zahl speichern + boolean status = gezogen.add(z); + } + System.out.println("Die Lottozahlen:"); + for (Integer i : gezogen) + System.out.print(i + " "); + } +} + + -- GitLab