From 6733ed715bad85369bb89ed9c62893a4f05ef05e Mon Sep 17 00:00:00 2001 From: Daniel Strmecki Date: Sun, 14 Feb 2021 12:12:48 +0100 Subject: [PATCH 1/7] BASE-4618: Create new module, local variable example --- core-java-modules/core-java-lang-4/README.md | 5 +++ core-java-modules/core-java-lang-4/pom.xml | 42 +++++++++++++++++++ .../finalkeyword/LocalVariableFinal.java | 22 ++++++++++ .../finalkeyword/LocalVariableNonFinal.java | 22 ++++++++++ 4 files changed, 91 insertions(+) create mode 100644 core-java-modules/core-java-lang-4/README.md create mode 100644 core-java-modules/core-java-lang-4/pom.xml create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java diff --git a/core-java-modules/core-java-lang-4/README.md b/core-java-modules/core-java-lang-4/README.md new file mode 100644 index 0000000000..ff00688772 --- /dev/null +++ b/core-java-modules/core-java-lang-4/README.md @@ -0,0 +1,5 @@ +## Core Java Lang (Part 4) + +This module contains articles about core features in the Java language + +- TODO diff --git a/core-java-modules/core-java-lang-4/pom.xml b/core-java-modules/core-java-lang-4/pom.xml new file mode 100644 index 0000000000..0761bffcd0 --- /dev/null +++ b/core-java-modules/core-java-lang-4/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + core-java-lang-4 + 0.1.0-SNAPSHOT + core-java-lang-4 + jar + + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + ../ + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + core-java-lang-4 + + + src/main/resources + true + + + + + + 3.19.0 + + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java new file mode 100644 index 0000000000..74f454508f --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java @@ -0,0 +1,22 @@ +package com.baeldung.finalkeyword; + +public class LocalVariableFinal { + + public static void main(String[] args) { + for (int i = 0; i < 1500; i++) { + long startTime = System.nanoTime(); + String result = concatStrings(); + long totalTime = System.nanoTime() - startTime; + if (i >= 500) { + System.out.println(totalTime); + } + } + } + + private static String concatStrings() { + final String x = "x"; + final String y = "y"; + return x + y; + } + +} diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java new file mode 100644 index 0000000000..14b8401d76 --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java @@ -0,0 +1,22 @@ +package com.baeldung.finalkeyword; + +public class LocalVariableNonFinal { + + public static void main(String[] args) { + for (int i = 0; i < 1500; i++) { + long startTime = System.nanoTime(); + String result = concatStrings(); + long totalTime = System.nanoTime() - startTime; + if (i >= 500) { + System.out.println(totalTime); + } + } + } + + private static String concatStrings() { + String x = "x"; + String y = "y"; + return x + y; + } + +} From 78a8d0bc772074b9cb3c1be4ad22b5c4e31d6d43 Mon Sep 17 00:00:00 2001 From: Daniel Strmecki Date: Sat, 20 Feb 2021 18:13:18 +0100 Subject: [PATCH 2/7] BASE-4618: Class variable example --- .../finalkeyword/ClassVariableFinal.java | 23 +++++++++++++++++++ .../finalkeyword/ClassVariableNonFinal.java | 23 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java new file mode 100644 index 0000000000..5d5f5d7ab6 --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java @@ -0,0 +1,23 @@ +package com.baeldung.finalkeyword; + +public class ClassVariableFinal { + + final static String X = "x"; + final static String Y = "y"; + + public static void main(String[] args) { + for (int i = 0; i < 1500; i++) { + long startTime = System.nanoTime(); + String result = concatStrings(); + long totalTime = System.nanoTime() - startTime; + if (i >= 500) { + System.out.println(totalTime); + } + } + } + + private static String concatStrings() { + return X + Y; + } + +} diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java new file mode 100644 index 0000000000..8219b1688f --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java @@ -0,0 +1,23 @@ +package com.baeldung.finalkeyword; + +public class ClassVariableNonFinal { + + static String x = "x"; + static String y = "y"; + + public static void main(String[] args) { + for (int i = 0; i < 1500; i++) { + long startTime = System.nanoTime(); + String result = concatStrings(); + long totalTime = System.nanoTime() - startTime; + if (i >= 500) { + System.out.println(totalTime); + } + } + } + + private static String concatStrings() { + return x + y; + } + +} From 8d8e1b43ca0c5ebe7bdc1c2829fd8cf37bdbdd0e Mon Sep 17 00:00:00 2001 From: Daniel Strmecki Date: Sun, 21 Feb 2021 11:18:05 +0100 Subject: [PATCH 3/7] BASE-4618: Update class variable example --- .../finalkeyword/ClassVariableFinal.java | 22 ++++++++----------- .../finalkeyword/ClassVariableNonFinal.java | 22 ++++++++----------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java index 5d5f5d7ab6..1aeef76e58 100644 --- a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableFinal.java @@ -1,23 +1,19 @@ package com.baeldung.finalkeyword; +import java.io.Console; + public class ClassVariableFinal { - final static String X = "x"; - final static String Y = "y"; + static final boolean doX = false; + static final boolean doY = true; public static void main(String[] args) { - for (int i = 0; i < 1500; i++) { - long startTime = System.nanoTime(); - String result = concatStrings(); - long totalTime = System.nanoTime() - startTime; - if (i >= 500) { - System.out.println(totalTime); - } + Console console = System.console(); + if (doX) { + console.writer().println("x"); + } else if (doY) { + console.writer().println("y"); } } - private static String concatStrings() { - return X + Y; - } - } diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java index 8219b1688f..a6d83a66cb 100644 --- a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/ClassVariableNonFinal.java @@ -1,23 +1,19 @@ package com.baeldung.finalkeyword; +import java.io.Console; + public class ClassVariableNonFinal { - static String x = "x"; - static String y = "y"; + static boolean doX = false; + static boolean doY = true; public static void main(String[] args) { - for (int i = 0; i < 1500; i++) { - long startTime = System.nanoTime(); - String result = concatStrings(); - long totalTime = System.nanoTime() - startTime; - if (i >= 500) { - System.out.println(totalTime); - } + Console console = System.console(); + if (doX) { + console.writer().println("x"); + } else if (doY) { + console.writer().println("y"); } } - private static String concatStrings() { - return x + y; - } - } From ee65b0f8de908aa9e24e96f197768cdad855c869 Mon Sep 17 00:00:00 2001 From: Daniel Strmecki Date: Sun, 21 Feb 2021 11:23:55 +0100 Subject: [PATCH 4/7] BASE-4618: Remove unsed deps --- core-java-modules/core-java-lang-4/pom.xml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/core-java-modules/core-java-lang-4/pom.xml b/core-java-modules/core-java-lang-4/pom.xml index 0761bffcd0..520de40529 100644 --- a/core-java-modules/core-java-lang-4/pom.xml +++ b/core-java-modules/core-java-lang-4/pom.xml @@ -16,15 +16,6 @@ ../ - - - org.assertj - assertj-core - ${assertj.version} - test - - - core-java-lang-4 @@ -34,9 +25,5 @@ - - - 3.19.0 - \ No newline at end of file From f0ee9ddf0233757bcfbe49797475bc62dfe7b4e0 Mon Sep 17 00:00:00 2001 From: Daniel Strmecki Date: Sat, 6 Mar 2021 09:02:04 +0100 Subject: [PATCH 5/7] BASE-4618: Add new module --- core-java-modules/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index a6aecef741..832c148cb8 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -77,6 +77,7 @@ core-java-lang core-java-lang-2 core-java-lang-3 + core-java-lang-4 core-java-lang-math core-java-lang-math-2 core-java-lang-oop-constructors From c8b3ecbd36ff1c5192e1a67673145726354c44d2 Mon Sep 17 00:00:00 2001 From: Daniel Strmecki Date: Sat, 6 Mar 2021 10:00:01 +0100 Subject: [PATCH 6/7] BASE-4618: Use JMH benchmark tool --- core-java-modules/core-java-lang-4/pom.xml | 18 ++++++++++ .../finalkeyword/BenchmarkRunner.java | 34 +++++++++++++++++++ .../finalkeyword/LocalVariableFinal.java | 22 ------------ .../finalkeyword/LocalVariableNonFinal.java | 22 ------------ 4 files changed, 52 insertions(+), 44 deletions(-) create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/BenchmarkRunner.java delete mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java delete mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java diff --git a/core-java-modules/core-java-lang-4/pom.xml b/core-java-modules/core-java-lang-4/pom.xml index 520de40529..3e92e9f9c7 100644 --- a/core-java-modules/core-java-lang-4/pom.xml +++ b/core-java-modules/core-java-lang-4/pom.xml @@ -16,6 +16,20 @@ ../ + + + org.openjdk.jmh + jmh-core + ${jmh.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + test + + + core-java-lang-4 @@ -25,5 +39,9 @@ + + + 1.28 + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/BenchmarkRunner.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/BenchmarkRunner.java new file mode 100644 index 0000000000..ee34114195 --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/BenchmarkRunner.java @@ -0,0 +1,34 @@ +package com.baeldung.finalkeyword; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; + +import java.util.concurrent.TimeUnit; + +public class BenchmarkRunner { + + public static void main(String[] args) throws Exception { + org.openjdk.jmh.Main.main(args); + } + + @Benchmark + @OutputTimeUnit(TimeUnit.NANOSECONDS) + @BenchmarkMode(Mode.AverageTime) + public static String concatNonFinalStrings() { + String x = "x"; + String y = "y"; + return x + y; + } + + @Benchmark + @OutputTimeUnit(TimeUnit.NANOSECONDS) + @BenchmarkMode(Mode.AverageTime) + public static String concatFinalStrings() { + final String x = "x"; + final String y = "y"; + return x + y; + } + +} diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java deleted file mode 100644 index 74f454508f..0000000000 --- a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableFinal.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.finalkeyword; - -public class LocalVariableFinal { - - public static void main(String[] args) { - for (int i = 0; i < 1500; i++) { - long startTime = System.nanoTime(); - String result = concatStrings(); - long totalTime = System.nanoTime() - startTime; - if (i >= 500) { - System.out.println(totalTime); - } - } - } - - private static String concatStrings() { - final String x = "x"; - final String y = "y"; - return x + y; - } - -} diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java deleted file mode 100644 index 14b8401d76..0000000000 --- a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/finalkeyword/LocalVariableNonFinal.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.finalkeyword; - -public class LocalVariableNonFinal { - - public static void main(String[] args) { - for (int i = 0; i < 1500; i++) { - long startTime = System.nanoTime(); - String result = concatStrings(); - long totalTime = System.nanoTime() - startTime; - if (i >= 500) { - System.out.println(totalTime); - } - } - } - - private static String concatStrings() { - String x = "x"; - String y = "y"; - return x + y; - } - -} From 4e88e662f63810cd6bb68474f5c3095248987766 Mon Sep 17 00:00:00 2001 From: Daniel Strmecki Date: Thu, 11 Mar 2021 11:28:49 +0100 Subject: [PATCH 7/7] BASE-4618: Use space --- core-java-modules/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 832c148cb8..db808e5fda 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -77,7 +77,7 @@ core-java-lang core-java-lang-2 core-java-lang-3 - core-java-lang-4 + core-java-lang-4 core-java-lang-math core-java-lang-math-2 core-java-lang-oop-constructors