diff --git a/BeginningJava8Fundamentals/build.xml b/BeginningJava8Fundamentals/build.xml new file mode 100644 index 0000000..9f8a978 --- /dev/null +++ b/BeginningJava8Fundamentals/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project BeginningJava8Fundamentals. + + + diff --git a/BeginningJava8Fundamentals/build/built-jar.properties b/BeginningJava8Fundamentals/build/built-jar.properties new file mode 100644 index 0000000..a6adf45 --- /dev/null +++ b/BeginningJava8Fundamentals/build/built-jar.properties @@ -0,0 +1,4 @@ +#Thu, 15 May 2014 21:12:02 -0500 + + +C\:\\kishori\\books\\Java_8\\Apress\\Beginning\ Java\ 8\ Fundamentals\\SourceCode\\BeginningJava8Fundamentals= diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayBounds.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayBounds.class new file mode 100644 index 0000000..384d475 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayBounds.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayClass.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayClass.class new file mode 100644 index 0000000..93b8a51 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayClass.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayCopyTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayCopyTest.class new file mode 100644 index 0000000..1b8358a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayCopyTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayInit.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayInit.class new file mode 100644 index 0000000..d559952 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayInit.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayListToArray.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayListToArray.class new file mode 100644 index 0000000..868f6fc Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ArrayListToArray.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Calc.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Calc.class new file mode 100644 index 0000000..03aecf1 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Calc.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/CommandLine.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/CommandLine.class new file mode 100644 index 0000000..b451517 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/CommandLine.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Item.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Item.class new file mode 100644 index 0000000..306d711 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Item.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/MDAccess.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/MDAccess.class new file mode 100644 index 0000000..15776c2 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/MDAccess.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayElementState.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayElementState.class new file mode 100644 index 0000000..84cf82e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayElementState.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayElements.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayElements.class new file mode 100644 index 0000000..3b1e2e8 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayElements.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayParam.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayParam.class new file mode 100644 index 0000000..0797a9e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/ModifyArrayParam.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/NameIterator.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/NameIterator.class new file mode 100644 index 0000000..2ec15e4 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/NameIterator.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/RaggedArray.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/RaggedArray.class new file mode 100644 index 0000000..dee1995 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/RaggedArray.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Swap.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Swap.class new file mode 100644 index 0000000..ac75d50 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/array/Swap.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/assertion/AssertTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/assertion/AssertTest.class new file mode 100644 index 0000000..05f92b2 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/assertion/AssertTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/assertion/AssertionStatusTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/assertion/AssertionStatusTest.class new file mode 100644 index 0000000..da4b4a7 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/assertion/AssertionStatusTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevel.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevel.class new file mode 100644 index 0000000..429501d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevel.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevel2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevel2.class new file mode 100644 index 0000000..4ee23fc Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevel2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevelTest1.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevelTest1.class new file mode 100644 index 0000000..d27768e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccessLevelTest1.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Account.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Account.class new file mode 100644 index 0000000..0fe6445 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Account.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccountTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccountTest.class new file mode 100644 index 0000000..4cad8da Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/AccountTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/BadSwapTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/BadSwapTest.class new file mode 100644 index 0000000..22dd69f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/BadSwapTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Car.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Car.class new file mode 100644 index 0000000..08632ef Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Car.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Cat.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Cat.class new file mode 100644 index 0000000..ede186b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Cat.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/CatTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/CatTest.class new file mode 100644 index 0000000..9efdc42 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/CatTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/DefaultInit.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/DefaultInit.class new file mode 100644 index 0000000..727814a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/DefaultInit.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Dog.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Dog.class new file mode 100644 index 0000000..3f76bb2 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Dog.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/DogTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/DogTest.class new file mode 100644 index 0000000..b78f8ca Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/DogTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/FieldAccessTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/FieldAccessTest.class new file mode 100644 index 0000000..b498716 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/FieldAccessTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Human.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Human.class new file mode 100644 index 0000000..169bf0f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Human.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/InstanceInitializer.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/InstanceInitializer.class new file mode 100644 index 0000000..00eb2d4 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/InstanceInitializer.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MainTest1.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MainTest1.class new file mode 100644 index 0000000..b5c115b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MainTest1.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MainTest2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MainTest2.class new file mode 100644 index 0000000..54370dc Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MainTest2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MathUtil5.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MathUtil5.class new file mode 100644 index 0000000..043bbe8 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MathUtil5.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MethodType.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MethodType.class new file mode 100644 index 0000000..9c88cf4 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MethodType.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MethodTypeTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MethodTypeTest.class new file mode 100644 index 0000000..50aa813 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/MethodTypeTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByConstantValueTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByConstantValueTest.class new file mode 100644 index 0000000..74cf828 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByConstantValueTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByReferenceValueTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByReferenceValueTest.class new file mode 100644 index 0000000..c7894b3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByReferenceValueTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByReferenceValueTest2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByReferenceValueTest2.class new file mode 100644 index 0000000..5ca4387 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/PassByReferenceValueTest2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/SmartDog.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/SmartDog.class new file mode 100644 index 0000000..91a154b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/SmartDog.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/SmartDogTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/SmartDogTest.class new file mode 100644 index 0000000..bb61cd8 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/SmartDogTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticImportTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticImportTest.class new file mode 100644 index 0000000..04c74da Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticImportTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticImportTest2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticImportTest2.class new file mode 100644 index 0000000..74db27d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticImportTest2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticInitializer.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticInitializer.class new file mode 100644 index 0000000..8436899 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/StaticInitializer.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest4.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest4.class new file mode 100644 index 0000000..cf497ea Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest4.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest5.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest5.class new file mode 100644 index 0000000..eeee855 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest5.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest6.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest6.class new file mode 100644 index 0000000..bbdad84 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/ThisTest6.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Wrapper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Wrapper.class new file mode 100644 index 0000000..2df1204 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/Wrapper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/WrapperTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/WrapperTest.class new file mode 100644 index 0000000..511b708 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/WrapperTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/p1/AccessLevelTest2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/p1/AccessLevelTest2.class new file mode 100644 index 0000000..56899da Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/cls/p1/AccessLevelTest2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/concepts/Person.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/concepts/Person.class new file mode 100644 index 0000000..64975d0 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/concepts/Person.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/concepts/Person2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/concepts/Person2.class new file mode 100644 index 0000000..7f9230a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/concepts/Person2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datatype/NumTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datatype/NumTest.class new file mode 100644 index 0000000..9344310 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datatype/NumTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/AdjustDates.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/AdjustDates.class new file mode 100644 index 0000000..49ba440 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/AdjustDates.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ChristmasDay.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ChristmasDay.class new file mode 100644 index 0000000..534aeb5 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ChristmasDay.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CurrentDateTime.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CurrentDateTime.class new file mode 100644 index 0000000..aec42bb Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CurrentDateTime.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CurrentLegacyDate.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CurrentLegacyDate.class new file mode 100644 index 0000000..41b16f3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CurrentLegacyDate.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomAdjusterTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomAdjusterTest.class new file mode 100644 index 0000000..455cf47 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomAdjusterTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomAdjusters.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomAdjusters.class new file mode 100644 index 0000000..ed0be4b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomAdjusters.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomQueries.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomQueries.class new file mode 100644 index 0000000..f262297 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/CustomQueries.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/DateAndInstant.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/DateAndInstant.class new file mode 100644 index 0000000..0d8fd72 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/DateAndInstant.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/DateTimeZoneConversion.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/DateTimeZoneConversion.class new file mode 100644 index 0000000..9de262b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/DateTimeZoneConversion.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/FormattingDateTime.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/FormattingDateTime.class new file mode 100644 index 0000000..300ab75 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/FormattingDateTime.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/Friday13Query.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/Friday13Query.class new file mode 100644 index 0000000..f567b95 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/Friday13Query.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/GregorianCalendarAndNewDateTime.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/GregorianCalendarAndNewDateTime.class new file mode 100644 index 0000000..39b3896 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/GregorianCalendarAndNewDateTime.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/GregorianDate.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/GregorianDate.class new file mode 100644 index 0000000..98dd8e1 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/GregorianDate.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/InstantDurationTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/InstantDurationTest.class new file mode 100644 index 0000000..8bd9a03 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/InstantDurationTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/InterCalendarDates.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/InterCalendarDates.class new file mode 100644 index 0000000..d81ef62 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/InterCalendarDates.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalDateTimeTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalDateTimeTest.class new file mode 100644 index 0000000..ddc59a1 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalDateTimeTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalTimeFromZonedDateTime.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalTimeFromZonedDateTime.class new file mode 100644 index 0000000..ce0f271 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalTimeFromZonedDateTime.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalizedFormats.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalizedFormats.class new file mode 100644 index 0000000..22dc439 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/LocalizedFormats.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/MonthTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/MonthTest.class new file mode 100644 index 0000000..5f62e25 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/MonthTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/OffsetDateTimeTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/OffsetDateTimeTest.class new file mode 100644 index 0000000..fcb7296 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/OffsetDateTimeTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/OptionalSectionTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/OptionalSectionTest.class new file mode 100644 index 0000000..13a2210 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/OptionalSectionTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ParseBestTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ParseBestTest.class new file mode 100644 index 0000000..fc01d7b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ParseBestTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/Partials.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/Partials.class new file mode 100644 index 0000000..95129f3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/Partials.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/PeriodTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/PeriodTest.class new file mode 100644 index 0000000..9976bec Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/PeriodTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/PrintAllZoneIds.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/PrintAllZoneIds.class new file mode 100644 index 0000000..50a697b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/PrintAllZoneIds.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/QueryTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/QueryTest.class new file mode 100644 index 0000000..015d7c0 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/QueryTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/TimeBetween.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/TimeBetween.class new file mode 100644 index 0000000..544b692 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/TimeBetween.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZoneOffsetTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZoneOffsetTest.class new file mode 100644 index 0000000..73f496d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZoneOffsetTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZoneRulesTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZoneRulesTest.class new file mode 100644 index 0000000..bc7e5ad Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZoneRulesTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZonedDateTimeTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZonedDateTimeTest.class new file mode 100644 index 0000000..d4756be Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/datetime/ZonedDateTimeTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Command.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Command.class new file mode 100644 index 0000000..b5f0369 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Command.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList$1.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList$1.class new file mode 100644 index 0000000..a74c793 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList$1.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList$2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList$2.class new file mode 100644 index 0000000..a8a72f5 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList$2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList.class new file mode 100644 index 0000000..2ae5ad3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandList.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandTest.class new file mode 100644 index 0000000..8efd5bc Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/CommandTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Day.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Day.class new file mode 100644 index 0000000..ab5977b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Day.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/EnumSetTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/EnumSetTest.class new file mode 100644 index 0000000..162180e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/EnumSetTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/ListEnumConstants.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/ListEnumConstants.class new file mode 100644 index 0000000..b164750 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/ListEnumConstants.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Person$Gender.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Person$Gender.class new file mode 100644 index 0000000..7c0c7b1 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Person$Gender.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Person.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Person.class new file mode 100644 index 0000000..427ef4a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Person.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Severity.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Severity.class new file mode 100644 index 0000000..ed93cff Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/Severity.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SmartSeverity.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SmartSeverity.class new file mode 100644 index 0000000..08d13bc Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SmartSeverity.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SmartSeverityTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SmartSeverityTest.class new file mode 100644 index 0000000..9add057 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SmartSeverityTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$1.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$1.class new file mode 100644 index 0000000..c96cdc3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$1.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$2.class new file mode 100644 index 0000000..d621616 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$3.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$3.class new file mode 100644 index 0000000..b730285 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$3.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$4.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$4.class new file mode 100644 index 0000000..805a282 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity$4.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity.class new file mode 100644 index 0000000..547614a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverity.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverityTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverityTest.class new file mode 100644 index 0000000..bd2d320 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/enums/SuperSmartSeverityTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/DivideByZero.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/DivideByZero.class new file mode 100644 index 0000000..4d9608a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/DivideByZero.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/DivideByZeroWithTryCatch.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/DivideByZeroWithTryCatch.class new file mode 100644 index 0000000..0e7a5c5 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/DivideByZeroWithTryCatch.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/FinallyTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/FinallyTest.class new file mode 100644 index 0000000..0b46de2 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/FinallyTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/MyException.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/MyException.class new file mode 100644 index 0000000..0e77758 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/MyException.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/MyResource.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/MyResource.class new file mode 100644 index 0000000..fb9ce11 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/MyResource.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput.class new file mode 100644 index 0000000..2f7d034 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2.class new file mode 100644 index 0000000..9791c9a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2Test2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2Test2.class new file mode 100644 index 0000000..7f8173d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2Test2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2Test3.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2Test3.class new file mode 100644 index 0000000..09b04f4 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInput2Test3.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInputTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInputTest.class new file mode 100644 index 0000000..c1ba41a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/ReadInputTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/RethrowTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/RethrowTest.class new file mode 100644 index 0000000..30d476d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/RethrowTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/SimpleTryWithResource.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/SimpleTryWithResource.class new file mode 100644 index 0000000..af30f66 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/SimpleTryWithResource.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackFrameTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackFrameTest.class new file mode 100644 index 0000000..d315e10 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackFrameTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackTraceAsStringTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackTraceAsStringTest.class new file mode 100644 index 0000000..c929084 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackTraceAsStringTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackTraceTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackTraceTest.class new file mode 100644 index 0000000..160751e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/exception/StackTraceTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/format/DecimalFormatter.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/DecimalFormatter.class new file mode 100644 index 0000000..6f2ce66 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/DecimalFormatter.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/format/DefaultNumberFormatters.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/DefaultNumberFormatters.class new file mode 100644 index 0000000..850c1d3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/DefaultNumberFormatters.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/format/FormattablePerson.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/FormattablePerson.class new file mode 100644 index 0000000..692321b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/FormattablePerson.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/format/ParseTimeStamp.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/ParseTimeStamp.class new file mode 100644 index 0000000..ccb4add Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/ParseTimeStamp.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/format/PredefinedDateFormats.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/PredefinedDateFormats.class new file mode 100644 index 0000000..0cddd84 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/PredefinedDateFormats.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/format/PrintfTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/PrintfTest.class new file mode 100644 index 0000000..ac3aa21 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/format/PrintfTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOSub.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOSub.class new file mode 100644 index 0000000..c564620 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOSub.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOSuper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOSuper.class new file mode 100644 index 0000000..19cc586 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOSuper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOTest.class new file mode 100644 index 0000000..c3e6e2e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/AOTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Adder.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Adder.class new file mode 100644 index 0000000..dbe37ef Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Adder.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CSub.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CSub.class new file mode 100644 index 0000000..f0c73f0 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CSub.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CSuper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CSuper.class new file mode 100644 index 0000000..df47c5c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CSuper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CTest.class new file mode 100644 index 0000000..60c9692 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/CTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Circle.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Circle.class new file mode 100644 index 0000000..1a05b7a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Circle.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingSub.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingSub.class new file mode 100644 index 0000000..ce25fba Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingSub.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingSuper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingSuper.class new file mode 100644 index 0000000..2ce9f48 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingSuper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingTest.class new file mode 100644 index 0000000..30c676c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EarlyBindingTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EmpUtil.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EmpUtil.class new file mode 100644 index 0000000..edc5dc6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/EmpUtil.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Employee.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Employee.class new file mode 100644 index 0000000..b3ca7cb Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Employee.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Employee2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Employee2.class new file mode 100644 index 0000000..1919bfc Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Employee2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub.class new file mode 100644 index 0000000..247cd1c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub2.class new file mode 100644 index 0000000..0dc7359 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub3.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub3.class new file mode 100644 index 0000000..d56f1d1 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSub3.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSuper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSuper.class new file mode 100644 index 0000000..e4e6a98 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingSuper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest.class new file mode 100644 index 0000000..4dde82d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest2.class new file mode 100644 index 0000000..0d4aefb Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest3.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest3.class new file mode 100644 index 0000000..f2f6b70 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/FHidingTest3.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/GenericSuper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/GenericSuper.class new file mode 100644 index 0000000..223bd1c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/GenericSuper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingSub.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingSub.class new file mode 100644 index 0000000..27664c0 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingSub.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingSuper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingSuper.class new file mode 100644 index 0000000..b4f2aef Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingSuper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingTest.class new file mode 100644 index 0000000..00d690b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/LateBindingTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingSub.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingSub.class new file mode 100644 index 0000000..5691057 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingSub.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingSuper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingSuper.class new file mode 100644 index 0000000..a037a8f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingSuper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingTest.class new file mode 100644 index 0000000..ca184ec Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/MHidingTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager.class new file mode 100644 index 0000000..eeb3fd6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager2.class new file mode 100644 index 0000000..d9451da Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager2Test.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager2Test.class new file mode 100644 index 0000000..5feeade Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Manager2Test.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/OverloadingTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/OverloadingTest.class new file mode 100644 index 0000000..0497d17 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/OverloadingTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Rectangle.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Rectangle.class new file mode 100644 index 0000000..9ec39f7 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Rectangle.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Shape.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Shape.class new file mode 100644 index 0000000..e3f9090 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/Shape.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/ShapeUtil.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/ShapeUtil.class new file mode 100644 index 0000000..175a9ca Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/ShapeUtil.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/ShapeUtilTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/ShapeUtilTest.class new file mode 100644 index 0000000..104c578 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/ShapeUtilTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/SimplestInheritanceTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/SimplestInheritanceTest.class new file mode 100644 index 0000000..75f5475 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/SimplestInheritanceTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/UpcastTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/UpcastTest.class new file mode 100644 index 0000000..321826c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/inheritance/UpcastTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Cat.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Cat.class new file mode 100644 index 0000000..fdb942f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Cat.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/CharitySinger.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/CharitySinger.class new file mode 100644 index 0000000..9928e1b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/CharitySinger.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/CharitySingerPlayer.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/CharitySingerPlayer.class new file mode 100644 index 0000000..6d60c70 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/CharitySingerPlayer.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Choices.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Choices.class new file mode 100644 index 0000000..270939a Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Choices.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ChoicesTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ChoicesTest.class new file mode 100644 index 0000000..584a8a6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ChoicesTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePerson.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePerson.class new file mode 100644 index 0000000..dc3eb9c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePerson.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePersonTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePersonTest.class new file mode 100644 index 0000000..e071b0f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePersonTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePersonTest2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePersonTest2.class new file mode 100644 index 0000000..34c0f0d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/ComparablePersonTest2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Duck.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Duck.class new file mode 100644 index 0000000..e8368c1 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Duck.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/FirstNameComparator.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/FirstNameComparator.class new file mode 100644 index 0000000..30968e2 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/FirstNameComparator.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Fish.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Fish.class new file mode 100644 index 0000000..42884e3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Fish.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Generous.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Generous.class new file mode 100644 index 0000000..09f42a3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Generous.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/GenerousGiver.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/GenerousGiver.class new file mode 100644 index 0000000..2497a14 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/GenerousGiver.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Giver.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Giver.class new file mode 100644 index 0000000..408338c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Giver.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job$1.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job$1.class new file mode 100644 index 0000000..4829e49 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job$1.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job$EmptyJob.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job$EmptyJob.class new file mode 100644 index 0000000..e0e6681 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job$EmptyJob.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job.class new file mode 100644 index 0000000..7f18b1c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Job.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/JobTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/JobTest.class new file mode 100644 index 0000000..8f01672 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/JobTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/LastNameComparator.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/LastNameComparator.class new file mode 100644 index 0000000..51ed7b7 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/LastNameComparator.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Melodist.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Melodist.class new file mode 100644 index 0000000..eb8f0c3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Melodist.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Movable.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Movable.class new file mode 100644 index 0000000..3a651ff Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Movable.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/MovableTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/MovableTest.class new file mode 100644 index 0000000..d758bc5 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/MovableTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Munificent.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Munificent.class new file mode 100644 index 0000000..5294b99 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Munificent.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/MunificentGiver.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/MunificentGiver.class new file mode 100644 index 0000000..24fdc86 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/MunificentGiver.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Named.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Named.class new file mode 100644 index 0000000..4729b5e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Named.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Pen.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Pen.class new file mode 100644 index 0000000..d25be75 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Pen.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Person.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Person.class new file mode 100644 index 0000000..01fbcdd Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Person.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Player.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Player.class new file mode 100644 index 0000000..9ac7dda Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Player.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Singer.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Singer.class new file mode 100644 index 0000000..3991f5c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Singer.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SingerPlayer.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SingerPlayer.class new file mode 100644 index 0000000..dc3391e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SingerPlayer.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SingerWriter.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SingerWriter.class new file mode 100644 index 0000000..9e617e2 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SingerWriter.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/StingyGiver.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/StingyGiver.class new file mode 100644 index 0000000..f4bdfe3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/StingyGiver.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Swimmable.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Swimmable.class new file mode 100644 index 0000000..cfda8e4 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Swimmable.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SwimmableTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SwimmableTest.class new file mode 100644 index 0000000..088b93b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/SwimmableTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Turtle.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Turtle.class new file mode 100644 index 0000000..919d7d9 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Turtle.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/TurtleTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/TurtleTest.class new file mode 100644 index 0000000..fd6d64e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/TurtleTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Walkable.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Walkable.class new file mode 100644 index 0000000..9db323f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Walkable.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Walkables.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Walkables.class new file mode 100644 index 0000000..a911e16 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Walkables.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/WalkablesTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/WalkablesTest.class new file mode 100644 index 0000000..9754699 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/WalkablesTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Writer.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Writer.class new file mode 100644 index 0000000..7fca10e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/interfaces/Writer.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/intro/Welcome.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/intro/Welcome.class new file mode 100644 index 0000000..c2adc05 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/intro/Welcome.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/BadImmutableTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/BadImmutableTest.class new file mode 100644 index 0000000..192f9ad Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/BadImmutableTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Book.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Book.class new file mode 100644 index 0000000..5258a87 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Book.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/CloningTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/CloningTest.class new file mode 100644 index 0000000..f71169f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/CloningTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DeepClone.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DeepClone.class new file mode 100644 index 0000000..44012d6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DeepClone.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DeepCloneTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DeepCloneTest.class new file mode 100644 index 0000000..ab69eef Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DeepCloneTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DoubleHolder.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DoubleHolder.class new file mode 100644 index 0000000..405b5aa Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/DoubleHolder.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Finalize.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Finalize.class new file mode 100644 index 0000000..dfb31f9 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Finalize.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/FinalizeTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/FinalizeTest.class new file mode 100644 index 0000000..436b030 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/FinalizeTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolder.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolder.class new file mode 100644 index 0000000..c591ac0 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolder.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper.class new file mode 100644 index 0000000..efc62d5 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper2.class new file mode 100644 index 0000000..378abe6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper3.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper3.class new file mode 100644 index 0000000..0ac7baa Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntHolderWrapper3.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntWrapper.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntWrapper.class new file mode 100644 index 0000000..058dd4c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntWrapper.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntWrapper2.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntWrapper2.class new file mode 100644 index 0000000..f81a81f Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/IntWrapper2.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ObjectsTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ObjectsTest.class new file mode 100644 index 0000000..8a83cf2 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ObjectsTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Point.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Point.class new file mode 100644 index 0000000..f826ca8 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/Point.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ShallowClone.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ShallowClone.class new file mode 100644 index 0000000..ac7c66b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ShallowClone.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ShallowCloneTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ShallowCloneTest.class new file mode 100644 index 0000000..7217d0e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/ShallowCloneTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartCat.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartCat.class new file mode 100644 index 0000000..d227609 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartCat.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartIntHolder.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartIntHolder.class new file mode 100644 index 0000000..b9e7d6d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartIntHolder.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartPoint.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartPoint.class new file mode 100644 index 0000000..42de0b3 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartPoint.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartPointTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartPointTest.class new file mode 100644 index 0000000..2df600b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/object/SmartPointTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/operator/ArithOperator.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/operator/ArithOperator.class new file mode 100644 index 0000000..8c623d6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/operator/ArithOperator.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/HelloCompact1.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/HelloCompact1.class new file mode 100644 index 0000000..17a3cd6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/HelloCompact1.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/RowSetTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/RowSetTest.class new file mode 100644 index 0000000..5576726 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/RowSetTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/SwingTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/SwingTest.class new file mode 100644 index 0000000..052fb90 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/profiles/SwingTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/AdvanceFindReplace.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/AdvanceFindReplace.class new file mode 100644 index 0000000..10d2aa7 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/AdvanceFindReplace.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/MatchAndreplace.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/MatchAndreplace.class new file mode 100644 index 0000000..b6c6d68 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/MatchAndreplace.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/MatchBoundary.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/MatchBoundary.class new file mode 100644 index 0000000..f393799 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/MatchBoundary.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/NamedGroups.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/NamedGroups.class new file mode 100644 index 0000000..ec4d24c Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/NamedGroups.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/PatternMatcher.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/PatternMatcher.class new file mode 100644 index 0000000..64efb80 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/PatternMatcher.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/PhoneMatcher.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/PhoneMatcher.class new file mode 100644 index 0000000..a823629 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/PhoneMatcher.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/RegexMatch.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/RegexMatch.class new file mode 100644 index 0000000..0523770 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/regex/RegexMatch.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/statement/PrintMatrix.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/statement/PrintMatrix.class new file mode 100644 index 0000000..73bb5e6 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/statement/PrintMatrix.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/string/CollatorStringComparison.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/CollatorStringComparison.class new file mode 100644 index 0000000..b2d895d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/CollatorStringComparison.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/string/Palindrome.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/Palindrome.class new file mode 100644 index 0000000..5d8dc5d Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/Palindrome.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringBuilderTest.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringBuilderTest.class new file mode 100644 index 0000000..6b6a5bb Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringBuilderTest.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringComparison.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringComparison.class new file mode 100644 index 0000000..f7cd24e Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringComparison.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringInSwitch.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringInSwitch.class new file mode 100644 index 0000000..06999da Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringInSwitch.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringLength.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringLength.class new file mode 100644 index 0000000..593119b Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/string/StringLength.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/utility/Calc.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/utility/Calc.class new file mode 100644 index 0000000..95434a0 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/utility/Calc.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/utility/package-info.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/utility/package-info.class new file mode 100644 index 0000000..3f46165 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/utility/package-info.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/wrapper/CachedWrapperObjects.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/wrapper/CachedWrapperObjects.class new file mode 100644 index 0000000..eee2030 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/wrapper/CachedWrapperObjects.class differ diff --git a/BeginningJava8Fundamentals/build/classes/com/jdojo/wrapper/MathUtil.class b/BeginningJava8Fundamentals/build/classes/com/jdojo/wrapper/MathUtil.class new file mode 100644 index 0000000..7f86522 Binary files /dev/null and b/BeginningJava8Fundamentals/build/classes/com/jdojo/wrapper/MathUtil.class differ diff --git a/BeginningJava8Fundamentals/dist/BeginningJava8Fundamentals.jar b/BeginningJava8Fundamentals/dist/BeginningJava8Fundamentals.jar new file mode 100644 index 0000000..0756a7b Binary files /dev/null and b/BeginningJava8Fundamentals/dist/BeginningJava8Fundamentals.jar differ diff --git a/BeginningJava8Fundamentals/dist/README.TXT b/BeginningJava8Fundamentals/dist/README.TXT new file mode 100644 index 0000000..078d6b2 --- /dev/null +++ b/BeginningJava8Fundamentals/dist/README.TXT @@ -0,0 +1,32 @@ +======================== +BUILD OUTPUT DESCRIPTION +======================== + +When you build an Java application project that has a main class, the IDE +automatically copies all of the JAR +files on the projects classpath to your projects dist/lib folder. The IDE +also adds each of the JAR files to the Class-Path element in the application +JAR files manifest file (MANIFEST.MF). + +To run the project from the command line, go to the dist folder and +type the following: + +java -jar "BeginningJava8Fundamentals.jar" + +To distribute this project, zip up the dist folder (including the lib folder) +and distribute the ZIP file. + +Notes: + +* If two JAR files on the project classpath have the same name, only the first +JAR file is copied to the lib folder. +* Only JAR files are copied to the lib folder. +If the classpath contains other types of files or folders, these files (folders) +are not copied. +* If a library on the projects classpath also has a Class-Path element +specified in the manifest,the content of the Class-Path element has to be on +the projects runtime path. +* To set a main class in a standard Java project, right-click the project node +in the Projects window and choose Properties. Then click Run and enter the +class name in the Main Class field. Alternatively, you can manually type the +class name in the manifest Main-Class element. diff --git a/BeginningJava8Fundamentals/manifest.mf b/BeginningJava8Fundamentals/manifest.mf new file mode 100644 index 0000000..328e8e5 --- /dev/null +++ b/BeginningJava8Fundamentals/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/BeginningJava8Fundamentals/nbproject/build-impl.xml b/BeginningJava8Fundamentals/nbproject/build-impl.xml new file mode 100644 index 0000000..ec4dbd8 --- /dev/null +++ b/BeginningJava8Fundamentals/nbproject/build-impl.xml @@ -0,0 +1,1413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BeginningJava8Fundamentals/nbproject/genfiles.properties b/BeginningJava8Fundamentals/nbproject/genfiles.properties new file mode 100644 index 0000000..03a614f --- /dev/null +++ b/BeginningJava8Fundamentals/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=406ff16f +build.xml.script.CRC32=e027bb77 +build.xml.stylesheet.CRC32=8064a381@1.74.1.48 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=406ff16f +nbproject/build-impl.xml.script.CRC32=0f703210 +nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.74.1.48 diff --git a/BeginningJava8Fundamentals/nbproject/private/config.properties b/BeginningJava8Fundamentals/nbproject/private/config.properties new file mode 100644 index 0000000..e69de29 diff --git a/BeginningJava8Fundamentals/nbproject/private/private.properties b/BeginningJava8Fundamentals/nbproject/private/private.properties new file mode 100644 index 0000000..13c502d --- /dev/null +++ b/BeginningJava8Fundamentals/nbproject/private/private.properties @@ -0,0 +1,6 @@ +compile.on.save=true +do.depend=false +do.jar=true +javac.debug=true +javadoc.preview=true +user.properties.file=C:\\Users\\ksharan\\AppData\\Roaming\\NetBeans\\8.0\\build.properties diff --git a/BeginningJava8Fundamentals/nbproject/private/private.xml b/BeginningJava8Fundamentals/nbproject/private/private.xml new file mode 100644 index 0000000..6807a2b --- /dev/null +++ b/BeginningJava8Fundamentals/nbproject/private/private.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/BeginningJava8Fundamentals/nbproject/project.properties b/BeginningJava8Fundamentals/nbproject/project.properties new file mode 100644 index 0000000..7ff07ee --- /dev/null +++ b/BeginningJava8Fundamentals/nbproject/project.properties @@ -0,0 +1,90 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=BeginningJava8Fundamentals +application.vendor=ksharan +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/BeginningJava8Fundamentals.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes=**/com/jdojo/cls/p1/AccessLevelTest3.java, **/com/jdojo/concepts/MathUtil.java, **/com/jdojo/inheritance/AdderTest.java +includes=** +jar.archive.disabled=${jnlp.enabled} +jar.compress=false +jar.index=${jnlp.enabled} +javac.classpath= +# Space-separated list of extra javac options +javac.compilerargs=\ -Xlint:unchecked +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=1.8 +javac.target=1.8 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +jnlp.codebase.type=no.codebase +jnlp.descriptor=application +jnlp.enabled=false +jnlp.mixed.code=default +jnlp.offline-allowed=false +jnlp.signed=false +jnlp.signing= +jnlp.signing.alias= +jnlp.signing.keystore= +main.class=com.jdojo.intro.Welcome +# Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed +manifest.custom.codebase= +# Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions) +manifest.custom.permissions= +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/BeginningJava8Fundamentals/nbproject/project.xml b/BeginningJava8Fundamentals/nbproject/project.xml new file mode 100644 index 0000000..943db2d --- /dev/null +++ b/BeginningJava8Fundamentals/nbproject/project.xml @@ -0,0 +1,15 @@ + + + org.netbeans.modules.java.j2seproject + + + BeginningJava8Fundamentals + + + + + + + + + diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayBounds.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayBounds.java new file mode 100644 index 0000000..87d3d3b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayBounds.java @@ -0,0 +1,18 @@ +// ArrayBounds.java +package com.jdojo.array; + +public class ArrayBounds { + public static void main(String[] args) { + int[] test = new int[3]; + + System.out.println("Assigning 12 to the first element"); + test[0] = 12; // index 0 is between 0 and 2. Ok + + System.out.println("Assigning 79 to the fourth element"); + + // index 3 is not between 0 and 2. At runtime, an exception is thrown. + test[3] = 79; + + System.out.println("We will not get here"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayClass.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayClass.java new file mode 100644 index 0000000..9958256 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayClass.java @@ -0,0 +1,33 @@ +// ArrayClass.java +package com.jdojo.array; + +public class ArrayClass { + public static void main (String[] args){ + int[] iArr = new int[2]; + int[][] iiArr = new int[2][2]; + int[][][] iiiArr = new int[2][2][2]; + + String[] sArr = {"A", "B"} ; + String[][] ssArr = {{"AA"}, {"BB"}} ; + String[][][] sssArr = {} ; // A 3D empty array of string + + // Print the class name for all arrays + System.out.println("int[]:" + getClassName(iArr)); + System.out.println("int[][]:" + getClassName(iiArr)); + System.out.println("int[][][]:" + getClassName(iiiArr)); + System.out.println("String[]:" + getClassName(sArr)); + System.out.println("String[][]:" + getClassName(ssArr)); + System.out.println("String[][][]:" + getClassName(sssArr)); + } + + // Any java object can be passed to getClassName() method. + // Since every array is an object, we can also pass an array to this method. + public static String getClassName(Object obj) { + // Get the reference of its class + Class c = obj.getClass(); + + // Get the name of the class + String className = c.getName(); + return className; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayCopyTest.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayCopyTest.java new file mode 100644 index 0000000..b67f05a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayCopyTest.java @@ -0,0 +1,52 @@ +// ArrayCopyTest.java +package com.jdojo.array; + +import java.util.Arrays; + +public class ArrayCopyTest { + public static void main(String[] args) { + // Have an array with 5 elements + int[] data = {1, 2, 3, 4, 5 }; + + // Expand the data array to 7 elements + int[] eData = expandArray(data, 7); + + // Truncate the data array to 3 elements + int[] tData = expandArray(data, 3); + + System.out.println("Using for-loop..."); + System.out.println("Original Array: " + Arrays.toString(data)); + System.out.println("Expanded Array: " + Arrays.toString(eData)); + System.out.println("Truncated Array: " + Arrays.toString(tData)); + + // Copy data array to new arrays + eData = new int[9]; + tData = new int[2]; + System.arraycopy(data, 0, eData, 0, 5); + System.arraycopy(data, 0, tData, 0, 2); + + System.out.println("Using System.arraycopy() method..."); + System.out.println("Original Array: " + Arrays.toString(data)); + System.out.println("Expanded Array: " + Arrays.toString(eData)); + System.out.println("Truncated Array: " + Arrays.toString(tData)); + } + + // Uses a for-loop to copy an array + public static int[] expandArray(int[] oldArray, int newLength) { + int originalLength = oldArray.length; + int[] newArray = new int[newLength]; + int elementsToCopy = 0; + + if (originalLength > newLength) { + elementsToCopy = newLength; + } + else { + elementsToCopy = originalLength; + } + + for (int i = 0; i < elementsToCopy; i++) { + newArray[i] = oldArray[i]; + } + return newArray; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayInit.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayInit.java new file mode 100644 index 0000000..972761d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayInit.java @@ -0,0 +1,32 @@ +// ArrayInit.java +package com.jdojo.array; + +public class ArrayInit { + private boolean[] bArray = new boolean[3]; // An instance variable + + public ArrayInit() { + // Display the initial value for elements of instance variable bArray + for (int i = 0; i < bArray.length; i++) { + System.out.println("bArray[" + i + "]:" + bArray[i]); + } + } + + public static void main(String[] args) { + System.out.println("int array initialization:"); + int[] empId = new int[3]; // A local array variable + for (int i = 0; i < empId.length; i++) { + System.out.println("empId[" + i + "]:" + empId[i]); + } + + System.out.println("boolean array initialization:"); + + // Initial value for bArray elements are displayed inside the constructor + new ArrayInit(); + + System.out.println("Reference type array initialization:"); + String[] name = new String[3]; + for (int i = 0; i < name.length; i++) { + System.out.println("name[" + i + "]:" + name[i]); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayListToArray.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayListToArray.java new file mode 100644 index 0000000..0fc806a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ArrayListToArray.java @@ -0,0 +1,46 @@ +// ArrayListToArray.java +package com.jdojo.array; + +import java.util.ArrayList; +import java.util.Arrays; + +public class ArrayListToArray { + public static void main(String[] args){ + ArrayList al = new ArrayList(); + al.add("cat"); + al.add("dog"); + al.add("rat"); + + // Print the content of arrayList + System.out.println("ArrayList:" + al); + + // Create an array of the same length as the ArrayList + String[] s1 = new String[al.size()]; + + // Copy the ArrayList elements to the array + String[] s2 = al.toArray(s1); + + // s1 has enough space to copy all ArrayList elements. + // al.toArray(s1) returns s1 itself + System.out.println("s1 == s2:" + (s1 == s2)); + System.out.println("s1:" + Arrays.toString(s1)); + System.out.println("s2:" + Arrays.toString(s2)); + + + // Create an array of string with 1 element. + s1 = new String[1]; + s1[0] = "hello" ; // Store hello in first element + + // Copy ArrayList to the array s1 + s2 = al.toArray(s1); + + /* Since s1 doesn't have sufficient space to copy all ArrayList elements, + al.toArray(s1) creates a new String array with 3 elements in it. All elements of + arraylist are copied to new array. Finally, new array is returned. Here, s1 == + s2 is false. s1 will be untouched by the method call. + */ + System.out.println("s1 == s2:" + (s1 == s2)); + System.out.println("s1:" + Arrays.toString(s1)); + System.out.println("s2:" + Arrays.toString(s2)); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/Calc.java b/BeginningJava8Fundamentals/src/com/jdojo/array/Calc.java new file mode 100644 index 0000000..8f4e4c3 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/Calc.java @@ -0,0 +1,73 @@ +// Calc.java +package com.jdojo.array; + +import java.util.Arrays; + +public class Calc { + public static void main(String[] args) { + // Print the list of commandline argument + System.out.println(Arrays.toString(args)); + + // Make sure we received three arguments and the + // the second argument has only one character to indicate operation. + if (!(args.length == 3 && args[1].length() == 1)) { + printUsage(); + return; // Stop the program here + } + + // Parse the two number operands. Place the parsing code inside a try-catch, + // so we will handle the error in case both operands are not numbers. + double n1 = 0.0; + double n2 = 0.0; + try { + n1 = Double.parseDouble(args[0]); + n2 = Double.parseDouble(args[2]); + } + catch (NumberFormatException e) { + System.out.println("Both operands must be a number"); + printUsage(); + return; // Stop the program here + } + + String operation = args[1]; + double result = compute(n1, n2, operation); + + // Print the result + System.out.println(args[0] + args[1] + args[2] + "=" + result); + } + + public static double compute(double n1, double n2, String operation) + { + // Initialize the result with not-a-number + double result = Double.NaN; + + switch (operation) { + case "+": + result = n1 + n2; + break; + case "-": + result = n1 - n2; + break; + case "*": + result = n1 * n2; + break; + case "/": + result = n1 / n2; + break; + default: + System.out.println("Invalid operation:" + operation); + } + + return result; + } + + public static void printUsage() { + System.out.println("Usage: java com.jdojo.array.Calc expr"); + System.out.println("Where expr could be:"); + System.out.println("n1 + n1"); + System.out.println("n1 - n2"); + System.out.println("n1 * n2"); + System.out.println("n1 / n2"); + System.out.println("n1 and n2 are two numbers"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/CommandLine.java b/BeginningJava8Fundamentals/src/com/jdojo/array/CommandLine.java new file mode 100644 index 0000000..a36f6bd --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/CommandLine.java @@ -0,0 +1,14 @@ +// CommandLine.java +package com.jdojo.array; + +public class CommandLine { + public static void main(String[] args) { + // args contains all command-line arguments + System.out.println("Total Arguments:" + args.length); + + // Display all arguments + for(int i = 0 ; i < args.length; i++) { + System.out.println("Argument #" + (i+1) + ":" + args[i]); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/Item.java b/BeginningJava8Fundamentals/src/com/jdojo/array/Item.java new file mode 100644 index 0000000..a806f7d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/Item.java @@ -0,0 +1,24 @@ +// Item.java +package com.jdojo.array; + +public class Item { + private double price; + private String name; + + public Item (String name, double initialPrice) { + this.name = name; + this.price = initialPrice; + } + + public double getPrice() { + return this.price; + } + + public void setPrice(double newPrice ) { + this.price = newPrice; + } + + public String toString() { + return "[" + this.name + ", " + this.price + "]"; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/MDAccess.java b/BeginningJava8Fundamentals/src/com/jdojo/array/MDAccess.java new file mode 100644 index 0000000..fe69c8b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/MDAccess.java @@ -0,0 +1,28 @@ +// MDAccess.java +package com.jdojo.array; + +public class MDAccess { + public static void main(String[] args){ + int[][] ra = new int[3][]; + ra[0] = new int[2]; + ra[1] = new int[1]; + ra[2] = new int[3]; + + // Populate the ragged array using for loops + for(int i = 0; i < ra.length; i++) { + for(int j = 0; j < ra[i].length; j++){ + ra[i][j] = i + j; + } + } + + // Print the array using for loops + for(int i = 0; i < ra.length; i++) { + for (int j = 0; j < ra[i].length; j++){ + System.out.print(ra[i][j] + "\t"); + } + + // Add a new line after each row is printed + System.out.println(); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayElementState.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayElementState.java new file mode 100644 index 0000000..4ef8ed0 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayElementState.java @@ -0,0 +1,23 @@ +// ModifyArrayElementState.java +package com.jdojo.array; + +public class ModifyArrayElementState { + public static void main(String[] args) { + Item[] myItems = {new Item("Pen", 25.11), new Item("Pencil", 0.10)}; + System.out.println("Before method call #1:" + myItems[0]); + System.out.println("Before method call #2:" + myItems[1]); + + // Call the method passing the array of Item + tryStateChange(myItems); + + System.out.println("After method call #1:" + myItems[0]); + System.out.println("After method call #2:" + myItems[1]); + } + + public static void tryStateChange(Item[] allItems) { + if (allItems != null && allItems.length > 0) { + // Change the price of first item to 10.38 + allItems[0].setPrice(10.38); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayElements.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayElements.java new file mode 100644 index 0000000..0f033a4 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayElements.java @@ -0,0 +1,35 @@ +// ModifyArrayElements.java +package com.jdojo.array; + +import java.util.Arrays; + +public class ModifyArrayElements { + + public static void main(String[] args) { + int[] origNum = {10, 89, 7}; + String[] origNames = {"Mike", "John"}; + System.out.println("Before method call, origNum:" + Arrays.toString(origNum)); + System.out.println("Before method call, origNames:" + Arrays.toString(origNames)); + + // Call methods passing the arrays + tryElementChange(origNum); + tryElementChange(origNames); + + System.out.println("After method call, origNum:" + Arrays.toString(origNum)); + System.out.println("After method call, origNames:" + Arrays.toString(origNames)); + } + + public static void tryElementChange(int[] num) { + // If array has at least one element, store 1116 in its first element + if (num != null && num.length > 0) { + num[0] = 1116; + } + } + + public static void tryElementChange(String[] names) { + // If array has at least one element, store "Twinkle" in its first element + if (names != null && names.length > 0) { + names[0] = "Twinkle"; + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayParam.java b/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayParam.java new file mode 100644 index 0000000..038ab6e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/ModifyArrayParam.java @@ -0,0 +1,25 @@ +// ModifyArrayParam.java +package com.jdojo.array; + +import java.util.Arrays; + +public class ModifyArrayParam { + public static void main(String[] args) { + int[] origNum = {101, 307, 78}; + System.out.println("Before method call:" + Arrays.toString(origNum)); + + // Pass the array to the method + tryArrayChange(origNum); + + System.out.println("After method call:" + Arrays.toString(origNum)); + } + + public static void tryArrayChange(int[] num) { + System.out.println("Inside method-1:" + Arrays.toString(num)); + + // Create and store a new int array in num + num = new int[]{10, 20}; + + System.out.println("Inside method–2:" + Arrays.toString(num)); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/NameIterator.java b/BeginningJava8Fundamentals/src/com/jdojo/array/NameIterator.java new file mode 100644 index 0000000..98243d9 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/NameIterator.java @@ -0,0 +1,39 @@ +// NameIterator.java +package com.jdojo.array; + +import java.util.ArrayList; + +public class NameIterator { + public static void main(String[] args) { + // Create an ArrayList of String + ArrayList nameList = new ArrayList(); + + //Add some names + nameList.add("Christopher"); + nameList.add("Kathleen"); + nameList.add("Ann"); + + // Get the count of names in the list + int count = nameList.size(); + + // Let us print the name list + System.out.println("List of names..."); + for(int i = 0; i < count; i++) { + String name = nameList.get(i); + System.out.println(name); + } + + // Let us remove Kathleen from the list + nameList.remove("Kathleen"); + + // Get the count of names in the list again + count = nameList.size(); + + // Let us print the name list again + System.out.println("After removing Kathleen..."); + for(int i = 0; i < count; i++) { + String name = nameList.get(i); + System.out.println(name); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/RaggedArray.java b/BeginningJava8Fundamentals/src/com/jdojo/array/RaggedArray.java new file mode 100644 index 0000000..c4e3664 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/RaggedArray.java @@ -0,0 +1,31 @@ +// RaggedArray.java +package com.jdojo.array; + +public class RaggedArray { + public static void main(String[] args) { + // Create a two-dimensional array of 3 rows + int[][] raggedArr = new int[3][]; + + // Add 2 columns to the first row + raggedArr[0] = new int[2]; + + // Add 1 column to the second row + raggedArr[1] = new int[1]; + + // Add 3 columns to the third row + raggedArr[2] = new int[3]; + + // Assign values to all elements of raggedArr + raggedArr[0][0] = 1; + raggedArr[0][1] = 2; + raggedArr[1][0] = 3; + raggedArr[2][0] = 4; + raggedArr[2][1] = 5; + raggedArr[2][2] = 6; + + // Print all elements. One row at one line + System.out.println(raggedArr[0][0] + "\t" + raggedArr[0][1]); + System.out.println(raggedArr[1][0]); + System.out.println(raggedArr[2][0] + "\t" + raggedArr[2][1] + "\t" + raggedArr[2][2]); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/array/Swap.java b/BeginningJava8Fundamentals/src/com/jdojo/array/Swap.java new file mode 100644 index 0000000..075a7bd --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/array/Swap.java @@ -0,0 +1,30 @@ +// Swap.java +package com.jdojo.array; + +public class Swap { + public static void main(String[] args) { + int[] num = {17, 80}; + + System.out.println("Before swap"); + System.out.println("#1: " + num[0]); + System.out.println("#2: " + num[1]); + + // Call the swpa() method passing the num array + swap(num); + + System.out.println("After swap"); + System.out.println("#1: " + num[0]); + System.out.println("#2: " + num[1]); + } + + // The swap() method accepts an int array as argument and swaps the values + // if array contains two values. + public static void swap (int[] source) { + if (source != null && source.length == 2) { + // Swap the first and the second elements + int temp = source[0]; + source[0] = source[1]; + source[1] = temp; + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/assertion/AssertTest.java b/BeginningJava8Fundamentals/src/com/jdojo/assertion/AssertTest.java new file mode 100644 index 0000000..644bb93 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/assertion/AssertTest.java @@ -0,0 +1,9 @@ +// AssertTest.java +package com.jdojo.assertion; + +public class AssertTest { + public static void main(String[] args) { + int x = 10 + 15; + assert x == 100:"x = " + x; // should throw an AssertionError + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/assertion/AssertionStatusTest.java b/BeginningJava8Fundamentals/src/com/jdojo/assertion/AssertionStatusTest.java new file mode 100644 index 0000000..40d358b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/assertion/AssertionStatusTest.java @@ -0,0 +1,15 @@ +// AssertionStatusTest.java +package com.jdojo.assertion; + +public class AssertionStatusTest { + public static void main(String[] args) { + boolean enabled = false; + assert enabled = true; + if (enabled) { + System.out.println("Assertion is enabled."); + } + else { + System.out.println("Assertion is disabled."); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel.java new file mode 100644 index 0000000..a8d83c1 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel.java @@ -0,0 +1,33 @@ +// AccessLevel.java +package com.jdojo.cls; + +public class AccessLevel { + private int v1 = 100; + int v2 = 200; + protected int v3 = 300; + public int v4 = 400; + + private void m1() { + System.out.println("Inside m1():"); + System.out.println("v1 = " + v1 + ", v2 = " + v2 + + ", v3 = " + v3 + ", v4 = " + v4); + } + + void m2() { + System.out.println("Inside m2():"); + System.out.println("v1 = " + v1 + ", v2 = " + v2 + + ", v3 = " + v3 + ", v4 = " + v4); + } + + protected void m3() { + System.out.println("Inside m3():"); + System.out.println("v1 = " + v1 + ", v2 = " + v2 + + ", v3 = " + v3 + ", v4 = " + v4); + } + + public void m4() { + System.out.println("Inside m4():"); + System.out.println("v1 = " + v1 + ", v2 = " + v2 + + ", v3 = " + v3 + ", v4 = " + v4); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel/AccessLevelTest2.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel/AccessLevelTest2.java new file mode 100644 index 0000000..cc7127f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel/AccessLevelTest2.java @@ -0,0 +1,32 @@ +// AccessLevelTest2.java +package com.jdojo.cls.p1; + +import com.jdojo.cls.AccessLevel; + +public class AccessLevelTest2 { + public static void main(String[] args) { + AccessLevel al = new AccessLevel(); + + //int a = al.v1; /* A compiler error */ + //int b = al.v2; /* A compiler error */ + //int c = al.v3; /* A compiler error */ + int d = al.v4; + + System.out.println("d = " + d); + + //al.m1(); /* A compiler error */ + //al.m2(); /* A compiler error */ + //al.m3(); /* A compiler error */ + al.m4(); + + /* Modify the values of instance variables */ + //al.v2 = 20; /* A compiler error */ + //al.v3 = 30; /* A compiler error */ + al.v4 = 40; + + System.out.println("After modifying v4..."); + //al.m2(); /* A compiler error */ + //al.m3(); /* A compiler error */ + al.m4(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel2.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel2.java new file mode 100644 index 0000000..d1e06f7 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevel2.java @@ -0,0 +1,6 @@ +// AccessLevel2.java +package com.jdojo.cls; + +class AccessLevel2 { + public static int v1 = 600; +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevelTest1.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevelTest1.java new file mode 100644 index 0000000..ef43464 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccessLevelTest1.java @@ -0,0 +1,31 @@ +// AccessLevelTest1.java +package com.jdojo.cls; + +public class AccessLevelTest1 { + public static void main(String[] args) { + AccessLevel al = new AccessLevel(); + + // int a = al.v1; /* A compiler error */ + int b = al.v2; + int c = al.v3; + int d = al.v4; + + System.out.println("b = " + b + ", c = " + c + ", d = " + d); + + //al.m1(); /* A compiler error */ + al.m2(); + al.m3(); + al.m4(); + + /* Modify the values of instance variables */ + al.v2 = 20; + al.v3 = 30; + al.v4 = 40; + + System.out.println("\nAfter modifying v2, v3 and v4"); + + al.m2(); + al.m3(); + al.m4(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/Account.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/Account.java new file mode 100644 index 0000000..9698dc6 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/Account.java @@ -0,0 +1,43 @@ +// Account.java +package com.jdojo.cls; + +public class Account { + private double balance; + + public double getBalance() { + // Return the balance of this account + return this.balance; + } + + public int credit(double amount) { + // Make sure credit amount is not negative, NaN or infinity + if (amount < 0.0 || Double.isNaN(amount) || Double.isInfinite(amount)) { + System.out.println("Invalid credit amount: " + amount); + return -1; + } + + // Credit the amount + System.out.println("Crediting amount: " + amount); + this.balance = this.balance + amount; + return 1; + } + + public int debit(double amount) { + // Make sure the debit amount is not negative, NaN or infinity */ + if (amount < 0.0 || Double.isNaN(amount) || Double.isInfinite(amount)) { + System.out.println("Invalid debit amount: " + amount); + return -1; + } + + // Make sure a minimum balance of zero is maintained + if (this.balance < amount) { + System.out.println("Insufficient fund. Debit attempted: " + amount); + return -1; + } + + // Debit the amount + System.out.println("Debiting amount: " + amount); + this.balance = this.balance - amount; + return 1; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/AccountTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccountTest.java new file mode 100644 index 0000000..c062bcc --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/AccountTest.java @@ -0,0 +1,30 @@ +// AccountTest.java +package com.jdojo.cls; + +public class AccountTest { + public static void main(String[] args) { + Account ac = new Account(); + double balance = ac.getBalance(); + System.out.println("Balance = " + balance); + + // Credit and debit some amount + ac.credit(234.78); + ac.debit(100.12); + + balance = ac.getBalance(); + System.out.println("Balance = " + balance); + + // Attempt to credit and debit invalid amounts + ac.credit(-234.90); + ac.debit(Double.POSITIVE_INFINITY); + + balance = ac.getBalance(); + System.out.println("Balance = " + balance); + + // Attempt to debit more than the balance + ac.debit(2000.00); + + balance = ac.getBalance(); + System.out.println("Balance = " + balance); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/BadSwapTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/BadSwapTest.java new file mode 100644 index 0000000..dc14d6f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/BadSwapTest.java @@ -0,0 +1,26 @@ +// BadSwapTest.java +package com.jdojo.cls; + +public class BadSwapTest { + public static void swap(int x, int y) { + System.out.println("#2: x = " + x + ", y = " + y); + + int temp = x; + x = y; + y = temp; + + System.out.println("#3: x = " + x + ", y = " + y); + } + + public static void main(String[] args) { + int a = 19; + int b = 37; + + System.out.println("#1: a = " + a + ", b = " + b); + + // Call the swap() method to swap values of a and b + BadSwapTest.swap(a, b); + + System.out.println("#4: a = " + a + ", b = " + b); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/Car.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/Car.java new file mode 100644 index 0000000..f766860 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/Car.java @@ -0,0 +1,8 @@ +// Car.java +package com.jdojo.cls; + +public class Car { + public String model = "Unknown"; + public int year = 2000; + public double price = 0.0; +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/Cat.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/Cat.java new file mode 100644 index 0000000..de2dcfd --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/Cat.java @@ -0,0 +1,8 @@ +// Cat.java +package com.jdojo.cls; + +public class Cat { + public Cat() { + System.out.println("Meow..."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/CatTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/CatTest.java new file mode 100644 index 0000000..f5953b8 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/CatTest.java @@ -0,0 +1,12 @@ +// CatTest.java +package com.jdojo.cls; + +public class CatTest { + public static void main(String[] args) { + // Create a Cat object and ignore its reference + new Cat(); + + // Create another Cat object and store its reference in c + Cat c = new Cat(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/DefaultInit.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/DefaultInit.java new file mode 100644 index 0000000..ed2e2d1 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/DefaultInit.java @@ -0,0 +1,28 @@ +// DefaultInit.java +package com.jdojo.cls; + +class DefaultInit { + byte b; + short s; + int i; + long l; + float f; + double d; + boolean bool; + String str; + + public static void main(String[] args) { + // Create an object of DefaultInit class + DefaultInit obj = new DefaultInit(); + + // Print the default values for all instance variables + System.out.println("byte is initialized to " + obj.l); + System.out.println("short is initialized to " + obj.s); + System.out.println("int is initialized to " + obj.i); + System.out.println("long is initialized to " + obj.l); + System.out.println("float is initialized to " + obj.f); + System.out.println("double is initialized to " + obj.d); + System.out.println("boolean is initialized to " + obj.bool); + System.out.println("String is initialized to " + obj.str); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/Dog.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/Dog.java new file mode 100644 index 0000000..771f225 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/Dog.java @@ -0,0 +1,14 @@ +// Dog.java +package com.jdojo.cls; + +public class Dog { + // Constructor #1 + public Dog() { + System.out.println("A dog is created."); + } + + // Constructor #2 + public Dog(String name) { + System.out.println("A dog named " + name + " is created."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/DogTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/DogTest.java new file mode 100644 index 0000000..d8060f1 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/DogTest.java @@ -0,0 +1,9 @@ +// DogTest.java +package com.jdojo.cls; + +public class DogTest { + public static void main(String[] args) { + Dog d1 = new Dog(); // Uses Constructor #1 + Dog d2 = new Dog ("Canis"); // Uses Constructor #2 + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/FieldAccessTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/FieldAccessTest.java new file mode 100644 index 0000000..3782fb8 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/FieldAccessTest.java @@ -0,0 +1,32 @@ +// FieldAccessTest.java +package com.jdojo.cls; + +class FieldAccessTest { + public static void main(String[] args) { + // Create an instance of Human class + Human jack = new Human(); + + // Increase count by one + Human.count++; + + // Assign values to name and gender + jack.name = "Jack Parker"; + jack.gender = "Male"; + + // Read and print the values of name, gender and count + String jackName = jack.name; + String jackGender = jack.gender; + long population = Human.count; + + System.out.println("Name: " + jackName); + System.out.println("Gender: " + jackGender); + System.out.println("Population: " + population); + + // Change the name + jack.name = "Jackie Parker"; + + // Read and print the changed name + String changedName = jack.name; + System.out.println("Changed Name: " + changedName); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/Human.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/Human.java new file mode 100644 index 0000000..1993f94 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/Human.java @@ -0,0 +1,8 @@ +// Human.java +package com.jdojo.cls; + +public class Human { + String name; // Instance variable + String gender; // Instance variable + static long count; // Class variable +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/InstanceInitializer.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/InstanceInitializer.java new file mode 100644 index 0000000..32f0e93 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/InstanceInitializer.java @@ -0,0 +1,20 @@ +// InstanceInitializer.java +package com.jdojo.cls; + +public class InstanceInitializer { + { + System.out.println("Inside instance initializer 1."); + } + + { + System.out.println("Inside instance initializer 2."); + } + + public InstanceInitializer() { + System.out.println("Inside no-args constructor."); + } + + public static void main(String[] args) { + InstanceInitializer ii = new InstanceInitializer(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/MainTest1.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/MainTest1.java new file mode 100644 index 0000000..62f9a28 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/MainTest1.java @@ -0,0 +1,8 @@ +// MainTest1.java +package com.jdojo.cls; + +public class MainTest1 { + public static void main(String[] args) { + System.out.println("Inside main() method of the MainTest1 class."); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/MainTest2.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/MainTest2.java new file mode 100644 index 0000000..8fe2fd0 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/MainTest2.java @@ -0,0 +1,8 @@ +// MainTest2.java +package com.jdojo.cls; + +public class MainTest2 { + public static void main(String[] args) { + MainTest1.main(args); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/MathUtil5.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/MathUtil5.java new file mode 100644 index 0000000..e3d2ab5 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/MathUtil5.java @@ -0,0 +1,22 @@ +// MathUtil5.java +package com.jdojo.cls; + +public class MathUtil5 { + public static int max(int n1, int n2, int... num) { + // Initialize max to the maximu of n1 and n2 + int max = (n1 > n2 ? n1 : n2); + + for(int i = 0; i < num.length; i++) { + if (num[i] > max) { + max = num[i]; + } + } + return max; + } + + public static void main(String[] args) { + System.out.println("max(7, 9) = " + MathUtil5.max(7, 9)); + System.out.println("max(70, 19, 30) = " + MathUtil5.max(70, 19, 30)); + System.out.println("max(-7, -1, 3) = " + MathUtil5.max(-70, -1, 3)); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/MethodType.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/MethodType.java new file mode 100644 index 0000000..4073383 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/MethodType.java @@ -0,0 +1,25 @@ +// MethodType.java +package com.jdojo.cls; + +public class MethodType { + static int m = 100; // A static variable + int n = 200; // An instance variable + + // Declare a static method + static void printM() { + + /* We can refer to only static variable m in this method + because we are inside a static method */ + + System.out.println("printM() - m = " + m); + + /* System.out.println("printM() - n = " + n); */ /* A Compiler error */ + } + + // Declare an instance method + void printMN() { + /* We can refer to both static and instance variables m and n in this method */ + System.out.println("printMN() - m = " + m); + System.out.println("printMN() - n = " + n); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/MethodTypeTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/MethodTypeTest.java new file mode 100644 index 0000000..25fc4b3 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/MethodTypeTest.java @@ -0,0 +1,24 @@ +// MethodTypeTest.java +package com.jdojo.cls; + +public class MethodTypeTest { + public static void main(String[] args) { + // Create an instance of the MethodTYpe class + MethodType mt = new MethodType(); + + System.out.println("Invoking instance method..."); + + // Invoke the instance method + mt.printMN(); + + System.out.println("Invoking class method on class name..."); + + // Invoke the class method using the class name + MethodType.printM(); + + System.out.println("Invoking class method on an instance..."); + + // Invoke the class method using the instance reference + mt.printM(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByConstantValueTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByConstantValueTest.java new file mode 100644 index 0000000..b904af9 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByConstantValueTest.java @@ -0,0 +1,24 @@ +// PassByConstantValueTest.java +package com.jdojo.cls; + +public class PassByConstantValueTest { + // x uses pass by constant value and y uses pass by value + public static void test(final int x, int y) { + System.out.println("#2: x = " + x + ", y = " + y); + + /* Uncommenting following statement will generate a compiler error */ + // x = 79; /* Cannot change x. It is passed by constant value */ + + y = 223; // Ok to change y + + System.out.println("#3: x = " + x + ", y = " + y); + } + + public static void main(String[] args) { + int a = 19; + int b = 37; + System.out.println("#1: a = " + a + ", b = " + b); + PassByConstantValueTest.test(a, b); + System.out.println("#4: a = " + a + ", b = " + b); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByReferenceValueTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByReferenceValueTest.java new file mode 100644 index 0000000..526dc9b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByReferenceValueTest.java @@ -0,0 +1,37 @@ +// PassByReferenceValueTest.java +package com.jdojo.cls; + +public class PassByReferenceValueTest { + public static void main(String[] args) { + // Create a Car object and assign its reference to myCar + Car myCar = new Car(); + + // Change model, year and price of Car object using myCar + myCar.model = "Civic LX"; + myCar.year = 1999; + myCar.price = 16000.0; + + System.out.println("#1: model = " + myCar.model + + ", year = " + myCar.year + + ", price = " + myCar.price); + + PassByReferenceValueTest.test(myCar); + + System.out.println("#4: model = " + myCar.model + + ", year = " + myCar.year + + ", price = " + myCar.price); + } + + public static void test(Car xyCar) { + System.out.println("#2: model = " + xyCar.model + + ", year = " + xyCar.year + + ", price = " + xyCar.price); + + // Let us make xyCar refer to a new Car object + xyCar = new Car(); + + System.out.println("#3: model = " + xyCar.model + + ", year = " + xyCar.year + + ", price = " + xyCar.price); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByReferenceValueTest2.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByReferenceValueTest2.java new file mode 100644 index 0000000..445e373 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/PassByReferenceValueTest2.java @@ -0,0 +1,17 @@ +// PassByReferenceValueTest2.java +package com.jdojo.cls; + +public class PassByReferenceValueTest2 { + public static void changeString(String s2) { + System.out.println("#2: s2 = " + s2); + s2 = s2 + " there"; + System.out.println("#3: s2 = " + s2); + } + + public static void main(String[] args) { + String s1 = "hi"; + System.out.println("#1: s1 = " + s1); + PassByReferenceValueTest2.changeString(s1); + System.out.println("#4: s1 = " + s1); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/SmartDog.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/SmartDog.java new file mode 100644 index 0000000..6cf3caf --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/SmartDog.java @@ -0,0 +1,54 @@ +// SmartDog.java +package com.jdojo.cls; + +public class SmartDog { + private String name; + private double price; + + public SmartDog() { + // Initialize the name to “Unknown” and the price to 0.0 + this.name = "Unknown"; + this.price = 0.0; + + System.out.println("Using SmartDog() constructor"); + } + + public SmartDog(String name, double price) { + // Initialize name and price instance variables + // with the name and price parameters + this.name = name; + this.price = price; + + System.out.println("Using SmartDog(String, double) constructor"); + } + + public void bark() { + System.out.println(name + " is barking..."); + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + + public void setPrice(double price) { + this.price = price; + } + + public double getPrice() { + return this.price; + } + + public void printDetails(){ + System.out.print("Name: " + this.name ); + if (price > 0.0) { + System.out.println(", price: " + this.price ); + } + else { + System.out.println(", price: Free" ); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/SmartDogTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/SmartDogTest.java new file mode 100644 index 0000000..3b66a42 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/SmartDogTest.java @@ -0,0 +1,30 @@ +// SmartDogTest.java +package com.jdojo.cls; + +public class SmartDogTest { + public static void main(String[] args) { + // Create two SmartDog objects + SmartDog sd1 = new SmartDog(); + SmartDog sd2 = new SmartDog("Nova", 219.2); + + // Print details about the two dogs + sd1.printDetails(); + sd2.printDetails(); + + // Make them bark + sd1.bark(); + sd2.bark(); + + // Change the name and price of Unknown dog + sd1.setName("Opal"); + sd1.setPrice(321.80); + + // Print details again + sd1.printDetails(); + sd2.printDetails(); + + // Make them bark one more time + sd1.bark(); + sd2.bark(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticImportTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticImportTest.java new file mode 100644 index 0000000..2155b5b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticImportTest.java @@ -0,0 +1,10 @@ +// StaticImportTest.java +package com.jdojo.cls; + +import static java.lang.System.out; + +public class StaticImportTest { + public static void main(String[] args) { + out.println("Hello static import!"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticImportTest2.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticImportTest2.java new file mode 100644 index 0000000..3d4ad83 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticImportTest2.java @@ -0,0 +1,18 @@ +// StaticImportTest2.java +package com.jdojo.cls; + +import static java.lang.Math.PI; +import static java.lang.Math.sqrt; +import static java.lang.System.out; + +public class StaticImportTest2 { + public static void main(String[] args) { + double radius = 2.9; + double area = PI * radius * radius; + + out.println("Value of PI is: " + PI); + out.println("Radius of circle: " + radius); + out.println("Area of circle: " + area); + out.println("Square root of 2.0: " + sqrt(2.0)); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticInitializer.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticInitializer.java new file mode 100644 index 0000000..aed668f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/StaticInitializer.java @@ -0,0 +1,39 @@ +// StaticInitializer.java +package com.jdojo.cls; + +public class StaticInitializer { + private static int num; + + // A static initializer. Note the use of the keyword static below. + static { + num = 1245; + System.out.println("Inside static initializer."); + } + + // An instance initializer + { + System.out.println("Inside instance initializer."); + } + + // Constructor + public StaticInitializer() { + System.out.println("Inside constructor."); + } + + public static void main(String[] args) { + System.out.println("Inside main() #1. num: " + num); + + // Declare a reference variable of the class + StaticInitializer si; + + System.out.println("Inside main() #2. num: " + num); + + // Create an object + new StaticInitializer(); + + System.out.println("Inside main() #3. num: " + num); + + // Create another object + new StaticInitializer(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest4.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest4.java new file mode 100644 index 0000000..b56cb3b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest4.java @@ -0,0 +1,15 @@ +// ThisTest4.java +package com.jdojo.cls; + +public class ThisTest4 { + int num = 1982; // An instance variable + + void printNum() { + System.out.println("Instance variable num: " + num); + } + + public static void main(String[] args) { + ThisTest4 tt4 = new ThisTest4(); + tt4.printNum(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest5.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest5.java new file mode 100644 index 0000000..6f39cf9 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest5.java @@ -0,0 +1,16 @@ +// ThisTest5.java +package com.jdojo.cls; + +public class ThisTest5 { + int num = 1982; // An instance variable + + void printNum(int num) { + System.out.println("Parameter num: " + num); + System.out.println("Instance variable num: " + num); + } + + public static void main(String[] args) { + ThisTest5 tt5 = new ThisTest5(); + tt5.printNum(1969); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest6.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest6.java new file mode 100644 index 0000000..74cb37a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/ThisTest6.java @@ -0,0 +1,16 @@ +// ThisTest6.java +package com.jdojo.cls; + +public class ThisTest6 { + int num = 1982; // An instance variable + + void printNum(int num) { + System.out.println("Parameter num: " + num); + System.out.println("Instance variable num: " + this.num); + } + + public static void main(String[] args) { + ThisTest6 tt6 = new ThisTest6(); + tt6.printNum(1969); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/Wrapper.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/Wrapper.java new file mode 100644 index 0000000..c095874 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/Wrapper.java @@ -0,0 +1,18 @@ +// Wrapper.java +package com.jdojo.cls; + +public class Wrapper { + private T obj; + + public Wrapper(T obj) { + this.obj = obj; + } + + public T get() { + return obj; + } + + public void set(T obj) { + this.obj = obj; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/WrapperTest.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/WrapperTest.java new file mode 100644 index 0000000..10f85fe --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/WrapperTest.java @@ -0,0 +1,18 @@ +// WrapperTest.java +package com.jdojo.cls; + +public class WrapperTest { + public static void main(String[] args) { + Wrapper w1 = new Wrapper("Hello"); + String s1 = w1.get(); + System.out.println("s1=" + s1); + + w1.set("Testing generics"); + String s2 = w1.get(); + System.out.println("s2=" + s2); + + w1.set(null); + String s3 = w1.get(); + System.out.println("s3=" + s3); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/cls/p1/AccessLevelTest3.java b/BeginningJava8Fundamentals/src/com/jdojo/cls/p1/AccessLevelTest3.java new file mode 100644 index 0000000..52578be --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/cls/p1/AccessLevelTest3.java @@ -0,0 +1,10 @@ +// AccessLevelTest3.java +package com.jdojo.cls.p1; + +import com.jdojo.cls.AccessLevel2; // A compiler error + +public class AccessLevelTest3 { + public static void main(String[] args) { + int a = AccessLevel2.v1; // A compiler error + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/concepts/MathUtil.java b/BeginningJava8Fundamentals/src/com/jdojo/concepts/MathUtil.java new file mode 100644 index 0000000..967341e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/concepts/MathUtil.java @@ -0,0 +1,15 @@ +package com.jdojo.concepts; + +public class MathUtil { + public static int max(int n1, int n2) { + /* Code to determine the maximum of two integers goes here */ + } + + public static double max(double n1, double n2) { + /* Code to determine the maximum of two floating-point numbers goes here */ + } + + public static int max(int[] num) { + /* Code to determine the maximum an array of int goes here */ + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/concepts/Person.java b/BeginningJava8Fundamentals/src/com/jdojo/concepts/Person.java new file mode 100644 index 0000000..aff5a42 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/concepts/Person.java @@ -0,0 +1,49 @@ +package com.jdojo.concepts; + +public class Person { + private String name; + private String gender; + + public Person(String initialName, String initialGender) { + name = initialName; + gender = initialGender; + } + + public String getName() { + return name; + } + + public void setName(String newName) { + name = newName; + } + + public String getGender() { + return gender; + } +} + +/* Another version of the Person class (LIsting 1-4. +package com.jdojo.concepts; + +public class Person { + private String[] data = new String[2]; + + public Person(String initialName, String initialGender) { + data[0] = initialName; + data[1] = initialGender; + } + + public String getName() { + return data[0]; + } + + public void setName(String newName) { + data[0] = newName; + } + + public String getGender() { + return data[1]; + } +} + +*/ \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/concepts/Person2.java b/BeginningJava8Fundamentals/src/com/jdojo/concepts/Person2.java new file mode 100644 index 0000000..1caacda --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/concepts/Person2.java @@ -0,0 +1,22 @@ +package com.jdojo.concepts; + +public class Person2 { + public String name; // Not hidden from its users + public String gender; // Not hidden from its users + public Person2(String initialName, String initialGender) { + name = initialName; + gender = initialGender; + } + + public String getName() { + return name; + } + + public void setName(String newName) { + name = newName; + } + + public String getGender() { + return gender; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datatype/NumTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datatype/NumTest.java new file mode 100644 index 0000000..6164f7d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datatype/NumTest.java @@ -0,0 +1,32 @@ +// NumTest.java +package com.jdojo.datatype; + +public class NumTest { + public static void main(String[] args) { + int anInt = 100; + long aLong = 200L; + byte aByte = 65; + short aShort = -902; + char aChar = 'A'; + float aFloat = 10.98F; + double aDouble = 899.89; + + // Print values of the variables + System.out.println("anInt = " + anInt); + System.out.println("aLong = " + aLong); + System.out.println("aByte = " + aByte); + System.out.println("aShort = " + aShort); + System.out.println("aChar = " + aChar); + System.out.println("aFloat = " + aFloat); + System.out.println("aDouble = " + aDouble); + System.out.println("aDouble = " + aDouble); + + // Print sone double constants + System.out.println("Max double = " + Double.MAX_VALUE); + System.out.println("Min double = " + Double.MIN_VALUE); + System.out.println("Positive infinity for double = " + Double.POSITIVE_INFINITY); + System.out.println("Negative infinity for double = " + Double.NEGATIVE_INFINITY); + System.out.println("Not-a-Number for double = " + Double.NaN); + System.out.println("double takes " + Double.BYTES + " bytes"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/AdjustDates.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/AdjustDates.java new file mode 100644 index 0000000..2ddf993 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/AdjustDates.java @@ -0,0 +1,28 @@ +// AdjustDates.java +package com.jdojo.datetime; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.temporal.TemporalAdjuster; +import java.time.temporal.TemporalAdjusters; + +public class AdjustDates { + public static void main(String[] args) { + LocalDate today = LocalDate.now(); + System.out.println("Today: " + today); + + // Use a DateAdjuster to adjust today’s date to the next Monday + LocalDate nextMonday = today.with(TemporalAdjusters.next(DayOfWeek.MONDAY)); + System.out.println("Next Monday: " + nextMonday); + + // Use a DateAdjuster to adjust today’s date to the last day of month + LocalDate lastDayOfMonth = today.with(TemporalAdjusters.lastDayOfMonth()); + System.out.println("Last day of month: " + lastDayOfMonth); + + // Create an adjuster that retruns a date after 3 months and 2 days + TemporalAdjuster adjuster = TemporalAdjusters.ofDateAdjuster( + (LocalDate date) -> date.plusMonths(3).plusDays(2)); + LocalDate dayAfter3Mon2Day = today.with(adjuster); + System.out.println("Date after 3 months and 2 days: " + dayAfter3Mon2Day); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/ChristmasDay.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ChristmasDay.java new file mode 100644 index 0000000..11341a0 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ChristmasDay.java @@ -0,0 +1,25 @@ +// ChristmasDay.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.Month; +import java.time.MonthDay; +import java.time.Year; +import java.time.format.TextStyle; +import java.util.Locale; + +public class ChristmasDay { + public static void main(String[] args) { + MonthDay dec25 = MonthDay.of(Month.DECEMBER, 25); + Year year = Year.now(); + + // Construct and print Christmas days in next five years + for (int i = 1; i <= 5; i++) { + LocalDate ld = year.plusYears(i).atMonthDay(dec25); + int yr = ld.getYear(); + String weekDay = ld.getDayOfWeek() + .getDisplayName(TextStyle.FULL, Locale.getDefault()); + System.out.format("Christmas in %d is on %s.%n", yr, weekDay); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/CurrentDateTime.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CurrentDateTime.java new file mode 100644 index 0000000..f51edf9 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CurrentDateTime.java @@ -0,0 +1,29 @@ +// CurrentDateTime.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.LocalDateTime; +import java.time.ZonedDateTime; +import static java.time.Month.JANUARY; + +public class CurrentDateTime { + public static void main(String[] args) { + // Get current date, time, and datetime + LocalDate dateOnly = LocalDate.now(); + LocalTime timeOnly = LocalTime.now(); + LocalDateTime dateTime = LocalDateTime.now(); + ZonedDateTime dateTimeWithZone = ZonedDateTime.now(); + + System.out.println("Current Date: " + dateOnly); + System.out.println("Current Time: " + timeOnly); + System.out.println("Current Date and Time: " + dateTime); + System.out.println("Current Date, Time, and Zone: " + dateTimeWithZone); + + // Construct a birth date and time from date-time components + LocalDate myBirthDate = LocalDate.of(1968, JANUARY, 12); + LocalTime myBirthTime = LocalTime.of(7, 30); + System.out.println("My Birth Date: " + myBirthDate); + System.out.println("My Birth Time:: " + myBirthTime); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/CurrentLegacyDate.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CurrentLegacyDate.java new file mode 100644 index 0000000..9895170 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CurrentLegacyDate.java @@ -0,0 +1,15 @@ +// CurrentLegacyDate.java +package com.jdojo.datetime; + +import java.util.Date; + +public class CurrentLegacyDate { + public static void main (String[] args) { + // Create a new Date object + Date currentDate = new Date(); + System.out.println("Current date: " + currentDate); + + // Get the milliseconds value of the current date + long millis = currentDate.getTime(); + System.out.println("Current datetime in millis: " + millis); } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomAdjusterTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomAdjusterTest.java new file mode 100644 index 0000000..285bb8f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomAdjusterTest.java @@ -0,0 +1,31 @@ +// CustomAdjusterTest.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.Month; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +public class CustomAdjusterTest { + public static void main(String[] args) { + LocalDate ld1 = LocalDate.of(2013, Month.DECEMBER, 12); // Thursday + LocalDate ld2 = LocalDate.of(2013, Month.DECEMBER, 13); // Friday + LocalDate ld3 = LocalDate.of(2013, Month.DECEMBER, 14); // Saturday + + LocalDate ld1Adjusted = ld1.with(CustomAdjusters.WEEKDAYS_WITH_NO_FRIDAY_13); + System.out.println(ld1 + " adjusted to " + ld1Adjusted); + + LocalDate ld2Adjusted = ld2.with(CustomAdjusters.WEEKDAYS_WITH_NO_FRIDAY_13); + System.out.println(ld2 + " adjusted to " + ld2Adjusted); + + LocalDate ld3Adjusted = ld3.with(CustomAdjusters.WEEKDAYS_WITH_NO_FRIDAY_13); + System.out.println(ld3 + " adjusted to " + ld3Adjusted); + + // Use it to adjust a ZonedDateTime + ZonedDateTime zdt = + ZonedDateTime.of(ld2, LocalTime.of(8, 45), ZoneId.of("America/Chicago")); + ZonedDateTime zdtAdjusted = zdt.with(CustomAdjusters.WEEKDAYS_WITH_NO_FRIDAY_13); + System.out.println(zdt + " adjusted to " + zdtAdjusted); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomAdjusters.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomAdjusters.java new file mode 100644 index 0000000..88ff653 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomAdjusters.java @@ -0,0 +1,31 @@ +// CustomAdjusters.java +package com.jdojo.datetime; + +import java.time.DayOfWeek; +import static java.time.DayOfWeek.FRIDAY; +import static java.time.DayOfWeek.MONDAY; +import static java.time.DayOfWeek.SATURDAY; +import static java.time.DayOfWeek.SUNDAY; +import java.time.LocalDate; +import java.time.temporal.TemporalAdjuster; +import java.time.temporal.TemporalAdjusters; + +public class CustomAdjusters { + public final static TemporalAdjuster WEEKDAYS_WITH_NO_FRIDAY_13 = + TemporalAdjusters.ofDateAdjuster(CustomAdjusters::getWeekDayNoFriday13); + + // No public constructor as it is a utility class + private CustomAdjusters() { } + + private static LocalDate getWeekDayNoFriday13(LocalDate date) { + // Initialize the new date with the original one + LocalDate newDate = date; + + DayOfWeek day = date.getDayOfWeek(); + if (day == SATURDAY || day == SUNDAY || (day == FRIDAY && date.getDayOfMonth() == 13)) { + // Return next Monday + newDate = date.with(TemporalAdjusters.next(MONDAY)); + } + return newDate; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomQueries.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomQueries.java new file mode 100644 index 0000000..f9b6454 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/CustomQueries.java @@ -0,0 +1,22 @@ +// CustomQueries.java +package com.jdojo.datetime; + +import java.time.DayOfWeek; +import static java.time.DayOfWeek.FRIDAY; +import static java.time.temporal.ChronoField.DAY_OF_MONTH; +import static java.time.temporal.ChronoField.DAY_OF_WEEK; +import java.time.temporal.TemporalAccessor; + +public class CustomQueries { + public static Boolean isFriday13(TemporalAccessor temporal) { + if (temporal.isSupported(DAY_OF_MONTH) && temporal.isSupported(DAY_OF_WEEK)) { + int dayOfMonth = temporal.get(DAY_OF_MONTH); + int weekDay = temporal.get(DAY_OF_WEEK); + DayOfWeek dayOfWeek = DayOfWeek.of(weekDay); + if (dayOfMonth == 13 && dayOfWeek == FRIDAY) { + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/DateAndInstant.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/DateAndInstant.java new file mode 100644 index 0000000..e7df52f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/DateAndInstant.java @@ -0,0 +1,21 @@ +// DateAndInstant.java +package com.jdojo.datetime; + +import java.util.Date; +import java.time.Instant; + +public class DateAndInstant { + public static void main(String[] args) { + // Get the current date + Date dt = new Date(); + System.out.println("Date: " + dt); + + // Convert the Date to an Insatnt + Instant in = dt.toInstant(); + System.out.println("Instant: " + in); + + // Convert the Instant back to a Date + Date dt2 = Date.from(in); + System.out.println("Date: " + dt2); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/DateTimeZoneConversion.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/DateTimeZoneConversion.java new file mode 100644 index 0000000..56f2a05 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/DateTimeZoneConversion.java @@ -0,0 +1,24 @@ +// DateTimeZoneConversion.java +package com.jdojo.datetime; + +import java.time.LocalDateTime; +import java.time.Month; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +public class DateTimeZoneConversion { + public static void main(String[] args) { + LocalDateTime ldt = LocalDateTime.of(2012, Month.MAY, 14, 16, 30); + + ZoneId usCentral = ZoneId.of("America/Chicago"); + ZonedDateTime zdt = ZonedDateTime.of(ldt, usCentral); + System.out.println("In US Central Time Zone:" + zdt); + + ZoneId asiaKolkata = ZoneId.of("Asia/Kolkata"); + ZonedDateTime zdt2 = zdt.withZoneSameInstant(asiaKolkata); + System.out.println("In Asia/Kolkata Time Zone:" + zdt2); + + ZonedDateTime zdt3 = zdt.withZoneSameInstant(ZoneId.of("Z")); + System.out.println("In UTC Time Zone:" + zdt3); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/FormattingDateTime.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/FormattingDateTime.java new file mode 100644 index 0000000..6d3a495 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/FormattingDateTime.java @@ -0,0 +1,44 @@ +// FormattingDateTime.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.Month; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.Temporal; +import java.util.Locale; + +public class FormattingDateTime { + public static void main(String[] args) { + LocalDate ld = LocalDate.of(2012, Month.APRIL, 30); + System.out.println("Formatting date:" + ld); + format(ld, "M/d/yyyy"); + format(ld, "MM/dd/yyyy"); + format(ld, "MMM dd, yyyy"); + format(ld, "MMMM dd, yyyy"); + format(ld, "EEEE, MMMM dd, yyyy"); + format(ld, "'Month' q 'in' QQQ"); + format(ld, "[MM-dd-yyyy][' at' HH:mm:ss]"); + + LocalTime lt = LocalTime.of(16, 30, 5, 78899); + System.out.println("\nFormatting time:" + lt); + format(lt, "HH:mm:ss"); + format(lt, "KK:mm:ss a"); + format(lt, "[MM-dd-yyyy][' at' HH:mm:ss]"); + + ZoneId usCentral = ZoneId.of("America/Chicago"); + ZonedDateTime zdt = ZonedDateTime.of(ld, lt, usCentral); + System.out.println("\nFormatting zoned datetime:" + zdt); + format(zdt, "MM/dd/yyyy HH:mm:ssXXX"); + format(zdt, "MM/dd/yyyy VV"); + format(zdt, "[MM-dd-yyyy][' at' HH:mm:ss]"); + } + + public static void format(Temporal co, String pattern) { + DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern, Locale.US); + String str = fmt.format(co); + System.out.println(pattern + ": " + str); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/Friday13Query.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/Friday13Query.java new file mode 100644 index 0000000..163dced --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/Friday13Query.java @@ -0,0 +1,29 @@ +// Friday13Query.java +package com.jdojo.datetime; + +import java.time.DayOfWeek; +import java.time.temporal.TemporalAccessor; +import java.time.temporal.TemporalQuery; +import static java.time.temporal.ChronoField.DAY_OF_MONTH; +import static java.time.temporal.ChronoField.DAY_OF_WEEK; +import static java.time.DayOfWeek.FRIDAY; + +public class Friday13Query implements TemporalQuery { + public final static Friday13Query IS_FRIDAY_13 = new Friday13Query(); + + // No objects can be created + private Friday13Query() {} + + @Override + public Boolean queryFrom(TemporalAccessor temporal) { + if (temporal.isSupported(DAY_OF_MONTH) && temporal.isSupported(DAY_OF_WEEK)) { + int dayOfMonth = temporal.get(DAY_OF_MONTH); + int weekDay = temporal.get(DAY_OF_WEEK); + DayOfWeek dayOfWeek = DayOfWeek.of(weekDay); + if (dayOfMonth == 13 && dayOfWeek == FRIDAY) { + return Boolean.TRUE; + } + } + return Boolean.FALSE; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/GregorianCalendarAndNewDateTime.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/GregorianCalendarAndNewDateTime.java new file mode 100644 index 0000000..6a218bb --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/GregorianCalendarAndNewDateTime.java @@ -0,0 +1,55 @@ +// GregorianCalendarAndNewDateTime.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +import java.util.GregorianCalendar; +import java.util.TimeZone; + +public class GregorianCalendarAndNewDateTime { + public static void main(String[] args) { + // Create a GC for the default time zone + GregorianCalendar gc = new GregorianCalendar(2014, 1, 11, 15, 45, 50); + System.out.println("Gregorian Calendar: " + gc.getTime()); + + // Convert the GC to a LocalDate + LocalDate ld = gc.toZonedDateTime().toLocalDate(); + System.out.println("Local Date: " + ld); + + // Convert the GC to a LocalTime + LocalTime lt = gc.toZonedDateTime().toLocalTime(); + System.out.println("Local Time: " + lt); + + // Convert the GC to a LocalDateTime + LocalDateTime ldt = gc.toZonedDateTime().toLocalDateTime(); + System.out.println("Local DateTime: " + ldt); + + // Convert the GC to an OffsetDate + OffsetDateTime od = gc.toZonedDateTime().toOffsetDateTime(); + System.out.println("Offset Date: " + od); + + // Convert the GC to an OffsetTime + OffsetTime ot = gc.toZonedDateTime().toOffsetDateTime().toOffsetTime(); + System.out.println("Offset Time: " + ot); + + // Convert the GC to an ZonedDateTime + ZonedDateTime zdt = gc.toZonedDateTime(); + System.out.println("Zoned DateTime: " + zdt); + + // Convert the ZonedDateTime to a GC. In GC month starts at 0 + // and in new API at 1 + ZoneId zoneId = zdt.getZone(); + TimeZone timeZone = TimeZone.getTimeZone(zoneId); + System.out.println("Zone ID: " + zoneId); + System.out.println("Time Zone ID: " + timeZone.getID()); + + GregorianCalendar gc2 = GregorianCalendar.from(zdt); + System.out.println("Gregorian Calendar: " + gc2.getTime()); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/GregorianDate.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/GregorianDate.java new file mode 100644 index 0000000..90e6008 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/GregorianDate.java @@ -0,0 +1,39 @@ +// GregorianDate .java +package com.jdojo.datetime; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +public class GregorianDate { + public static void main(String[] args) { + GregorianCalendar gc = new GregorianCalendar(); + System.out.println("Current Date: " + getStr(gc)); + + // Add 1 year + gc.add(Calendar.YEAR, 1); + System.out.println("After adding a year: " + getStr(gc)); + + // Add 15 days + gc.add(Calendar.DATE, 15); + System.out.println("After adding 15 days: " + getStr(gc)); + + long millis = gc.getTimeInMillis(); + Date dt = gc.getTime(); + System.out.println("Time in millis: " + millis); + System.out.println("Time as Date: " + dt); + } + + public static String getStr(GregorianCalendar gc) { + int day = gc.get(Calendar.DAY_OF_MONTH); + int month = gc.get(Calendar.MONTH); + int year = gc.get(Calendar.YEAR); + int hour = gc.get(Calendar.HOUR); + int minute = gc.get(Calendar.MINUTE); + int second = gc.get(Calendar.SECOND); + + String str = day + "/" + (month + 1) + "/" + year + " " + + hour + ":" + minute + ":" + second; + return str; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/InstantDurationTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/InstantDurationTest.java new file mode 100644 index 0000000..d964223 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/InstantDurationTest.java @@ -0,0 +1,33 @@ +// InstantDurationTest.java +package com.jdojo.datetime; + +import java.time.Duration; +import java.time.Instant; + +public class InstantDurationTest { + public static void main(String[] args) { + Instant i1 = Instant.ofEpochSecond(20); + Instant i2 = Instant.ofEpochSecond(55); + System.out.println("i1:" + i1); + System.out.println("i2:" + i2); + + Duration d1 = Duration.ofSeconds(55); + Duration d2 = Duration.ofSeconds(-17); + System.out.println("d1:" + d1); + System.out.println("d2:" + d2); + + // Compare instants + System.out.println("i1.isBefore(i2):" + i1.isBefore(i2)); + System.out.println("i1.isAfter(i2):" + i1.isAfter(i2)); + + // Add and subtract durations to instants + Instant i3 = i1.plus(d1); + Instant i4 = i2.minus(d2); + System.out.println("i1.plus(d1):" + i3); + System.out.println("i2.minus(d2):" + i4); + + // Add two durations + Duration d3 = d1.plus(d2); + System.out.println("d1.plus(d2):" + d3); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/InterCalendarDates.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/InterCalendarDates.java new file mode 100644 index 0000000..24fba39 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/InterCalendarDates.java @@ -0,0 +1,20 @@ +// InterCalendarDates.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.chrono.ThaiBuddhistDate; + +public class InterCalendarDates { + public static void main(String[] args) { + ThaiBuddhistDate thaiBuddhistNow = ThaiBuddhistDate.now(); + LocalDate isoNow = LocalDate.now(); + System.out.println("Thai Buddhist Current Date: " + thaiBuddhistNow); + System.out.println("ISO Current Date: " + isoNow); + + // Convert Thai Buddhist date to ISo date and vice-versa + ThaiBuddhistDate thaiBuddhistNow2 = ThaiBuddhistDate.from(isoNow); + LocalDate isoNow2 = LocalDate.from(thaiBuddhistNow); + System.out.println("Thai Buddhist Current Date from ISO: " + thaiBuddhistNow2); + System.out.println("ISO Current Date from Thai Buddhist: " + isoNow2); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalDateTimeTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalDateTimeTest.java new file mode 100644 index 0000000..2a04e4c --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalDateTimeTest.java @@ -0,0 +1,32 @@ +// LocalDateTimeTest.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.Month; + +public class LocalDateTimeTest { + public static void main(String[] args) { + // Create a local date and time + LocalDate ld = LocalDate.of(2012, Month.MAY, 11); + LocalTime lt = LocalTime.of(8, 52, 23); + System.out.println("ld: " + ld); + System.out.println("ld.isLeapYear(): " + ld.isLeapYear()); + System.out.println("lt: " + lt); + + // Create a local datetime from the local date and time + LocalDateTime ldt = LocalDateTime.of(ld, lt); + System.out.println("ldt: " + ldt); + + // Add 2 months and 25 minutes to the local datetime + LocalDateTime ldt2 = ldt.plusMonths(2).plusMinutes(25) ; + System.out.println("ldt2: " + ldt2); + + // Derive the local date and time from the localdatetime + LocalDate ld2 = LocalDate.from(ldt2); + LocalTime lt2 = LocalTime.from(ldt2); + System.out.println("ld2: " + ld2); + System.out.println("lt2: " + lt2); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalTimeFromZonedDateTime.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalTimeFromZonedDateTime.java new file mode 100644 index 0000000..0d426d2 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalTimeFromZonedDateTime.java @@ -0,0 +1,38 @@ +// LocalTimeFromZonedDateTime.java +package com.jdojo.datetime; + +import java.time.LocalTime; +import java.time.ZonedDateTime; +import java.time.temporal.TemporalQueries; + +public class LocalTimeFromZonedDateTime { + public static void main(String[] args) { + ZonedDateTime zdt = ZonedDateTime.now(); + + // Use the toLocalTime() method of the ZonedDateTime class (preferred) + LocalTime lt1 = zdt.toLocalTime(); + + // Use the from() methdo of the LocalTime class + LocalTime lt2 = LocalTime.from(zdt); + + // Use the localTime() query + LocalTime lt3 = zdt.query(TemporalQueries.localTime()); + + // Use the LocalTime::from method as a query + LocalTime lt4 = zdt.query(LocalTime::from); + + // Get all time components and construct a LocalTime + int hours = zdt.getHour(); + int minutes = zdt.getMinute(); + int seconds = zdt.getSecond(); + int nanos = zdt.getNano(); + LocalTime lt5 = LocalTime.of(hours, minutes, seconds, nanos); + + // Print all LocalTimes + System.out.println("lt1: " + lt1); + System.out.println("lt2: " + lt2); + System.out.println("lt3: " + lt3); + System.out.println("lt4: " + lt4); + System.out.println("lt5: " + lt5); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalizedFormats.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalizedFormats.java new file mode 100644 index 0000000..c45a43b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/LocalizedFormats.java @@ -0,0 +1,60 @@ +// LocalizedFormats.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.Month; +import java.time.format.DateTimeFormatter; +import static java.time.format.FormatStyle.FULL; +import static java.time.format.FormatStyle.LONG; +import static java.time.format.FormatStyle.MEDIUM; +import static java.time.format.FormatStyle.SHORT; + +import java.util.Locale; + +public class LocalizedFormats { + public static void main(String[] args) { + LocalDate ld = LocalDate.of(2012, Month.APRIL, 19); + LocalTime lt = LocalTime.of(16, 30, 20); + LocalDateTime ldt = LocalDateTime.of(ld, lt); + + DateTimeFormatter fmt = DateTimeFormatter.ofLocalizedDate(SHORT); + System.out.println("Formatter Default Locale: " + fmt.getLocale()); + System.out.println("Short Date: " + fmt.format(ld)); + + fmt = DateTimeFormatter.ofLocalizedDate(MEDIUM); + System.out.println("Medium Date: " + fmt.format(ld)); + + fmt = DateTimeFormatter.ofLocalizedDate(LONG); + System.out.println("Long Date: " + fmt.format(ld)); + + fmt = DateTimeFormatter.ofLocalizedDate(FULL); + System.out.println("Full Date: " + fmt.format(ld)); + + fmt = DateTimeFormatter.ofLocalizedTime(SHORT); + System.out.println("Short Time: " + fmt.format(lt)); + + fmt = DateTimeFormatter.ofLocalizedDateTime(SHORT); + System.out.println("Short Datetime: " + fmt.format(ldt)); + + fmt = DateTimeFormatter.ofLocalizedDateTime(MEDIUM); + System.out.println("Medium Datetime: " + fmt.format(ldt)); + + // Use German locale to format the datetime in medius style + fmt = DateTimeFormatter.ofLocalizedDateTime(MEDIUM) + .withLocale(Locale.GERMAN); + System.out.println("German Medium Datetime: " + fmt.format(ldt)); + + // Use Indian(English) locale to format datetime in short style + fmt = DateTimeFormatter.ofLocalizedDateTime(SHORT) + .withLocale(new Locale("en", "IN")); + System.out.println("Indian(en) Short Datetime: " + fmt.format(ldt)); + + // Use Indian(English) locale to format datetime in medium style + fmt = DateTimeFormatter.ofLocalizedDateTime(MEDIUM) + .withLocale(new Locale("en","IN")); + System.out.println("Indian(en) Medium Datetime: " + fmt.format(ldt)); + + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/MonthTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/MonthTest.java new file mode 100644 index 0000000..7ecb8c6 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/MonthTest.java @@ -0,0 +1,29 @@ +// MonthTest.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.Month; + +public class MonthTest { + public static void main(String[] args) { + // Use Month.JULY as a method argument + LocalDate ld1 = LocalDate.of(2012, Month.JULY, 1); + + // Derive a Month from a local date + Month m1 = Month.from(ld1); + + // Create a Month from an int value 2 + Month m2 = Month.of(2); + + // Get the next month from m2 + Month m3 = m2.plus(1); + + // Get the Month from a local date + Month m4 = ld1.getMonth(); + + // Convert an enum constant to an int + int m5 = m2.getValue(); + + System.out.format("%s, %s, %s, %s, %d%n", m1, m2, m3, m4, m5); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/OffsetDateTimeTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/OffsetDateTimeTest.java new file mode 100644 index 0000000..fdfe76a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/OffsetDateTimeTest.java @@ -0,0 +1,50 @@ +// OffsetDateTimeTest.java +package com.jdojo.datetime; + +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.OffsetDateTime; +import java.time.OffsetTime; +import java.time.ZoneId; +import java.time.ZoneOffset; + +public class OffsetDateTimeTest { + public static void main(String[] args) { + // Creete a zone-offset +05:30 + ZoneOffset offset = ZoneOffset.ofHoursMinutes(5, 30); + + // Get the current offset time + OffsetTime ot1 = OffsetTime.now(); + System.out.println("Current offset time: " + ot1); + + // Create an offset time + OffsetTime ot2 = OffsetTime.of(16, 40, 28, 0, offset); + System.out.println("An offset time: " + ot2); + + // Get the current offset datetime + OffsetDateTime odt1 = OffsetDateTime.now(); + System.out.println("Current offset datetime: " + odt1); + + // Create an offset datetime + OffsetDateTime odt2 = OffsetDateTime.of(2012, 5, 11, + 18, 10, 30, 0, + offset); + System.out.println("An offset datetime: " + odt2); + + // Get the local date and time from the offset datetime + LocalDate ld1 = odt1.toLocalDate(); + LocalTime lt1 = odt1.toLocalTime(); + System.out.println("Current Local Date: " + ld1); + System.out.println("Current Local Time: " + lt1); + + // Get the instant from the offset datetime + Instant i1 = odt1.toInstant(); + System.out.println("Current Instant: " + i1); + + // Create an offset datetime from the instant + ZoneId usChicago = ZoneId.of("America/Chicago"); + OffsetDateTime odt3 = OffsetDateTime.ofInstant(i1, usChicago); + System.out.println("Offset datetime from instant: " + odt3); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/OptionalSectionTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/OptionalSectionTest.java new file mode 100644 index 0000000..eb166d7 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/OptionalSectionTest.java @@ -0,0 +1,29 @@ +// OptionalSectionTest.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.Month; +import java.time.format.DateTimeFormatter; + +public class OptionalSectionTest { + public static void main(String[] args) { + // A pattern with an optional section + String pattern = "MM/dd/yyyy[ 'at' HH:mm:ss]"; + DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern); + + LocalDate ld = LocalDate.of(2012, Month.MAY, 30); + LocalTime lt = LocalTime.of(17, 30, 12); + LocalDateTime ldt = LocalDateTime.of(ld,lt); + + // Format a date. Optional section will be skipped because a + // date does not have time (HH, mm, and ss) information. + String str1 = fmt.format(ld); + System.out.println(str1); + + // Format a datetime. Optional section will be output. + String str2 = fmt.format(ldt); + System.out.println(str2); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/ParseBestTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ParseBestTest.java new file mode 100644 index 0000000..801ea5a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ParseBestTest.java @@ -0,0 +1,43 @@ +// ParseBestTest.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.time.temporal.TemporalAccessor; + +public class ParseBestTest { + public static void main(String[] args) { + DateTimeFormatter parser = DateTimeFormatter.ofPattern("yyyy-MM-dd['T'HH:mm:ss[Z]]"); + parseStr(parser, "2012-05-31"); + parseStr(parser, "2012-05-31T16:30:12"); + parseStr(parser, "2012-05-31T16:30:12-0500"); + parseStr(parser, "2012-05-31Hello"); + } + + public static void parseStr(DateTimeFormatter formatter, String text) { + try { + TemporalAccessor ta = formatter.parseBest(text, + OffsetDateTime::from, + LocalDateTime::from, + LocalDate::from); + if (ta instanceof OffsetDateTime) { + OffsetDateTime odt = OffsetDateTime.from(ta); + System.out.println("OffsetDateTime: " + odt); + } else if (ta instanceof LocalDateTime) { + LocalDateTime ldt = LocalDateTime.from(ta); + System.out.println("LocalDateTime: " + ldt); + } else if (ta instanceof LocalDate) { + LocalDate ld = LocalDate.from(ta); + System.out.println("LocalDate: " + ld); + } else { + System.out.println("Parsing returned: " + ta); + } + } + catch (DateTimeParseException e) { + System.out.println(e.getMessage()); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/Partials.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/Partials.java new file mode 100644 index 0000000..d4289b3 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/Partials.java @@ -0,0 +1,44 @@ +// Partials.java +package com.jdojo.datetime; + +import java.time.Month; +import java.time.MonthDay; +import java.time.Year; +import java.time.YearMonth; + +public class Partials { + public static void main(String[] args) { + // Use Year + Year y1 = Year.of(2012); // 2012 + Year y2 = y1.minusYears(1); // 2011 + Year y3 = y1.plusYears(1); // 2013 + Year y4 = Year.now(); // current year + if (y1.isLeap()) { + System.out.println(y1 + " is a leap year."); + } + else { + System.out.println(y1 + " is not a leap year."); + } + + // Use YearMonth + YearMonth ym1 = YearMonth.of(2012, Month.MAY); // 2012-05 + + // Get the number of days in the month + int monthLen = ym1.lengthOfMonth(); // 31 + System.out.println("Days in month in " + ym1 + ": " + monthLen); + + // Get the number of days in the year + int yearLen = ym1.lengthOfYear(); // 366 + System.out.println("Days in year in " + ym1 + ": " + yearLen); + + // Use MonthDay + MonthDay md1 = MonthDay.of(Month.DECEMBER, 25); + MonthDay md2 = MonthDay.of(Month.FEBRUARY, 29); + if (md2.isValidYear(2009)) { + System.out.println(md2 + " occurred in 2009"); + } + else { + System.out.println(md2 + " did not occur in 2009"); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/PeriodTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/PeriodTest.java new file mode 100644 index 0000000..b6adec1 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/PeriodTest.java @@ -0,0 +1,27 @@ +// PeriodTest.java +package com.jdojo.datetime; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.Month; +import java.time.Period; +import java.time.ZoneId; +import java.time.ZonedDateTime; + +public class PeriodTest { + public static void main(String[] args) { + ZoneId usCentral = ZoneId.of("America/Chicago"); + LocalDateTime ldt = LocalDateTime.of(2012, Month.MARCH, 10, 7, 30); + ZonedDateTime zdt1 = ZonedDateTime.of(ldt, usCentral); + Period p1 = Period.ofDays(1); + Duration d1 = Duration.ofHours(24); + + // Add a period of 1 day and a duration of 24 hours + ZonedDateTime zdt2 = zdt1.plus(p1); + ZonedDateTime zdt3 = zdt1.plus(d1); + + System.out.println("Start Datetime: " + zdt1); + System.out.println("After 1 Day period: " + zdt2); + System.out.println("After 24 Hours duration: " + zdt3); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/PrintAllZoneIds.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/PrintAllZoneIds.java new file mode 100644 index 0000000..046f08c --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/PrintAllZoneIds.java @@ -0,0 +1,14 @@ +// PrintAllZoneIds.java +package com.jdojo.datetime; + +import java.time.ZoneId; +import java.util.Set; + +public class PrintAllZoneIds { + public static void main(String[] args) { + Set zoneIds = ZoneId.getAvailableZoneIds(); + for (String zoneId: zoneIds) { + System.out.println(zoneId); + } + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/QueryTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/QueryTest.java new file mode 100644 index 0000000..5f2cd2b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/QueryTest.java @@ -0,0 +1,38 @@ +// QueryTest.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.ZonedDateTime; +import java.time.temporal.TemporalQueries; +import java.time.temporal.TemporalQuery; +import java.time.temporal.TemporalUnit; + +public class QueryTest { + public static void main(String[] args) { + // Get references of the precision and local date queries + TemporalQuery precisionQuery = TemporalQueries.precision(); + TemporalQuery localDateQuery = TemporalQueries.localDate(); + + // Query a LocalDate + LocalDate ld = LocalDate.now(); + TemporalUnit precision = ld.query(precisionQuery); + LocalDate queryDate = ld.query(localDateQuery); + System.out.println("Precision of LocalDate: " + precision); + System.out.println("LocalDate of LocalDate: " + queryDate); + + // Query a LocalTime + LocalTime lt = LocalTime.now(); + precision = lt.query(precisionQuery); + queryDate = lt.query(localDateQuery); + System.out.println("Precision of LocalTime: " + precision); + System.out.println("LocalDate of LocalTime: " + queryDate); + + // Query a ZonedDateTime + ZonedDateTime zdt = ZonedDateTime.now(); + precision = zdt.query(precisionQuery); + queryDate = zdt.query(localDateQuery); + System.out.println("Precision of ZonedDateTime: " + precision); + System.out.println("LocalDate of ZonedDateTime: " + queryDate); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/TimeBetween.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/TimeBetween.java new file mode 100644 index 0000000..8d7707d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/TimeBetween.java @@ -0,0 +1,35 @@ +// TimeBetween.java +package com.jdojo.datetime; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.Month; +import static java.time.temporal.ChronoUnit.DAYS; +import static java.time.temporal.ChronoUnit.HOURS; +import static java.time.temporal.ChronoUnit.MINUTES; + +public class TimeBetween { + public static void main(String[] args) { + LocalDate ld1 = LocalDate.of(2014, Month.JANUARY, 7); + LocalDate ld2 = LocalDate.of(2014, Month.MAY, 18); + long days = DAYS.between(ld1, ld2); + + LocalTime lt1 = LocalTime.of(7, 0); + LocalTime lt2 = LocalTime.of(9, 30); + long hours = HOURS.between(lt1, lt2); + long minutes = MINUTES.between(lt1, lt2); + + System.out.println("Using between (days): " + days); + System.out.println("Using between (hours): " + hours); + System.out.println("Using between (minutes): " + minutes); + + // Using the until() method + long days2 = ld1.until(ld2, DAYS); + long hours2 = lt1.until(lt2, HOURS); + long minutes2 = lt1.until(lt2, MINUTES); + + System.out.println("Using until (days): " + days2); + System.out.println("Using until (hours): " + hours2); + System.out.println("Using until (minutes): " + minutes2); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZoneOffsetTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZoneOffsetTest.java new file mode 100644 index 0000000..e304d2e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZoneOffsetTest.java @@ -0,0 +1,26 @@ +// ZoneOffsetTest.java +package com.jdojo.datetime; +import java.time.ZoneOffset; + +public class ZoneOffsetTest { + public static void main(String[] args) { + // Create zone-offset using hour, minute, and second + ZoneOffset zos1 = ZoneOffset.ofHours(-6); + ZoneOffset zos2 = ZoneOffset.ofHoursMinutes(5, 30); + ZoneOffset zos3 = ZoneOffset.ofHoursMinutesSeconds(8, 30, 45); + System.out.println(zos1); + System.out.println(zos2); + System.out.println(zos3); + + // Create zone-offset using offset ID as a string + ZoneOffset zos4 = ZoneOffset.of("+05:00"); + ZoneOffset zos5 = ZoneOffset.of("Z"); // Same as ZoneOffset.UTC + System.out.println(zos4); + System.out.println(zos5); + + // Print the values for zone offset constants + System.out.println("ZoneOffset.UTC: " + ZoneOffset.UTC); + System.out.println("ZoneOffset.MIN: " + ZoneOffset.MIN); + System.out.println("ZoneOffset.MAX: " + ZoneOffset.MAX); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZoneRulesTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZoneRulesTest.java new file mode 100644 index 0000000..dc7399d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZoneRulesTest.java @@ -0,0 +1,39 @@ +// ZoneRulesTest.java +package com.jdojo.datetime; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.zone.ZoneOffsetTransition; +import java.time.zone.ZoneRules; +import java.util.List; + +public class ZoneRulesTest { + public static void main(String[] args) { + LocalDateTime now = LocalDateTime.now(); + System.out.println("Current Date Time: " + now); + + ZoneId fixedZoneId = ZoneId.of("+06:00"); + ZoneId bdDhaka = ZoneId.of("Asia/Dhaka"); + ZoneId usChicago = ZoneId.of("America/Chicago"); + + // Print some zone rules for ZoneIds + printDetails(fixedZoneId, now); + printDetails(bdDhaka, now); + printDetails(usChicago, now); + } + + public static void printDetails(ZoneId zoneId, LocalDateTime now) { + System.out.println("Zone ID: " + zoneId.getId()); + + ZoneRules rules = zoneId.getRules(); + boolean isFixedOffset = rules.isFixedOffset(); + System.out.println("isFixedOffset(): " + isFixedOffset); + + ZoneOffset offset = rules.getOffset(now); + System.out.println("Zone offset: " + offset); + + List transitions = rules.getTransitions(); + System.out.println(transitions); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZonedDateTimeTest.java b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZonedDateTimeTest.java new file mode 100644 index 0000000..37cf307 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/datetime/ZonedDateTimeTest.java @@ -0,0 +1,48 @@ +// ZonedDateTimeTest.java +package com.jdojo.datetime; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.Month; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; + +public class ZonedDateTimeTest { + public static void main(String[] args) { + // Get the current zoned datetime for the system default time zone + ZonedDateTime zdt1 = ZonedDateTime.now(); + System.out.println("Current zoned datetime:" + zdt1); + + // Create a local datetime + LocalDateTime ldt = LocalDateTime.of(2012, Month.MARCH, 11, 7, 30); + + // Create some zoned datetimes + ZoneId usCentralZone = ZoneId.of("America/Chicago"); + ZonedDateTime zdt2 = ZonedDateTime.of(ldt, usCentralZone); + System.out.println(zdt2); + + // Get zone-offset and zone id + ZoneOffset offset = zdt2.getOffset(); + ZoneId zone = zdt2.getZone(); + System.out.println("Offset:" + offset + ", Zone:" + zone); + + // Subtract 10 hours. Zone-offset changes from -05:00 to -06:00 + ZonedDateTime zdt3 = zdt2.minusHours(10); + System.out.println(zdt3); + + // Create a datetime in Asia/Kolkata time zone + ZoneId indiaKolkataZone = ZoneId.of("Asia/Kolkata"); + ZonedDateTime zdt4 = ZonedDateTime.of(ldt, indiaKolkataZone); + System.out.println(zdt4); + + // Perform some conversions on zoned date time + LocalDateTime ldt2 = zdt4.toLocalDateTime(); + OffsetDateTime odt = zdt4.toOffsetDateTime(); + Instant i1 = zdt4.toInstant(); + System.out.println("To local datetime: " + ldt2); + System.out.println("To offset datetime: " + odt); + System.out.println("To instant: " + i1); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/Command.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/Command.java new file mode 100644 index 0000000..1d4f4c7 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/Command.java @@ -0,0 +1,6 @@ +// Command.java +package com.jdojo.enums; + +public interface Command { + void execute(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/CommandList.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/CommandList.java new file mode 100644 index 0000000..6ba9910 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/CommandList.java @@ -0,0 +1,18 @@ +// CommandList.java +package com.jdojo.enums; + +public enum CommandList implements Command { + RUN { + public void execute() { + System.out.println("Running..."); + } + }, + JUMP { + public void execute() { + System.out.println("Jumping..."); + } + }; + + // Force all constants to implement the execute() method. + public abstract void execute(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/CommandTest.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/CommandTest.java new file mode 100644 index 0000000..548e0f8 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/CommandTest.java @@ -0,0 +1,11 @@ +// CommandTest.java +package com.jdojo.enums; + +public class CommandTest { + public static void main(String... args) { + // Execute all command in the command list + for(Command cmd : CommandList.values()) { + cmd.execute(); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/Day.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/Day.java new file mode 100644 index 0000000..9917b48 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/Day.java @@ -0,0 +1,6 @@ +// Day.java +package com.jdojo.enums; + +public enum Day { + MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/EnumSetTest.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/EnumSetTest.java new file mode 100644 index 0000000..435388e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/EnumSetTest.java @@ -0,0 +1,29 @@ +// EnumSetTest.java +package com.jdojo.enums; + +import java.util.EnumSet; + +public class EnumSetTest { + public static void main(String[] args) { + // Get all constants of the Day enum + EnumSet allDays = EnumSet.allOf(Day.class); + print(allDays, "All days: " ); + + // Get all constants from MONDAY to FRIDAY of the Day enum + EnumSet weekDays = EnumSet.range(Day.MONDAY, Day.FRIDAY); + print(weekDays, "Weekdays: "); + + // Get all constants that are not from MONDAY to FRIDAY of the Day enum + // Essentially, we will get days representing weekends + EnumSet weekends = EnumSet.complementOf(weekDays); + print(weekends, "Weekends: "); + } + + public static void print(EnumSet days, String msg) { + System.out.print(msg); + for(Day d : days) { + System.out.print(d + " "); + } + System.out.println(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/ListEnumConstants.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/ListEnumConstants.java new file mode 100644 index 0000000..9d7f3e7 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/ListEnumConstants.java @@ -0,0 +1,12 @@ +// ListEnumConstants.java +package com.jdojo.enums; + +public class ListEnumConstants { + public static void main(String[] args) { + for(Severity s : Severity.values()) { + String name = s.name(); + int ordinal = s.ordinal(); + System.out.println(name + "(" + ordinal + ")"); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/Person.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/Person.java new file mode 100644 index 0000000..74ae575 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/Person.java @@ -0,0 +1,6 @@ +// Person.java +package com.jdojo.enums; + +public class Person { + public enum Gender {MALE, FEMALE} +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/Severity.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/Severity.java new file mode 100644 index 0000000..484ba18 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/Severity.java @@ -0,0 +1,6 @@ +// Severity.java +package com.jdojo.enums; + +public enum Severity { + LOW, MEDIUM, HIGH, URGENT; +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/SmartSeverity.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/SmartSeverity.java new file mode 100644 index 0000000..cb55326 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/SmartSeverity.java @@ -0,0 +1,19 @@ +// SmartSeverity.java +package com.jdojo.enums; + +public enum SmartSeverity { + LOW(30), MEDIUM(15), HIGH(7), URGENT(1); + + // Declare an instance variable + private int projectedTurnaroundDays; + + // Declare a private constructor + private SmartSeverity(int projectedTurnaroundDays) { + this.projectedTurnaroundDays = projectedTurnaroundDays; + } + + // Declare a public method to get the turnaround days + public int getProjectedTurnaroundDays() { + return projectedTurnaroundDays; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/SmartSeverityTest.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/SmartSeverityTest.java new file mode 100644 index 0000000..708effe --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/SmartSeverityTest.java @@ -0,0 +1,14 @@ +// SmartSeverityTest.java +package com.jdojo.enums; + +public class SmartSeverityTest { + public static void main(String[] args) { + for(SmartSeverity s : SmartSeverity.values()) { + String name = s.name(); + int ordinal = s.ordinal(); + int days = s.getProjectedTurnaroundDays(); + System.out.println("name=" + name + + ", ordinal=" + ordinal + ", days=" + days); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/SuperSmartSeverity.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/SuperSmartSeverity.java new file mode 100644 index 0000000..ec31cff --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/SuperSmartSeverity.java @@ -0,0 +1,51 @@ +// SuperSmartSeverity.java +package com.jdojo.enums; + +public enum SuperSmartSeverity { + LOW("Low Priority", 30) { + public double getProjectedCost() { + return 1000.0; + } + }, + MEDIUM("Medium Priority", 15) { + public double getProjectedCost() { + return 2000.0; + } + }, + HIGH("High Priority", 7) { + public double getProjectedCost() { + return 3000.0; + } + }, + URGENT("Urgent Priority", 1) { + public double getProjectedCost() { + return 5000.0; + } + }; + + // Declare instance variables + private String description; + private int projectedTurnaroundDays; + + // Declare a private constructor + private SuperSmartSeverity(String description, + int projectedTurnaroundDays){ + this.description = description; + this.projectedTurnaroundDays = projectedTurnaroundDays; + } + + // Declare a public method to get the turn around days + public int getProjectedTurnaroundDays() { + return projectedTurnaroundDays; + } + + // Override the toString() method in the Enum class to return description + @Override + public String toString() { + return this.description; + } + + // Provide getProjectedCost() abstract method, so all constants override and provide + // implementation for it in their body + public abstract double getProjectedCost(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/enums/SuperSmartSeverityTest.java b/BeginningJava8Fundamentals/src/com/jdojo/enums/SuperSmartSeverityTest.java new file mode 100644 index 0000000..b174926 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/enums/SuperSmartSeverityTest.java @@ -0,0 +1,19 @@ +// SuperSmartSeverityTest.java +package com.jdojo.enums; + +public class SuperSmartSeverityTest { + public static void main(String[] args) { + for(SuperSmartSeverity s : SuperSmartSeverity.values()) { + String name = s.name(); + String desc = s.toString(); + int ordinal = s.ordinal(); + int projectedTurnaroundDays = s.getProjectedTurnaroundDays(); + double projectedCost = s.getProjectedCost(); + System.out.println("name=" + name + + ", description=" + desc + + ", ordinal=" + ordinal + + ", turnaround days=" + projectedTurnaroundDays + + ", projected cost=" + projectedCost); + } + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/DivideByZero.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/DivideByZero.java new file mode 100644 index 0000000..fa9d449 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/DivideByZero.java @@ -0,0 +1,10 @@ +// DivideByZero.java +package com.jdojo.exception; + +public class DivideByZero { + public static void main(String[] args) { + int x = 10, y = 0, z; + z = x/y; + System.out.println("z = " + z); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/DivideByZeroWithTryCatch.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/DivideByZeroWithTryCatch.java new file mode 100644 index 0000000..285db97 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/DivideByZeroWithTryCatch.java @@ -0,0 +1,21 @@ +// DivideByZeroWithTryCatch.java +package com.jdojo.exception; + +public class DivideByZeroWithTryCatch { + public static void main(String[] args) { + int x = 10, y = 0, z; + try { + z = x / y; + System.out.println("z = " + z); + } + catch(ArithmeticException e) { + // Get the description of the exception + String msg = e.getMessage(); + + // Print a custom error message + System.out.println("An error has occurred. The error is: " + msg); + } + + System.out.println("At the end of the program."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/FinallyTest.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/FinallyTest.java new file mode 100644 index 0000000..2a9ecfe --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/FinallyTest.java @@ -0,0 +1,55 @@ +// FinallyTest.java +package com.jdojo.exception; + +public class FinallyTest { + public static void main(String[] args) { + int x = 10, y = 0, z; + try { + System.out.println("Before dividing x by y."); + z = x / y; + System.out.println("After dividing x by y."); + } + catch (ArithmeticException e) { + System.out.println("Inside catch block - 1."); + } + finally { + System.out.println("Inside finally block - 1."); + } + + System.out.println("-------------------------------"); + + try { + System.out.println("Before setting z to 2449."); + z = 2449; + System.out.println("After setting z to 2449."); + } + catch (Exception e) { + System.out.println("Inside catch block - 2."); + } + finally { + System.out.println("Inside finally block - 2."); + } + + System.out.println("-------------------------------"); + + try { + System.out.println("Inside try block - 3."); + } + finally { + System.out.println("Inside finally block - 3."); + } + + System.out.println("-------------------------------"); + + try { + System.out.println("Before executing System.exit()."); + System.exit(0); + System.out.println("After executing System.exit()."); + } + finally { + // This finally block will not be executed + // because application exits in try block + System.out.println("Inside finally block - 4."); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/MyException.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/MyException.java new file mode 100644 index 0000000..bc2f5ac --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/MyException.java @@ -0,0 +1,20 @@ +// MyException.java +package com.jdojo.exception; + +public class MyException extends Exception { + public MyException() { + super(); + } + + public MyException(String message) { + super(message); + } + + public MyException(String message, Throwable cause) { + super(message, cause); + } + + public MyException(Throwable cause) { + super(cause); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/MyResource.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/MyResource.java new file mode 100644 index 0000000..4ba46c1 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/MyResource.java @@ -0,0 +1,29 @@ +// MyResource.java +package com.jdojo.exception; + +public class MyResource implements AutoCloseable { + private int level; + private boolean exceptionOnClose; + + public MyResource(int level, boolean exceptionOnClose) { + this.level = level; + this.exceptionOnClose = exceptionOnClose; + System.out.println("Creating MyResource. Level = " + level); + } + + public void use() { + if (level <= 0) { + throw new RuntimeException("Low in level."); + } + System.out.println("Using MyResource level " + this.level); + level--; + } + + @Override + public void close() { + if (exceptionOnClose) { + throw new RuntimeException("Error in closing"); + } + System.out.println("Closing MyResource..."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput.java new file mode 100644 index 0000000..f16b848 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput.java @@ -0,0 +1,21 @@ +// ReadInput.java +package com.jdojo.exception; + +import java.io.IOException; + +public class ReadInput { + public static char readChar() { + char c = '\u0000'; + int input = 0; + try { + input = System.in.read(); + if (input != -1) { + c = (char)input; + } + } + catch (IOException e) { + System.out.print("IOException occurred while reading input."); + } + return c; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2.java new file mode 100644 index 0000000..2173e0f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2.java @@ -0,0 +1,16 @@ +// ReadInput2.java +package com.jdojo.exception; + +import java.io.IOException; + +public class ReadInput2 { + public static char readChar() throws IOException { + char c = '\u0000'; + int input = 0; + input = System.in.read(); + if (input != -1) { + c = (char)input; + } + return c; + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2Test2.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2Test2.java new file mode 100644 index 0000000..3a1a844 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2Test2.java @@ -0,0 +1,18 @@ +// ReadInput2Test2.java +package com.jdojo.exception; + +import java.io.IOException; + +public class ReadInput2Test2 { + public static void main(String[] args) { + char c = '\u0000'; + try { + System.out.print("Enter some text and then press Enter key:"); + c = ReadInput2.readChar(); + System.out.println("The first character you entered is: " + c); + } + catch(IOException e) { + System.out.println("Error occurred while reading input."); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2Test3.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2Test3.java new file mode 100644 index 0000000..36c6212 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInput2Test3.java @@ -0,0 +1,13 @@ +// ReadInput2Test3.java +package com.jdojo.exception; + +import java.io.IOException; + +public class ReadInput2Test3 { + public static void main(String[] args) throws IOException { + char c = '\u0000'; + System.out.print("Enter some text and then press Enter key: "); + c = ReadInput2.readChar(); + System.out.print("The first character you entered is: " + c); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInputTest.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInputTest.java new file mode 100644 index 0000000..42dff84 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/ReadInputTest.java @@ -0,0 +1,10 @@ +// ReadInputTest.java +package com.jdojo.exception; + +public class ReadInputTest { + public static void main(String[] args) { + System.out.print("Enter some text and press Enter key: "); + char c = ReadInput.readChar(); + System.out.println("First character you entered is: " + c); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/RethrowTest.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/RethrowTest.java new file mode 100644 index 0000000..c541b77 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/RethrowTest.java @@ -0,0 +1,28 @@ +// RethrowTest.java +package com.jdojo.exception; + +public class RethrowTest { + public static void main(String[] args) { + try { + m1(); + } + catch(MyException e) { + // Print the stack trace + e.printStackTrace(); + } + } + + public static void m1() throws MyException { + try { + m2(); + } + catch(MyException e) { + e.fillInStackTrace(); + throw e; + } + } + + public static void m2() throws MyException { + throw new MyException("An error has occurred."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/SimpleTryWithResource.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/SimpleTryWithResource.java new file mode 100644 index 0000000..64aa760 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/SimpleTryWithResource.java @@ -0,0 +1,13 @@ +// SimpleTryWithResource.java +package com.jdojo.exception; + +public class SimpleTryWithResource { + public static void main(String[] args) { + // Create and use a resource of MyResource type. + // Its close() method will be called automatically */ + try (MyResource mr = new MyResource(2, false)) { + mr.use(); + mr.use(); + } + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/StackFrameTest.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/StackFrameTest.java new file mode 100644 index 0000000..ef22781 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/StackFrameTest.java @@ -0,0 +1,49 @@ +// StackFrameTest.java +package com.jdojo.exception; + +public class StackFrameTest { + public static void main(String[] args) { + m1(); + } + + public static void m1() { + m2(); + } + + public static void m2() { + m3(); + } + + public static void m3() { + // Create a Throwable object that will hold the stack state + // at this point for the thread that executes the following statement + Throwable t = new Throwable(); + + // Get the stack trace elements + StackTraceElement[] frames = t.getStackTrace(); + + // Print details about the stack frames + printStackDetails(frames); + } + + public static void printStackDetails(StackTraceElement[] frames) { + System.out.println("Frame count: " + frames.length); + + for (int i = 0; i < frames.length; i++) { + // Get frame details + int frameIndex = i; // i = 0 means top frame + String fileName = frames[i].getFileName(); + String className = frames[i].getClassName(); + String methodName = frames[i].getMethodName(); + int lineNumber = frames[i].getLineNumber(); + + // Print frame details + System.out.println("Frame Index: " + frameIndex); + System.out.println("File Name: " + fileName); + System.out.println("Class Name: " + className); + System.out.println("Method Name: " + methodName); + System.out.println("Line Number: " + lineNumber); + System.out.println("---------------------------"); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/StackTraceAsStringTest.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/StackTraceAsStringTest.java new file mode 100644 index 0000000..2f8bfa7 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/StackTraceAsStringTest.java @@ -0,0 +1,38 @@ +// StackTraceAsStringTest.java +package com.jdojo.exception; + +import java.io.StringWriter; +import java.io.PrintWriter; + +public class StackTraceAsStringTest { + public static void main(String[] args) { + try { + m1(); + } + catch(MyException e) { + String str = getStackTrace(e); + + // Print the stack trace to the standard output + System.out.println(str); + } + } + + public static void m1() throws MyException { + m2(); + } + + public static void m2() throws MyException { + throw new MyException("Some error has occurred."); + } + + public static String getStackTrace(Throwable e) { + StringWriter strWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(strWriter); + e.printStackTrace(printWriter); + + // Get the stack trace as a string + String str = strWriter.toString(); + + return str; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/exception/StackTraceTest.java b/BeginningJava8Fundamentals/src/com/jdojo/exception/StackTraceTest.java new file mode 100644 index 0000000..504b056 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/exception/StackTraceTest.java @@ -0,0 +1,21 @@ +// StackTraceTest.java +package com.jdojo.exception; + +public class StackTraceTest { + public static void main(String[] args) { + try { + m1(); + } + catch(MyException e) { + e.printStackTrace(); // Print the stack trace + } + } + + public static void m1() throws MyException { + m2(); + } + + public static void m2() throws MyException { + throw new MyException("Some error has occurred."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/format/DecimalFormatter.java b/BeginningJava8Fundamentals/src/com/jdojo/format/DecimalFormatter.java new file mode 100644 index 0000000..7cdb2d5 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/format/DecimalFormatter.java @@ -0,0 +1,43 @@ +// DecimalFormatter.java +package com.jdojo.format; + +import java.text.DecimalFormat; +import java.text.ParsePosition; + +public class DecimalFormatter { + private static DecimalFormat formatter = new DecimalFormat(); + public static void main (String[] args){ + formatNumber("##.##", 12.745); + formatNumber("##.##", 12.746); + formatNumber("0000.0000", 12.735); + formatNumber("#.##", -12.735); + + // Positive and negative number format + formatNumber("#.##;(#.##)", -12.735); + + // Parse a string to decimal number + String str = "XY4,123.983"; + String pattern = "#,###.###"; + formatter.applyPattern(pattern); + + // Create a ParsePosition object to specify the first digit of + // number in string. It is 4 in "XY4,123.983" and its index is 2. + ParsePosition pp = new ParsePosition(2); + + Number numberObject = formatter.parse(str, pp); + + double value = numberObject.doubleValue(); + System.out.println("Parsed Value is " + value); + } + + public static void formatNumber(String pattern, double value) { + // Apply the pattern + formatter.applyPattern ( pattern ); + + // Format the number + String formattedNumber = formatter.format(value) ; + + System.out.println("Number:" + value + ", Pattern:" + pattern + + ", Formatted Number:" + formattedNumber); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/format/DefaultNumberFormatters.java b/BeginningJava8Fundamentals/src/com/jdojo/format/DefaultNumberFormatters.java new file mode 100644 index 0000000..4ff3383 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/format/DefaultNumberFormatters.java @@ -0,0 +1,30 @@ +// DefaultNumberFormatters.java +package com.jdojo.format; + +import java.text.NumberFormat; +import java.util.Locale; + +public class DefaultNumberFormatters { + public static void main(String[] args){ + double value = 1566789.785 ; + + // Default locale + printFormatted(Locale.getDefault(), value); + + // Indian locale + // (Rupee is the Indian currency. Short form is Rs.) + Locale indianLocale = new Locale("en", "IN"); + printFormatted(indianLocale, value); + } + + public static void printFormatted(Locale locale, double value) { + // Get number and currency formatter + NumberFormat nf = NumberFormat.getInstance(locale); + NumberFormat cf = NumberFormat.getCurrencyInstance(locale); + + System.out.println("Formatting value: " + value + " for locale: " + locale); + System.out.println("Number: " + nf.format(value)); + System.out.println("Currency: " + cf.format(value)); + System.out.println(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/format/FormattablePerson.java b/BeginningJava8Fundamentals/src/com/jdojo/format/FormattablePerson.java new file mode 100644 index 0000000..f39edcf --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/format/FormattablePerson.java @@ -0,0 +1,38 @@ +// FormattablePerson.java +package com.jdojo.format; + +import java.util.Formattable; +import java.util.Formatter; +import java.util.FormattableFlags; + +public class FormattablePerson implements Formattable { + private String firstName = "Unknown"; + private String lastName = "Unknown"; + + public FormattablePerson(String firstName, String lastName ) { + this.firstName = firstName; + this.lastName = lastName; + } + + // Other code goes here... + + public void formatTo(Formatter formatter, int flags, int width, + int precision) { + String str = this.firstName + " " + this.lastName; + + int alternateFlagValue = FormattableFlags.ALTERNATE & flags; + if (alternateFlagValue == FormattableFlags.ALTERNATE) { + str = this.lastName + ", " + this.firstName; + } + + // Check if uppercase variant of the conversio is being used + int upperFlagValue = FormattableFlags.UPPERCASE & flags; + if (upperFlagValue == FormattableFlags.UPPERCASE) { + str = str.toUpperCase(); + } + + // Call the format() method of formatter argument so that out + // result is stored in it and the caller will get it + formatter.format(str); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/format/ParseTimeStamp.java b/BeginningJava8Fundamentals/src/com/jdojo/format/ParseTimeStamp.java new file mode 100644 index 0000000..fe76f06 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/format/ParseTimeStamp.java @@ -0,0 +1,35 @@ +// ParseTimeStamp.java +package com.jdojo.format; + +import java.text.ParsePosition; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +public class ParseTimeStamp { + public static void main(String[] args){ + String input = "2003-04-03 09:10:40.325"; + + // Prepare the pattern + String pattern = "yyyy-MM-dd HH:mm:ss.SSS" ; + + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + + // Parse the text into a Date object + Date dt = sdf.parse(input, new ParsePosition(0)); + System.out.println(dt); + + // Get the Calendar instance + Calendar cal = Calendar.getInstance(); + + // Set the time + cal.setTime(dt); + + // Print time parts + System.out.println("Hour:" + cal.get(Calendar.HOUR)); + System.out.println("Minute:" + cal.get(Calendar.MINUTE)); + System.out.println("Second:" + cal.get(Calendar.SECOND)); + System.out.println("Millisecond:"+ cal.get(Calendar.MILLISECOND)); + + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/format/PredefinedDateFormats.java b/BeginningJava8Fundamentals/src/com/jdojo/format/PredefinedDateFormats.java new file mode 100644 index 0000000..b921c99 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/format/PredefinedDateFormats.java @@ -0,0 +1,62 @@ +// PredefinedDateFormats.java +package com.jdojo.format; + +import java.text.DateFormat; +import java.util.Date; +import java.util.Locale; + +public class PredefinedDateFormats { + public static void main(String[] args) { + // Get current date + Date today = new Date(); + + // Print date in the default locale format + Locale defaultLocale = Locale.getDefault(); + printLocaleDetails(defaultLocale); + printDate(defaultLocale, today); + + // Print date in French format + printLocaleDetails(Locale.FRANCE); + printDate(Locale.FRANCE, today); + + // Print date in German format. We could also use Locale.GERMANY instead of new Locale ("de", "DE") + Locale germanLocale = new Locale ("de", "DE"); + printLocaleDetails(germanLocale); + printDate(germanLocale, today); + } + + public static void printLocaleDetails (Locale locale){ + String languageCode = locale.getLanguage(); + String languageName = locale.getDisplayLanguage(); + String countryCode = locale.getCountry(); + String countryName = locale.getDisplayCountry(); + + // Print the locale info + System.out.println("Language: " + languageName + + "(" + languageCode + "); " + + "Country: " + countryName + + "(" + countryCode + ")" ); + } + + public static void printDate (Locale locale, Date date){ + DateFormat formatter; + String formattedDate; + + // Get the date instance for SHORT style for locale + formatter = DateFormat.getDateInstance(DateFormat.SHORT, locale); + + // Format the date and print it + formattedDate = formatter.format(date); + System.out.println("SHORT: " + formattedDate); + + // Get the date instance for MEDIUM style for locale + formatter = DateFormat.getDateInstance(DateFormat.MEDIUM, locale); + + // Format the date and print it + formattedDate = formatter.format(date); + System.out.println("MEDIUM: " + formattedDate); + + // Print a blank line at the end + System.out.println(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/format/PrintfTest.java b/BeginningJava8Fundamentals/src/com/jdojo/format/PrintfTest.java new file mode 100644 index 0000000..b832381 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/format/PrintfTest.java @@ -0,0 +1,24 @@ +// PrintfTest.java +package com.jdojo.format; + +import java.util.Date; + +public class PrintfTest { + public static void main(String[] args) { + // Formatting strings + System.out.printf("%1$s, %2$s, and %3$s %n", "Fu", "Hu", "Lo"); + System.out.printf("%3$s, %2$s, and %1$s %n", "Fu", "Hu", "Lo"); + + // Formatting numbers + System.out.printf("%1$4d, %2$4d, %3$4d %n", 1, 10, 100); + System.out.printf("%1$4d, %2$4d, %3$4d %n", 10, 100, 1000); + System.out.printf("%1$-4d, %2$-4d, %3$-4d %n", 1, 10, 100); + System.out.printf("%1$-4d, %2$-4d, %3$-4d %n", 10, 100, 1000); + + // Formatting date and time + Date dt = new Date(); + System.out.printf("Today is %tD %n", dt); + System.out.printf("Today is %tF %n", dt); + System.out.printf("Today is %tc %n", dt); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOSub.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOSub.java new file mode 100644 index 0000000..162a85f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOSub.java @@ -0,0 +1,17 @@ +// AOSub.java +package com.jdojo.inheritance; + +public class AOSub extends AOSuper { + public void print() { + // Call print() method of AOSuper class + super.print(); + + // Print a message + System.out.println("Inside AOSub.print()"); + } + + public void callOverridenPrint() { + // Call print() method of AOSuper class + super.print(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOSuper.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOSuper.java new file mode 100644 index 0000000..4f2424c --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOSuper.java @@ -0,0 +1,8 @@ +// AOSuper.java +package com.jdojo.inheritance; + +public class AOSuper { + public void print() { + System.out.println("Inside AOSuper.print()"); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOTest.java new file mode 100644 index 0000000..fe74f78 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AOTest.java @@ -0,0 +1,10 @@ +// AOTest.java +package com.jdojo.inheritance; + +public class AOTest { + public static void main(String[] args) { + AOSub aoSub = new AOSub(); + aoSub.print(); + aoSub.callOverridenPrint(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Adder.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Adder.java new file mode 100644 index 0000000..b143d6f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Adder.java @@ -0,0 +1,12 @@ +// Adder.java +package com.jdojo.inheritance; + +public class Adder { + public double add(int a, double b) { + return a + b; + } + + public double add(double a, int b) { + return a + b; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AdderTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AdderTest.java new file mode 100644 index 0000000..a158d50 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/AdderTest.java @@ -0,0 +1,9 @@ +// AdderTest.java +package com.jdojo.inheritance; + +public class AdderTest { + public static void main(String[] args) { + Adder a = new Adder(); + double d = a.add(2, 3); // A compiler error + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CSub.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CSub.java new file mode 100644 index 0000000..3f7c386 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CSub.java @@ -0,0 +1,9 @@ +// CSub.java +package com.jdojo.inheritance; + +public class CSub extends CSuper { + public CSub() { + super(); // Injected by the compiler + System.out.println("Inside CSub() constructor."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CSuper.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CSuper.java new file mode 100644 index 0000000..2739d25 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CSuper.java @@ -0,0 +1,9 @@ +// CSuper.java +package com.jdojo.inheritance; + +public class CSuper { + public CSuper() { + super(); // Injected by the compiler + System.out.println("Inside CSuper() constructor."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CTest.java new file mode 100644 index 0000000..9d1b2e9 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/CTest.java @@ -0,0 +1,8 @@ +// CTest.java +package com.jdojo.inheritance; + +public class CTest { + public static void main(String[] args) { + CSub cs = new CSub(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Circle.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Circle.java new file mode 100644 index 0000000..cf86099 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Circle.java @@ -0,0 +1,26 @@ +// Circle.java +package com.jdojo.inheritance; + +public class Circle extends Shape { + private double radius; + + public Circle(double radius) { + super("Circle"); + this.radius = radius; + } + + // Provide an implementation for inherited abstract draw() method + public void draw() { + System.out.println("Drawing a circle..."); + } + + // Provide an implementation for inherited abstract getArea() method + public double getArea() { + return Math.PI * radius * radius; + } + + // Provide an implementation for inherited abstract getPerimeter() method + public double getPerimeter() { + return 2.0 * Math.PI * radius; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingSub.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingSub.java new file mode 100644 index 0000000..3931085 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingSub.java @@ -0,0 +1,14 @@ +// EarlyBindingSub.java +package com.jdojo.inheritance; + +public class EarlyBindingSub extends EarlyBindingSuper{ + // An instance variable + public String str = "EarlyBindingSub"; + + // A static variable + public static int count = 200; + + public static void print() { + System.out.println("Inside EarlyBindingSub.print()"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingSuper.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingSuper.java new file mode 100644 index 0000000..5d4dd9d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingSuper.java @@ -0,0 +1,14 @@ +// EarlyBindingSuper.java +package com.jdojo.inheritance; + +public class EarlyBindingSuper { + // An instance variable + public String str = "EarlyBindingSuper"; + + // A static variable + public static int count = 100; + + public static void print() { + System.out.println("Inside EarlyBindingSuper.print()"); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingTest.java new file mode 100644 index 0000000..20afb15 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EarlyBindingTest.java @@ -0,0 +1,59 @@ +// EarlyBindingTest.java +package com.jdojo.inheritance; + +public class EarlyBindingTest { + public static void main(String[] args) { + EarlyBindingSuper ebSuper = new EarlyBindingSuper(); + EarlyBindingSub ebSub = new EarlyBindingSub(); + + // Will access EarlyBindingSuper.str + System.out.println(ebSuper.str); + + // Will access EarlyBindingSuper.count + System.out.println(ebSuper.count); + + // Will access EarlyBindingSuper.print() + ebSuper.print(); + + System.out.println("------------------------------"); + + // Will access EarlyBindingSub.str + System.out.println(ebSub.str); + + // Will access EarlyBindingSub.count + System.out.println(ebSub.count); + + // Will access EarlyBindingSub.print() + ebSub.print(); + + System.out.println("------------------------------"); + + // Will access EarlyBindingSuper.str + System.out.println(((EarlyBindingSuper)ebSub).str); + + // Will access EarlyBindingSuper.count + System.out.println(((EarlyBindingSuper)ebSub).count); + + // Will access EarlyBindingSuper.print() + ((EarlyBindingSuper)ebSub).print(); + + System.out.println("------------------------------"); + + // Assign the ebSub to ebSuper + ebSuper = ebSub; // Upcasting + + /* Now access methods and fields using ebSuper variable, which is + referring to a EarlyBindingSub object + */ + + // Will access EarlyBindingSuper.str + System.out.println(ebSuper.str); + + // Will access EarlyBindingSuper.count + System.out.println(ebSuper.count); + + // Will access EarlyBindingSuper.print() + ebSuper.print(); + System.out.println("------------------------------"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EmpUtil.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EmpUtil.java new file mode 100644 index 0000000..dab78dd --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/EmpUtil.java @@ -0,0 +1,12 @@ +// EmpUtil.java +package com.jdojo.inheritance; + +public class EmpUtil { + public static void printName(Employee emp){ + // Get the name of employee + String name = emp.getName(); + + // Print employee name + System.out.println(name); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Employee.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Employee.java new file mode 100644 index 0000000..cb05006 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Employee.java @@ -0,0 +1,14 @@ +// Employee.java +package com.jdojo.inheritance; + +public class Employee { + private String name = "Unknown"; + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Employee2.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Employee2.java new file mode 100644 index 0000000..d230afd --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Employee2.java @@ -0,0 +1,18 @@ +// Employee2.java +package com.jdojo.inheritance; + +public class Employee2 { + private String name = "Unknown"; + + public Employee2(String name) { + this.name = name; + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub.java new file mode 100644 index 0000000..6f89590 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub.java @@ -0,0 +1,9 @@ +// FHidingSub.java +package com.jdojo.inheritance; + +public class FHidingSub extends FHidingSuper { + public void print() { + System.out.println("num: " + num); + System.out.println("name: " + name); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub2.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub2.java new file mode 100644 index 0000000..c7caf57 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub2.java @@ -0,0 +1,15 @@ +// FHidingSub2.java +package com.jdojo.inheritance; + +public class FHidingSub2 extends FHidingSuper{ + // Hides num field in FHidingSuper class + private int num = 200; + + // Hides name field in FHidingSuper class + private String name = "Wally Inman"; + + public void print() { + System.out.println("num: " + num); + System.out.println("name: " + name); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub3.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub3.java new file mode 100644 index 0000000..843a493 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSub3.java @@ -0,0 +1,24 @@ +// FHidingSub3.java +package com.jdojo.inheritance; + +public class FHidingSub3 extends FHidingSuper{ + // Hides the num field in FHidingSuper class + private int num = 200; + + // Hides the name field in FHidingSuper class + private String name = "Wally Inman"; + + public void print() { + // FHidingSub3.num + System.out.println("num: " + num); + + // FHidingSuper.num + System.out.println("super.num: " + super.num); + + // FHidingSub3.name + System.out.println("name: " + name); + + // FHidingSuper.name + System.out.println("super.name: " + super.name); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSuper.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSuper.java new file mode 100644 index 0000000..f5aac91 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingSuper.java @@ -0,0 +1,7 @@ +// FHidingSuper.java +package com.jdojo.inheritance; + +public class FHidingSuper { + protected int num = 100; + protected String name = "John Jacobs"; +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest.java new file mode 100644 index 0000000..85fa062 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest.java @@ -0,0 +1,9 @@ +// FHidingTest.java +package com.jdojo.inheritance; + +public class FHidingTest { + public static void main(String[] args) { + FHidingSub fhSub = new FHidingSub(); + fhSub.print(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest2.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest2.java new file mode 100644 index 0000000..c77d56a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest2.java @@ -0,0 +1,9 @@ +// FHidingTest2.java +package com.jdojo.inheritance; + +public class FHidingTest2 { + public static void main(String[] args) { + FHidingSub2 fhSub2 = new FHidingSub2(); + fhSub2.print(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest3.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest3.java new file mode 100644 index 0000000..a34e0c7 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/FHidingTest3.java @@ -0,0 +1,9 @@ +// FHidingTest3.java +package com.jdojo.inheritance; + +public class FHidingTest3 { + public static void main(String[] args) { + FHidingSub3 fhSub3 = new FHidingSub3(); + fhSub3.print(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/GenericSuper.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/GenericSuper.java new file mode 100644 index 0000000..b5739db --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/GenericSuper.java @@ -0,0 +1,12 @@ +// GenericSuper.java +package com.jdojo.inheritance; + +public class GenericSuper { + public void m1(T a) { + // Code goes here + } + + public

void m2(P a) { + // Code goes here + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingSub.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingSub.java new file mode 100644 index 0000000..d918596 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingSub.java @@ -0,0 +1,8 @@ +// LateBindingSub.java +package com.jdojo.inheritance; + +public class LateBindingSub extends LateBindingSuper{ + public void print() { + System.out.println("Inside LateBindingSub.print()"); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingSuper.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingSuper.java new file mode 100644 index 0000000..d72262d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingSuper.java @@ -0,0 +1,8 @@ +// LateBindingSuper.java +package com.jdojo.inheritance; + +public class LateBindingSuper { + public void print() { + System.out.println("Inside LateBindingSuper.print()"); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingTest.java new file mode 100644 index 0000000..d6fe1d1 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/LateBindingTest.java @@ -0,0 +1,25 @@ +// LateBindingTest.java +package com.jdojo.inheritance; + +public class LateBindingTest { + public static void main(String[] args) { + LateBindingSuper lbSuper = new LateBindingSuper(); + LateBindingSub lbSub = new LateBindingSub(); + + // Will access EarlyBindingSuper.print() + lbSuper.print(); // #1 + + // Will access EarlyBindingSub.print() + lbSub.print(); // #2 + + // Will access EarlyBindingSub.print() + ((LateBindingSuper)lbSub).print(); // #3 + + // Assign the lbSub to lbSuper + lbSuper = lbSub; // Upcasting + + // Will access EarlyBindingSub.print() because lbSuper + // is referring to a LateBindingSub object + lbSuper.print(); // #4 + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingSub.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingSub.java new file mode 100644 index 0000000..de51649 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingSub.java @@ -0,0 +1,8 @@ +// MHidingSub.java +package com.jdojo.inheritance; + +public class MHidingSub extends MHidingSuper { + public static void print() { + System.out.println("Inside MHidingSub.print()"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingSuper.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingSuper.java new file mode 100644 index 0000000..2ec733b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingSuper.java @@ -0,0 +1,8 @@ +// MHidingSuper.java +package com.jdojo.inheritance; + +public class MHidingSuper { + public static void print() { + System.out.println("Inside MHidingSuper.print()"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingTest.java new file mode 100644 index 0000000..a68ca1a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/MHidingTest.java @@ -0,0 +1,29 @@ +// MHidingTest.java +package com.jdojo.inheritance; + +public class MHidingTest { + public static void main(String[] args) { + MHidingSuper mhSuper = new MHidingSub(); + MHidingSub mhSub = new MHidingSub(); + + System.out.println("#1"); + + // #1 + MHidingSuper.print(); + mhSuper.print(); + + System.out.println("#2"); + + // #2 + MHidingSub.print(); + mhSub.print(); + ((MHidingSuper) mhSub).print(); + + System.out.println("#3"); + + // #3 + mhSuper = mhSub; + mhSuper.print(); + ((MHidingSub) mhSuper).print(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager.java new file mode 100644 index 0000000..8b8288b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager.java @@ -0,0 +1,6 @@ +// Manager.java +package com.jdojo.inheritance; + +public class Manager extends Employee { + // No code is needed for now +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager2.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager2.java new file mode 100644 index 0000000..ee29ce0 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager2.java @@ -0,0 +1,8 @@ +// Manager2.java +package com.jdojo.inheritance; + +public class Manager2 extends Employee2 { + public Manager2(String name) { + super(name); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager2Test.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager2Test.java new file mode 100644 index 0000000..8c2ed53 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Manager2Test.java @@ -0,0 +1,10 @@ +// Manager2Test.java +package com.jdojo.inheritance; + +public class Manager2Test { + public static void main(String[] args) { + Manager2 mgr = new Manager2("John Jacobs"); + String name = mgr.getName(); + System.out.println("Manager name: " + name); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/OverloadingTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/OverloadingTest.java new file mode 100644 index 0000000..6322399 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/OverloadingTest.java @@ -0,0 +1,52 @@ +// OverloadingTest.java +package com.jdojo.inheritance; + +public class OverloadingTest { + public double add(int a, int b) { + System.out.println("Inside add(int a, int b)"); + double s = a + b; + return s; + } + + public double add(double a, double b) { + System.out.println("Inside add(double a, double b)"); + double s = a + b; + return s; + } + + public void test(Employee e) { + System.out.println("Inside test(Employee e)"); + } + + public void test(Manager e) { + System.out.println("Inside test(Manager m)"); + } + + public static void main(String[] args) { + OverloadingTest ot = new OverloadingTest(); + + int i = 10; + int j = 15; + double d1 = 10.4; + double d2 = 2.5; + float f1 = 2.3F; + float f2 = 4.5F; + short s1 = 2; + short s2 = 6; + + ot.add(i, j); + ot.add(d1, j); + ot.add(i, s1); + ot.add(s1, s2); + ot.add(f1, f2); + ot.add(f1, s2); + + Employee emp = new Employee(); + Manager mgr = new Manager(); + ot.test(emp); + ot.test(mgr); + + emp = mgr; + ot.test(emp); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Rectangle.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Rectangle.java new file mode 100644 index 0000000..cad2b19 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Rectangle.java @@ -0,0 +1,29 @@ +// Rectangle.java +package com.jdojo.inheritance; + +public class Rectangle extends Shape { + private double width; + private double height; + + public Rectangle(double width, double height) { + // Set the shape name as "Rectangle" + super("Rectangle"); + this.width = width; + this.height = height; + } + + // Provide an implementation for inherited abstract draw() method + public void draw() { + System.out.println("Drawing a rectangle..."); + } + + // Provide an implementation for inherited abstract getArea() method + public double getArea() { + return width * height; + } + + // Provide an implementation for inherited abstract getPerimeter() method + public double getPerimeter() { + return 2.0 * (width + height); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Shape.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Shape.java new file mode 100644 index 0000000..06e47e6 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/Shape.java @@ -0,0 +1,27 @@ +// Shape.java +package com.jdojo.inheritance; + +public abstract class Shape { + private String name; + + public Shape() { + this.name = "Unknown shape"; + } + + public Shape(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + // Abstract methods + public abstract void draw(); + public abstract double getArea(); + public abstract double getPerimeter(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/ShapeUtil.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/ShapeUtil.java new file mode 100644 index 0000000..825fd0e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/ShapeUtil.java @@ -0,0 +1,25 @@ +// ShapeUtil.java +package com.jdojo.inheritance; + +public class ShapeUtil { + public static void drawShapes(Shape[] list) { + for (int i = 0; i < list.length; i++) { + // Draw a shape, no matter what it is + list[i].draw(); // Late binding + } + } + + public static void printShapeDetails(Shape[] list) { + for (int i = 0; i < list.length; i++) { + // Gather details about the shape + String name = list[i].getName(); // Late Binding + double area = list[i].getArea(); // Late binding + double perimeter = list[i].getPerimeter(); // Late binding + + // Print details + System.out.println("Name: " + name); + System.out.println("Area: " + area); + System.out.println("Perimeter: " + perimeter); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/ShapeUtilTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/ShapeUtilTest.java new file mode 100644 index 0000000..1da1320 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/ShapeUtilTest.java @@ -0,0 +1,17 @@ +// ShapeUtilTest +package com.jdojo.inheritance; + +public class ShapeUtilTest { + public static void main(String[] args) { + // Create some shapes, draw, and print their details + Shape[] shapeList = new Shape[2]; + shapeList[0] = new Rectangle(2.0, 4.0); // Upcasting + shapeList[1] = new Circle(5.0); // Upcasting + + // Draw all shapes + ShapeUtil.drawShapes(shapeList); + + // Print details of all shapes + ShapeUtil.printShapeDetails(shapeList); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/SimplestInheritanceTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/SimplestInheritanceTest.java new file mode 100644 index 0000000..13484f3 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/SimplestInheritanceTest.java @@ -0,0 +1,18 @@ +// SimplestInheritanceTest.java +package com.jdojo.inheritance; + +public class SimplestInheritanceTest { + public static void main(String[] args) { + // Create an object of the Manager class + Manager mgr = new Manager(); + + // Set the name of the manager + mgr.setName("Leslie Zanders"); + + // Get the name of the manager + String mgrName = mgr.getName(); + + // Display the manager name + System.out.println("Manager Name: " + mgrName); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/inheritance/UpcastTest.java b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/UpcastTest.java new file mode 100644 index 0000000..3fcc628 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/inheritance/UpcastTest.java @@ -0,0 +1,16 @@ +// UpcastTest.java +package com.jdojo.inheritance; + +public class UpcastTest { + public static void main(String[] args) { + Employee emp = new Employee(); + emp.setName("Ken Wood"); + + Manager mgr = new Manager(); + mgr.setName("Ken Furr"); // Inheritance of setName() at work + + // Print names + EmpUtil.printName(emp); + EmpUtil.printName(mgr); // Upcasting at work + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Cat.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Cat.java new file mode 100644 index 0000000..78fd205 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Cat.java @@ -0,0 +1,14 @@ +// Cat.java +package com.jdojo.interfaces; + +public class Cat implements Walkable { + private String name; + + public Cat(String name) { + this.name = name; + } + + public void walk() { + System.out.println(name + " (a cat) is walking."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/CharitySinger.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/CharitySinger.java new file mode 100644 index 0000000..72496fd --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/CharitySinger.java @@ -0,0 +1,14 @@ +// CharitySinger.java +package com.jdojo.interfaces; + +public interface CharitySinger extends Singer { + @Override + default void setRate(double rate) { + // A no-op + } + + @Override + default double getRate() { + return 0.0; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/CharitySingerPlayer.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/CharitySingerPlayer.java new file mode 100644 index 0000000..0804d79 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/CharitySingerPlayer.java @@ -0,0 +1,15 @@ +// CharitySingerPlayer.java +package com.jdojo.interfaces; + +public interface CharitySingerPlayer extends CharitySinger, Player { + // Override the setRate() method with an abstract method + @Override + void setRate(double rate); + + // Override the getRate() method with a default method that calls the + // Player superinterface getRate() method + @Override + default double getRate() { + return Player.super.getRate(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Choices.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Choices.java new file mode 100644 index 0000000..8878d20 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Choices.java @@ -0,0 +1,7 @@ +// Choices.java +package com.jdojo.interfaces; + +public interface Choices { + public static final int YES = 1; + public static final int NO = 2; +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ChoicesTest.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ChoicesTest.java new file mode 100644 index 0000000..937d2a7 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ChoicesTest.java @@ -0,0 +1,9 @@ +// ChoicesTest.java +package com.jdojo.interfaces; + +public class ChoicesTest { + public static void main(String[] args) { + System.out.println("Choices.YES = " + Choices.YES); + System.out.println("Choices.NO = " + Choices.NO); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePerson.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePerson.java new file mode 100644 index 0000000..c3a682e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePerson.java @@ -0,0 +1,43 @@ +// ComparablePerson.java +package com.jdojo.interfaces; + +public class ComparablePerson implements Comparable { + + private String firstName; + private String lastName; + + public ComparablePerson(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + // Compares two persons based on their last names. If last names are + // the same, use first names + public int compareTo(ComparablePerson anotherPerson) { + int diff = getLastName().compareTo(anotherPerson.getLastName()); + if (diff == 0) { + diff = getFirstName().compareTo(anotherPerson.getFirstName()); + } + return diff; + } + + public String toString() { + return getLastName() + ", " + getFirstName(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePersonTest.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePersonTest.java new file mode 100644 index 0000000..dd25caf --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePersonTest.java @@ -0,0 +1,28 @@ +// ComparablePersonTest.java +package com.jdojo.interfaces; + +import java.util.Arrays; + +public class ComparablePersonTest { + public static void main(String[] args) { + ComparablePerson[] persons = new ComparablePerson[] { + new ComparablePerson("John", "Jacobs"), + new ComparablePerson("Jeff", "Jacobs"), + new ComparablePerson("Wally", "Inman")}; + + System.out.println("Before sorting..."); + print(persons); + + // Sort the persons list + Arrays.sort(persons); + + System.out.println("\nAfter sorting..."); + print(persons); + } + + public static void print(ComparablePerson[] persons) { + for(ComparablePerson person: persons){ + System.out.println(person); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePersonTest2.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePersonTest2.java new file mode 100644 index 0000000..06bf5d9 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/ComparablePersonTest2.java @@ -0,0 +1,64 @@ +// ComparablePersonTest2.java +package com.jdojo.interfaces; + +import java.util.Arrays; +import java.util.Comparator; + +public class ComparablePersonTest2 { + public static void main(String[] args) { + ComparablePerson[] persons = new ComparablePerson[]{ + new ComparablePerson("John", "Jacobs"), + new ComparablePerson("Jeff", "Jacobs"), + new ComparablePerson("Wally", "Inman")}; + + System.out.println("Original array..."); + print(persons); + + // Sort using first name + Comparator fnComparator = new FirstNameComparator(); + Arrays.sort(persons, fnComparator); + System.out.println("\nAfter sorting on first name..."); + print(persons); + + // Sort using last name + Comparator lnComparator = new LastNameComparator(); + Arrays.sort(persons, lnComparator); + System.out.println("\nAfter sorting on last name..."); + print(persons); + + // Sort using first name, then last name + Comparator firstLastComparator = + fnComparator.thenComparing(lnComparator); + Arrays.sort(persons, firstLastComparator); + System.out.println("\nAfter sorting on first, then last name..."); + print(persons); + + // Sort using first name, then last name in reversed order + Comparator firstLastReverseComparator = + firstLastComparator.reversed(); + Arrays.sort(persons, firstLastReverseComparator); + System.out.println("\nAfter sorting on first, then last name in reversed..."); + print(persons); + + // Sort using first name, then last name using null first + Comparator nullFirstComparator = + Comparator.nullsFirst(firstLastComparator); + ComparablePerson[] personsWithNulls = new ComparablePerson[]{ + new ComparablePerson("John", "Jacobs"), + null, + new ComparablePerson("Jeff", "Jacobs"), + new ComparablePerson("Wally", "Inman"), + null}; + + Arrays.sort(personsWithNulls, nullFirstComparator); + System.out.println("\nAfter sorting on first, then last name " + + "using null first..."); + print(personsWithNulls); + } + + public static void print(ComparablePerson[] persons) { + for (ComparablePerson person : persons) { + System.out.println(person); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Duck.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Duck.java new file mode 100644 index 0000000..f8321e5 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Duck.java @@ -0,0 +1,14 @@ +// Duck.java +package com.jdojo.interfaces; + +public class Duck implements Walkable { + private String name; + + public Duck(String name) { + this.name = name; + } + + public void walk() { + System.out.println(name + " (a duck) is walking."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/FirstNameComparator.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/FirstNameComparator.java new file mode 100644 index 0000000..a9cdef8 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/FirstNameComparator.java @@ -0,0 +1,13 @@ +// FirstNameComparator.java +package com.jdojo.interfaces; + +import java.util.Comparator; + +public class FirstNameComparator implements Comparator { + public int compare(ComparablePerson p1, ComparablePerson p2) { + String firstName1 = p1.getFirstName(); + String firstName2 = p2.getFirstName(); + int diff = firstName1.compareTo(firstName2); + return diff; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Fish.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Fish.java new file mode 100644 index 0000000..f5fabd3 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Fish.java @@ -0,0 +1,14 @@ +// Fish.java +package com.jdojo.interfaces; + +public class Fish implements Swimmable { + private String name; + + public Fish(String name) { + this.name = name; + } + + public void swim() { + System.out.println(name + " (a fish) is swimming."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Generous.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Generous.java new file mode 100644 index 0000000..ca3d783 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Generous.java @@ -0,0 +1,6 @@ +// Generous.java +package com.jdojo.interfaces; + +public interface Generous { + void give(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/GenerousGiver.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/GenerousGiver.java new file mode 100644 index 0000000..7f20474 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/GenerousGiver.java @@ -0,0 +1,7 @@ +// GenerousGiver.java +package com.jdojo.interfaces; + +public class GenerousGiver extends Giver implements Generous { + public void give() { + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Giver.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Giver.java new file mode 100644 index 0000000..87c930b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Giver.java @@ -0,0 +1,5 @@ +// Giver.java +package com.jdojo.interfaces; + +public class Giver { +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Job.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Job.java new file mode 100644 index 0000000..224bfca --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Job.java @@ -0,0 +1,21 @@ +// Job.java +package com.jdojo.interfaces; + +public interface Job { + // A nested class + class EmptyJob implements Job { + private EmptyJob() { + // Do not allow outside to create its object + } + + public void runJob() { + System.out.println("Nothing serious to run..."); + } + } + + // A constant field + Job EMPTY_JOB = new EmptyJob(); + + // An abstract method + void runJob(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/JobTest.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/JobTest.java new file mode 100644 index 0000000..7979c4f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/JobTest.java @@ -0,0 +1,12 @@ +// JobTest.java +package com.jdojo.interfaces; + +public class JobTest { + public static void main(String[] args) { + submitJob(Job.EMPTY_JOB); + } + + public static void submitJob(Job job) { + job.runJob(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/LastNameComparator.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/LastNameComparator.java new file mode 100644 index 0000000..e0e1649 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/LastNameComparator.java @@ -0,0 +1,13 @@ +// LastNameComparator.java +package com.jdojo.interfaces; + +import java.util.Comparator; + +public class LastNameComparator implements Comparator { + public int compare(ComparablePerson p1, ComparablePerson p2) { + String lastName1 = p1.getLastName(); + String lastName2 = p2.getFirstName(); + int diff = lastName1.compareTo(lastName2); + return diff; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Melodist.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Melodist.java new file mode 100644 index 0000000..f985029 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Melodist.java @@ -0,0 +1,31 @@ +// Melodist.java +package com.jdojo.interfaces; + +public class Melodist implements SingerWriter { + private String name; + private double rate = 500.00; + + public Melodist(String name) { + this.name = name; + } + + @Override + public void sing() { + System.out.println(name + " is singing."); + } + + @Override + public void setRate(double rate) { + this.rate = rate; + } + + @Override + public double getRate() { + return rate; + } + + @Override + public void write() { + System.out.println(name + " is writing"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Movable.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Movable.java new file mode 100644 index 0000000..b4b7314 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Movable.java @@ -0,0 +1,17 @@ +// Movable.java +package com.jdojo.interfaces; + +public interface Movable { + void setX(double x); + void setY(double y); + double getX(); + double getY(); + + // A default method + default void move(double deltaX, double deltaY) { + double newX = getX() + deltaX; + double newY = getY() + deltaY; + setX(newX); + setY(newY); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/MovableTest.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/MovableTest.java new file mode 100644 index 0000000..d038964 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/MovableTest.java @@ -0,0 +1,19 @@ +// MovableTest.java +package com.jdojo.interfaces; + +public class MovableTest { + public static void main(String[] args) { + // Create a Pen and assign its reference to a Movable variable + Movable p1 = new Pen(); + System.out.println(p1); + + // Move the Pen using absolute cocordinates + p1.setX(10.0); + p1.setY(5.0); + System.out.println(p1); + + // Move the Pen using relative cocordinates + p1.move(5.0, 2.0); + System.out.println(p1); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Munificent.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Munificent.java new file mode 100644 index 0000000..d160190 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Munificent.java @@ -0,0 +1,6 @@ +// Munificent.java +package com.jdojo.interfaces; + +public interface Munificent extends Generous { + void giveALot(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/MunificentGiver.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/MunificentGiver.java new file mode 100644 index 0000000..a5031f8 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/MunificentGiver.java @@ -0,0 +1,10 @@ +// MunificentGiver.java +package com.jdojo.interfaces; + +public class MunificentGiver extends Giver implements Munificent { + public void give() { + } + + public void giveALot() { + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Named.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Named.java new file mode 100644 index 0000000..126d6df --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Named.java @@ -0,0 +1,18 @@ +// Named.java +package com.jdojo.interfaces; + +public interface Named { + void setName(String name); + + default String getName() { + return "John Doe"; + } + + default void setNickname(String nickname) { + throw new UnsupportedOperationException("setNickname"); + } + + default String getNickname() { + throw new UnsupportedOperationException("getNickname"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Pen.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Pen.java new file mode 100644 index 0000000..95a249b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Pen.java @@ -0,0 +1,36 @@ +// Pen.java +package com.jdojo.interfaces; + +public class Pen implements Movable { + private double x; + private double y; + + public Pen() { + // By default, the pen is at (0.0, 0.0) + } + + public Pen(double x, double y) { + this.x = x; + this.y = y; + } + + public void setX(double x) { + this.x = x; + } + + public void setY(double y) { + this.y = y; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public String toString() { + return "Pen(" + x + ", " + y + ")"; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Person.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Person.java new file mode 100644 index 0000000..651b8d8 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Person.java @@ -0,0 +1,14 @@ +// Person.java +package com.jdojo.interfaces; + +public class Person implements Walkable { + private String name; + + public Person(String name) { + this.name = name; + } + + public void walk() { + System.out.println(name + " (a person) is walking."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Player.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Player.java new file mode 100644 index 0000000..323d6da --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Player.java @@ -0,0 +1,11 @@ +// Player.java +package com.jdojo.interfaces; + +public interface Player { + void play(); + void setRate(double rate); + + default double getRate() { + return 300.0; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Singer.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Singer.java new file mode 100644 index 0000000..5f6b227 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Singer.java @@ -0,0 +1,8 @@ +// Singer.java +package com.jdojo.interfaces; + +public interface Singer { + void sing(); + void setRate(double rate); + double getRate(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SingerPlayer.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SingerPlayer.java new file mode 100644 index 0000000..73dc13a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SingerPlayer.java @@ -0,0 +1,13 @@ +// SingerPlayer.java +package com.jdojo.interfaces; + +public interface SingerPlayer extends Singer, Player{ + // Override the getRate() method with a default method that calls the + // Player superinterface getRate() method + @Override + default double getRate() { + double playerRate = Player.super.getRate(); + double singerPlayerRate = playerRate * 3.5; + return singerPlayerRate; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SingerWriter.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SingerWriter.java new file mode 100644 index 0000000..aabb82f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SingerWriter.java @@ -0,0 +1,6 @@ +// SingerWriter.java +package com.jdojo.interfaces; + +public interface SingerWriter extends Singer, Writer { + // No code +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/StingyGiver.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/StingyGiver.java new file mode 100644 index 0000000..89caad5 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/StingyGiver.java @@ -0,0 +1,7 @@ +// StingyGiver.java +package com.jdojo.interfaces; + +public final class StingyGiver extends Giver { + public void giveALittle() { + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Swimmable.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Swimmable.java new file mode 100644 index 0000000..27dc386 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Swimmable.java @@ -0,0 +1,6 @@ +// Swimmable.java +package com.jdojo.interfaces; + +public interface Swimmable { + void swim(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SwimmableTest.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SwimmableTest.java new file mode 100644 index 0000000..9261a04 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/SwimmableTest.java @@ -0,0 +1,33 @@ +// SwimmableTest.java +package com.jdojo.interfaces; + +public class SwimmableTest { + // Interface type to define instance variable + private Swimmable iSwimmable; + + // Interface type to define parameter type for a constructor + public SwimmableTest(Swimmable aSwimmable) { + this.iSwimmable = aSwimmable; + } + + // Interface type to define return type of a method + public Swimmable getSwimmable() { + return this.iSwimmable; + } + + // Interface type to define parameter type for a method + public void setSwimmable(Swimmable newSwimmable) { + this.iSwimmable = newSwimmable; + } + + public void letItSwim(){ + // Interface type to declare a local variable + Swimmable localSwimmable = null; + + localSwimmable = this.iSwimmable; + + // An interface variable can be used to invoke any method + // declared in the interface and the Object class + localSwimmable.swim(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Turtle.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Turtle.java new file mode 100644 index 0000000..1894608 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Turtle.java @@ -0,0 +1,25 @@ +// Turtle.java +package com.jdojo.interfaces; + +public class Turtle implements Walkable, Swimmable{ + private String name; + + public Turtle(String name) { + this.name = name; + } + + // Adding a bite() method to the Turtle class + public void bite() { + System.out.println(name + " (a turtle) is biting."); + } + + // Implementation for the walk() method of the Walkable interface + public void walk() { + System.out.println(name + " (a turtle) is walking."); + } + + // Implementation for the swim() method of the Swimmable interface + public void swim() { + System.out.println(name + " (a turtle) is swimming."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/TurtleTest.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/TurtleTest.java new file mode 100644 index 0000000..76a26fa --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/TurtleTest.java @@ -0,0 +1,25 @@ +// TurtleTest.java +package com.jdojo.interfaces; + +public class TurtleTest { + public static void main(String[] args) { + Turtle turti = new Turtle("Turti"); + + // Using Turtle type as Turtle, Walkable and Swimmable + letItBite(turti); + letItWalk(turti); + letItSwim(turti); + } + + public static void letItBite(Turtle t) { + t.bite(); + } + + public static void letItWalk(Walkable w) { + w.walk(); + } + + public static void letItSwim(Swimmable s) { + s.swim();; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Walkable.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Walkable.java new file mode 100644 index 0000000..05f8a82 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Walkable.java @@ -0,0 +1,14 @@ +// Walkable.java +package com.jdojo.interfaces; + +public interface Walkable { + // An abstract method + void walk(); + + // A static convenience method + public static void letThemWalk(Walkable[] list) { + for (int i = 0; i < list.length; i++) { + list[i].walk(); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Walkables.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Walkables.java new file mode 100644 index 0000000..f337e7d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Walkables.java @@ -0,0 +1,10 @@ +// Walkables.java +package com.jdojo.interfaces; + +public class Walkables { + public static void letThemWalk(Walkable[] list) { + for (Walkable w : list) { + w.walk(); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/WalkablesTest.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/WalkablesTest.java new file mode 100644 index 0000000..e083625 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/WalkablesTest.java @@ -0,0 +1,14 @@ +// WalkablesTest.java +package com.jdojo.interfaces; + +public class WalkablesTest { + public static void main(String[] args) { + Walkable[] w = new Walkable[3]; + w[0] = new Person("Jack"); + w[1] = new Duck("Jeff"); + w[2] = new Person("John"); + + // Let everyone walk + Walkables.letThemWalk(w); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Writer.java b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Writer.java new file mode 100644 index 0000000..382cff0 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/interfaces/Writer.java @@ -0,0 +1,8 @@ +// Writer.java +package com.jdojo.interfaces; + +public interface Writer { + void write(); + void setRate(double rate); + double getRate(); +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/intro/Welcome.java b/BeginningJava8Fundamentals/src/com/jdojo/intro/Welcome.java new file mode 100644 index 0000000..a92e182 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/intro/Welcome.java @@ -0,0 +1,8 @@ +// Welcome.java +package com.jdojo.intro; + +class Welcome { + public static void main(String[] args) { + System.out.println("Welcome to the Java world."); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/BadImmutableTest.java b/BeginningJava8Fundamentals/src/com/jdojo/object/BadImmutableTest.java new file mode 100644 index 0000000..16d8d57 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/BadImmutableTest.java @@ -0,0 +1,17 @@ +// BadImmutableTest.java +package com.jdojo.object; + +public class BadImmutableTest { + public static void main(String[] args) { + IntHolderWrapper ihw = new IntHolderWrapper(101); + + int value = ihw.getValue(); + System.out.println("#1 value = " + value); + + IntHolder holder = ihw.getIntHolder(); + holder.setValue(207); + + value = ihw.getValue(); + System.out.println("#2 value = " + value); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/Book.java b/BeginningJava8Fundamentals/src/com/jdojo/object/Book.java new file mode 100644 index 0000000..c465392 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/Book.java @@ -0,0 +1,42 @@ +// Book.java +package com.jdojo.object; + +public class Book { + private String title; + private String author; + private int pageCount; + private boolean hardCover; + private double price; + + /* Other code goes here */ + + /* Must implement the equals() method too. */ + + public int hashCode() { + int hash = 37; + int code = 0; + + // Use title + code = (title == null ? 0 : title.hashCode()); + hash = hash * 59 + code; + + // Use author + code = (author == null ? 0 : author.hashCode()); + hash = hash * 59 + code; + + // Use pageCount + code = pageCount; + hash = hash * 59 + code; + + // Use hardCover + code = (hardCover ? 1 : 0); + hash = hash * 59 + code; + + // Use price + long priceBits = Double.doubleToLongBits(price); + code = (int)(priceBits ^ (priceBits >>> 32)); + hash = hash * 59 + code; + + return hash; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/CloningTest.java b/BeginningJava8Fundamentals/src/com/jdojo/object/CloningTest.java new file mode 100644 index 0000000..c5230f3 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/CloningTest.java @@ -0,0 +1,23 @@ +// CloningTest.java +package com.jdojo.object; + +public class CloningTest { + public static void main(String[] args) { + DoubleHolder dh = new DoubleHolder(100.00); + + // Clone dh + DoubleHolder dhClone = (DoubleHolder)dh.clone(); + + // Print the values in original and clone + System.out.println("Original:" + dh.getValue()); + System.out.println("Clone :" + dhClone.getValue()); + + // Change the value in original and clone + dh.setValue(200.00); + dhClone.setValue(400.00); + + // Print the values in original and clone again + System.out.println("Original:" + dh.getValue()); + System.out.println("Clone :" + dhClone.getValue()); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/DeepClone.java b/BeginningJava8Fundamentals/src/com/jdojo/object/DeepClone.java new file mode 100644 index 0000000..3d0765f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/DeepClone.java @@ -0,0 +1,33 @@ +// DeepClone.java +package com.jdojo.object; + +public class DeepClone implements Cloneable { + private DoubleHolder holder = new DoubleHolder(0.0); + + public DeepClone(double value) { + this.holder.setValue(value); + } + + public void setValue(double value) { + this.holder.setValue(value); + } + + public double getValue() { + return this.holder.getValue(); + } + + public Object clone() { + DeepClone copy = null; + try { + copy = (DeepClone)super.clone(); + + // Need to clone the holder reference variable too + copy.holder = (DoubleHolder)this.holder.clone(); + } + catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + + return copy; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/DeepCloneTest.java b/BeginningJava8Fundamentals/src/com/jdojo/object/DeepCloneTest.java new file mode 100644 index 0000000..634e614 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/DeepCloneTest.java @@ -0,0 +1,21 @@ +// DeepCloneTest.java +package com.jdojo.object; + +public class DeepCloneTest { + public static void main(String[] args) { + DeepClone sc = new DeepClone(100.00); + DeepClone scClone = (DeepClone)sc.clone(); + + // Print the value in original and clone + System.out.println("Original:" + sc.getValue()); + System.out.println("Clone :" + scClone.getValue()); + + // Change the value in original and it will not change the value + // for clone because we have done deep cloning + sc.setValue(200.00); + + // Print the value in original and clone + System.out.println("Original:" + sc.getValue()); + System.out.println("Clone :" + scClone.getValue()); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/DoubleHolder.java b/BeginningJava8Fundamentals/src/com/jdojo/object/DoubleHolder.java new file mode 100644 index 0000000..65ca37d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/DoubleHolder.java @@ -0,0 +1,32 @@ +// DoubleHolder.java +package com.jdojo.object; + +public class DoubleHolder implements Cloneable { + private double value; + + public DoubleHolder(double value) { + this.value = value; + } + + public void setValue(double value) { + this.value = value; + } + + public double getValue() { + return this.value; + } + + public Object clone() { + DoubleHolder copy = null; + try { + // Call the clone() method of the Object class, which will do a + // bit-by-bit copy and return the reference of the clone + copy = (DoubleHolder) super.clone(); + } + catch (CloneNotSupportedException e) { + // If anything goes wrong during cloning, print the error details + e.printStackTrace(); + } + return copy; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/Finalize.java b/BeginningJava8Fundamentals/src/com/jdojo/object/Finalize.java new file mode 100644 index 0000000..9a2760a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/Finalize.java @@ -0,0 +1,16 @@ +// Finalize.java +package com.jdojo.object; + +public class Finalize { + private int x; + + public Finalize(int x) { + this.x = x; + } + + public void finalize() { + System.out.println("Finalizing " + this.x); + + /* Perform any cleanup work here... */ + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/FinalizeTest.java b/BeginningJava8Fundamentals/src/com/jdojo/object/FinalizeTest.java new file mode 100644 index 0000000..7bcbe0b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/FinalizeTest.java @@ -0,0 +1,11 @@ +// FinalizeTest.java +package com.jdojo.object; + +public class FinalizeTest { + public static void main(String[] args) { + // Create many objects, say 20000 objects. + for(int i = 0; i < 20000; i++) { + new Finalize(i); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolder.java b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolder.java new file mode 100644 index 0000000..6ccce98 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolder.java @@ -0,0 +1,18 @@ +// IntHolder.java +package com.jdojo.object; + +public class IntHolder { + private int value; + + public IntHolder(int value) { + this.value = value; + } + + public void setValue(int value) { + this.value = value; + } + + public int getValue() { + return value; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper.java b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper.java new file mode 100644 index 0000000..ec434bf --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper.java @@ -0,0 +1,18 @@ +// IntHolderWrapper.java +package com.jdojo.object; + +public class IntHolderWrapper { + private final IntHolder valueHolder; + + public IntHolderWrapper(int value) { + this.valueHolder = new IntHolder(value); + } + + public IntHolder getIntHolder() { + return this.valueHolder; + } + + public int getValue() { + return this.valueHolder.getValue(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper2.java b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper2.java new file mode 100644 index 0000000..786f844 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper2.java @@ -0,0 +1,23 @@ +// IntHolderWrapper2.java +package com.jdojo.object; + +public class IntHolderWrapper2 { + private final IntHolder valueHolder; + + public IntHolderWrapper2(int value) { + this.valueHolder = new IntHolder(value); + } + + public IntHolder getIntHolder() { + // Make a copy of valueHolder + int v = this.valueHolder.getValue(); + IntHolder copy = new IntHolder(v); + + // Return the copy instead of the original + return copy; + } + + public int getValue() { + return this.valueHolder.getValue(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper3.java b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper3.java new file mode 100644 index 0000000..98b01e3 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/IntHolderWrapper3.java @@ -0,0 +1,21 @@ +// IntHolderWrapper3.java +package com.jdojo.object; + +public class IntHolderWrapper3 { + private final IntHolder valueHolder; + + public IntHolderWrapper3(int value) { + this.valueHolder = new IntHolder(value); + } + + public IntHolderWrapper3(IntHolder holder) { + // Must make a copy of holder parameter + this.valueHolder = new IntHolder(holder.getValue()); + + /* Following implementation is incorrect. Client code will be able to change the + state of the object using holder reference later */ + //this.valueHolder = holder; /* do not use it */ + } + + /* Rest of the code goes here... */ +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/IntWrapper.java b/BeginningJava8Fundamentals/src/com/jdojo/object/IntWrapper.java new file mode 100644 index 0000000..6626b15 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/IntWrapper.java @@ -0,0 +1,14 @@ +// IntWrapper.java +package com.jdojo.object; + +public class IntWrapper { + private final int value; + + public IntWrapper(int value) { + this.value = value; + } + + public int getValue() { + return value; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/IntWrapper2.java b/BeginningJava8Fundamentals/src/com/jdojo/object/IntWrapper2.java new file mode 100644 index 0000000..431e52f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/IntWrapper2.java @@ -0,0 +1,24 @@ +// IntWrapper2.java +package com.jdojo.object; + +public class IntWrapper2 { + private final int value; + private int halfValue = Integer.MAX_VALUE; + + public IntWrapper2(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public int getHalfValue() { + // Compute half value if it is not already computed + if (this.halfValue == Integer.MAX_VALUE) { + // Cache the half value for future use + this.halfValue = this.value / 2; + } + return this.halfValue; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/ObjectsTest.java b/BeginningJava8Fundamentals/src/com/jdojo/object/ObjectsTest.java new file mode 100644 index 0000000..8ff12a0 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/ObjectsTest.java @@ -0,0 +1,62 @@ +// ObjectsTest.java +package com.jdojo.object; + +import java.time.Instant; +import java.util.Objects; +import java.util.function.Supplier; + +public class ObjectsTest { + public static void main(String[] args) { + // Compute hash code for two integers, a char, and a string + int hash = Objects.hash(10, 8900, '\u20b9', "Hello"); + System.out.println("Hash Code is " + hash); + + // Test for equality + boolean isEqual = Objects.equals(null, null); + System.out.println("null is equal to null: " + isEqual); + + isEqual = Objects.equals(null, "XYZ"); + System.out.println("null is equal to XYZ: " + isEqual); + + // toString() method test + System.out.println("toString(null) is " + Objects.toString(null)); + System.out.println("toString(null, \"XXX\") is " + Objects.toString(null, "XXX")); + + // Testing requireNonNull(T obj, String message) + try { + printName("Doug Dyer"); + printName(null); + } + catch (NullPointerException e) { + System.out.println(e.getMessage()); + } + + // requireNonNull(T obj, Supplier messageSupplier) + try { + // Using a lambda expression to create a Supplier object. + // The Supplier returns a timestamped message. + Supplier messageSupplier = () -> "Name is required. Error generated on " + Instant.now(); + printNameWithSuplier("Babalu", messageSupplier); + printNameWithSuplier(null, messageSupplier); + } + catch (NullPointerException e) { + System.out.println(e.getMessage()); + } + } + + public static void printName(String name) { + // Test name for not null. Generate a NullPointerException if it is null. + Objects.requireNonNull(name, "Name is required."); + + // Print the name if the above statement dod not throw an exception + System.out.println("Name is " + name); + } + + public static void printNameWithSuplier(String name, Supplier messageSupplier) { + // Test name for not null. Generate a NullPointerException if it is null. + Objects.requireNonNull(name, messageSupplier); + + // Print the name if the above statement dod not throw an exception + System.out.println("Name is " + name); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/Point.java b/BeginningJava8Fundamentals/src/com/jdojo/object/Point.java new file mode 100644 index 0000000..1d3733e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/Point.java @@ -0,0 +1,18 @@ +// Point.java +package com.jdojo.object; + +public class Point { + private int x; + private int y; + + public Point(int x, int y) { + this.x = x; + this.y = y; + } + + // Re-implement toString() method of the Object class + public String toString() { + String str = "(" + x + ", " + y + ")"; + return str; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/ShallowClone.java b/BeginningJava8Fundamentals/src/com/jdojo/object/ShallowClone.java new file mode 100644 index 0000000..a7c5c1c --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/ShallowClone.java @@ -0,0 +1,29 @@ +// ShallowClone.java +package com.jdojo.object; + +public class ShallowClone implements Cloneable { + private DoubleHolder holder = new DoubleHolder(0.0); + + public ShallowClone(double value) { + this.holder.setValue(value); + } + + public void setValue(double value) { + this.holder.setValue(value); + } + + public double getValue() { + return this.holder.getValue(); + } + + public Object clone() { + ShallowClone copy = null; + try { + copy = (ShallowClone)super.clone(); + } + catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return copy; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/ShallowCloneTest.java b/BeginningJava8Fundamentals/src/com/jdojo/object/ShallowCloneTest.java new file mode 100644 index 0000000..cc47c0e --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/ShallowCloneTest.java @@ -0,0 +1,21 @@ +// ShallowCloneTest.java +package com.jdojo.object; + +public class ShallowCloneTest { + public static void main(String[] args) { + ShallowClone sc = new ShallowClone(100.00); + ShallowClone scClone = (ShallowClone)sc.clone(); + + // Print the value in original and clone + System.out.println("Original:" + sc.getValue()); + System.out.println("Clone :" + scClone.getValue()); + + // Change the value in original and it will change the value + // for clone too because we have done shallow cloning + sc.setValue(200.00); + + // Print the value in original and clone + System.out.println("Original:" + sc.getValue()); + System.out.println("Clone :" + scClone.getValue()); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/SmartCat.java b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartCat.java new file mode 100644 index 0000000..03aa754 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartCat.java @@ -0,0 +1,43 @@ +// SmartCat.java +package com.jdojo.object; + +public class SmartCat { + private String name; + + public SmartCat(String name) { + this.name = name; + } + + /* Re-implement the equals() method */ + public boolean equals(Object otherObject) { + // Are they the same? + if (this == otherObject) { + return true; + } + + // Is otherObject a null reference? + if (otherObject == null) { + return false; + } + + // Do they belong to the same class? + if (this.getClass() != otherObject.getClass()) { + return false; + } + + // Get the reference of otherObject is a SmartCat variable + SmartCat otherCat = (SmartCat)otherObject; + + // Do they have the same names + boolean isSameName = (this.name == null? otherCat.name == null + :this.name.equals(otherCat.name) ); + + return isSameName; + } + + /* Re-implement the hashCode() method, which is a requirement + when you re-implement equals() method */ + public int hashCode() { + return (this.name == null? 0 : this.name.hashCode()); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/SmartIntHolder.java b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartIntHolder.java new file mode 100644 index 0000000..40f4396 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartIntHolder.java @@ -0,0 +1,25 @@ +// SmartIntHolder.java +package com.jdojo.object; + +public class SmartIntHolder { + private int value; + + public SmartIntHolder(int value) { + this.value = value; + } + + public void setValue(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + // Re-implement toString() method of the Object class + public String toString() { + // Return the stored value as a string + String str = String.valueOf(this.value); + return str; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/SmartPoint.java b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartPoint.java new file mode 100644 index 0000000..ca9c825 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartPoint.java @@ -0,0 +1,44 @@ +// SmartPoint.java +package com.jdojo.object; + +public class SmartPoint { + private int x; + private int y; + + public SmartPoint(int x, int y) { + this.x = x; + this.y = y; + } + + /* Re-implement the equals() method */ + public boolean equals(Object otherObject) { + // Are the same? + if (this == otherObject) { + return true; + } + + // Is otherObject a null reference? + if (otherObject == null) { + return false; + } + + // Do they belong to the same class? + if (this.getClass() != otherObject.getClass()) { + return false; + } + + // Get the reference of otherObject in a SmartPoint variable + SmartPoint otherPoint = (SmartPoint)otherObject; + + // Do they have the same x and y co-ordinates + boolean isSamePoint = (this.x == otherPoint.x && this.y == otherPoint.y); + + return isSamePoint; + } + + /* Re-implement hashCode() method of the Object class, + which is a requirement when you re-implement equals() method */ + public int hashCode() { + return (this.x + this.y); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/object/SmartPointTest.java b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartPointTest.java new file mode 100644 index 0000000..69cc1ad --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/object/SmartPointTest.java @@ -0,0 +1,23 @@ +// SmartPointTest.java +package com.jdojo.object; + +public class SmartPointTest { + public static void main(String[] args) { + SmartPoint pt1 = new SmartPoint(10, 10); + SmartPoint pt2 = new SmartPoint(10, 10); + SmartPoint pt3 = new SmartPoint(12, 19); + SmartPoint pt4 = pt1; + + System.out.println("pt1 == pt1: " + (pt1 == pt1)); + System.out.println("pt1.equals(pt1): " + pt1.equals(pt1)); + + System.out.println("pt1 == pt2: " + (pt1 == pt2)); + System.out.println("pt1.equals(pt2): " + pt1.equals(pt2)); + + System.out.println("pt1 == pt3: " + (pt1 == pt3)); + System.out.println("pt1.equals(pt3): " + pt1.equals(pt3)); + + System.out.println("pt1 == pt4: " + (pt1 == pt4)); + System.out.println("pt1.equals(pt4): " + pt1.equals(pt4)); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/operator/ArithOperator.java b/BeginningJava8Fundamentals/src/com/jdojo/operator/ArithOperator.java new file mode 100644 index 0000000..a00778c --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/operator/ArithOperator.java @@ -0,0 +1,52 @@ +// ArithOperator.java +package com.jdojo.operator; + +class ArithOperator { + public static void main ( String[] args ) { + int num = 120; + double realNum = 25.5F; + double veryBigNum = 25.8 / 0.0; + double garbage = 0.0 / 0.0; + boolean test = true; + + // Print the value of num + System.out.println ("num = " + num); + + // Print the value of realNum + System.out.println ("realNum = " + realNum); + + // Print the value of veryBigNum + System.out.println ("veryBigNum = " + veryBigNum); + + // Print the value of garbage + System.out.println ("garbage = " + garbage); + + // Print the value of test + System.out.println ("test = " + test); + + // Print the maximum value of int type + System.out.println ("Maximum int = " + Integer.MAX_VALUE); + + // Print the maximum value of double type + System.out.println ("Maximum double = " + Double.MAX_VALUE); + + // Print the sum of two numbers + System.out.println ("12.5 + 100 = " + (12.5 + 100)); + + // Print the difference of two numbers + System.out.println ("12.5 - 100 = " + (12.5 - 100)); + + // Print the multiplication of two numbers + System.out.println ("12.5 * 100 = " + (12.5 * 100)); + + // Print the result of division + System.out.println ("12.5 / 100 = " + (12.5 / 100)); + + // Print the result of modulus + System.out.println ("12.5 % 100 = " + (12.5 % 100)); + + // Print the result of string concatenation + System.out.println ("\"abc\" + \"xyz\" = " + "\"" + ("abc" + "xyz") + "\""); + + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/profiles/HelloCompact1.java b/BeginningJava8Fundamentals/src/com/jdojo/profiles/HelloCompact1.java new file mode 100644 index 0000000..6bd7c66 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/profiles/HelloCompact1.java @@ -0,0 +1,8 @@ +// HelloCompact1.java +package com.jdojo.profiles; + +public class HelloCompact1 { + public static void main(String[] args) { + System.out.println("Hello compact1 profile!"); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/profiles/RowSetTest.java b/BeginningJava8Fundamentals/src/com/jdojo/profiles/RowSetTest.java new file mode 100644 index 0000000..e6a29bd --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/profiles/RowSetTest.java @@ -0,0 +1,21 @@ +// RowSetTest.java +package com.jdojo.profiles; + +import java.sql.SQLException; +import javax.sql.rowset.JdbcRowSet; +import javax.sql.rowset.RowSetFactory; +import javax.sql.rowset.RowSetProvider; + +public class RowSetTest { + public static void main(String[] args) { + try { + RowSetFactory rsFactory = RowSetProvider.newFactory(); + JdbcRowSet jdbcRs = rsFactory.createJdbcRowSet(); + + // More code goes here + } + catch (SQLException e) { + e.printStackTrace(); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/profiles/SwingTest.java b/BeginningJava8Fundamentals/src/com/jdojo/profiles/SwingTest.java new file mode 100644 index 0000000..d22ed15 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/profiles/SwingTest.java @@ -0,0 +1,12 @@ +// SwingTest.java +package com.jdojo.profiles; + +import javax.swing.JFrame; + +public class SwingTest { + public static void main(String[] args) { + JFrame frame = new JFrame("Compact Profiles"); + frame.setSize(300, 300); + frame.setVisible(true); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/regex/AdvanceFindReplace.java b/BeginningJava8Fundamentals/src/com/jdojo/regex/AdvanceFindReplace.java new file mode 100644 index 0000000..7f55b5f --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/regex/AdvanceFindReplace.java @@ -0,0 +1,47 @@ +package com.jdojo.regex; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +public class AdvanceFindReplace { + public static void main (String[] args) { + String regex = "\\b\\d+\\b"; + StringBuffer sb = new StringBuffer(); + String replacementText = ""; + String matchedText = ""; + + String text = "A train carrying 125 men and women was traveling at" + + " the speed of 100 miles per hour. " + + "The train fare was 75 dollars per person." ; + + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(text); + + while (m.find()) { + matchedText = m.group(); + + // Convert the text into an integer for comparing + int num = Integer.parseInt(matchedText); + + // Prepare the replacement text + if (num == 100) { + replacementText = "a hundred"; + } + else if (num < 100) { + replacementText = "less than a hundred"; + } + else { + replacementText = "more than a hundred"; + } + + m.appendReplacement(sb, replacementText); + } + + // Append the tail + m.appendTail(sb); + + // Display the old and new text + System.out.println("Old Text: " + text); + System.out.println("New Text: " + sb.toString()); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/regex/MatchAndreplace.java b/BeginningJava8Fundamentals/src/com/jdojo/regex/MatchAndreplace.java new file mode 100644 index 0000000..e4f80d2 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/regex/MatchAndreplace.java @@ -0,0 +1,26 @@ +// MatchAndreplace.java +package com.jdojo.regex; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class MatchAndreplace { + public static void main(String[] args) { + // Prepare the regular expression + String regex = "\\b(\\d{3})(\\d{3})(\\d{4})\\b"; + String replacementText = "($1) $2-$3"; + String source = "3342449027, 2339829, and 6152534734"; + + // Compile the regular expression + Pattern p = Pattern.compile(regex); + + // Get Matcher object + Matcher m = p.matcher(source); + + // Replace the phone numbers by formatted phone numbers + String formattedSource = m.replaceAll(replacementText); + + System.out.println("Text: " + source ); + System.out.println("Formatted Text: " + formattedSource ); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/regex/MatchBoundary.java b/BeginningJava8Fundamentals/src/com/jdojo/regex/MatchBoundary.java new file mode 100644 index 0000000..19932a5 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/regex/MatchBoundary.java @@ -0,0 +1,17 @@ +// MatchBoundary.java +package com.jdojo.regex; + +public class MatchBoundary { + public static void main(String[] args) { + // Prepare regular expression. Use \\b to get \b inside the string literal. + String regex = "\\bapple\\b"; + String replacementStr = "orange"; + String inputStr = "I have an apple and five pineapples"; + String newStr = inputStr.replaceAll(regex, replacementStr); + + System.out.println("Regular Expression: " + regex); + System.out.println("Input String: " + inputStr); + System.out.println("Replacement String: " + replacementStr); + System.out.println("New String: " + newStr); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/regex/NamedGroups.java b/BeginningJava8Fundamentals/src/com/jdojo/regex/NamedGroups.java new file mode 100644 index 0000000..7a8c752 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/regex/NamedGroups.java @@ -0,0 +1,30 @@ +// NamedGroups.java +package com.jdojo.regex; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class NamedGroups { + public static void main(String[] args) { + // Prepare the regular expression + String regex = + "\\b(?\\d{3})(?\\d{3})(?\\d{4})\\b"; + + // Reference first two groups by names and the thrd oen as its number + String replacementText = "(${areaCode}) ${prefix}-$3"; + + String source = "3342449027, 2339829, and 6152534734"; + + // Compile the regular expression + Pattern p = Pattern.compile(regex); + + // Get Matcher object + Matcher m = p.matcher(source); + + // Replace the phone numbers by formatted phone numbers + String formattedSource = m.replaceAll(replacementText); + + System.out.println("Text: " + source); + System.out.println("Formatted Text: " + formattedSource); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/regex/PatternMatcher.java b/BeginningJava8Fundamentals/src/com/jdojo/regex/PatternMatcher.java new file mode 100644 index 0000000..d554d18 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/regex/PatternMatcher.java @@ -0,0 +1,51 @@ +// PatternMatcher.java +package com.jdojo.regex; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +public class PatternMatcher { + public static void main(String[] args) { + String regex = "[abc]@."; + + String source = "cric@jdojo.com is a valid email address"; + PatternMatcher.findPattern(regex, source); + + source = "kelly@jdojo.com is invalid"; + PatternMatcher.findPattern(regex, source); + + source = "a@band@yea@u"; + PatternMatcher.findPattern(regex, source); + + source = "There is an @ sign here"; + PatternMatcher.findPattern(regex, source); + } + + public static void findPattern(String regex, String source) { + // Compile regex into a Pattern object + Pattern p = Pattern.compile(regex); + + // Get a Matcher object + Matcher m = p.matcher(source); + + boolean found = false ; + + // Print regex and source text + System.out.println("\nRegex:" + regex); + System.out.println("Text:" + source); + + // Perform find + while (m.find()) { + System.out.println("Matched Text:" + m.group() + ", Start:" + m.start() + ", " + + "End:" + m.end()); + + // We found at least one match. Set the found flag to true + found = true; + } + + if (!found) { + // We did not find any match + System.out.println("No match found"); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/regex/PhoneMatcher.java b/BeginningJava8Fundamentals/src/com/jdojo/regex/PhoneMatcher.java new file mode 100644 index 0000000..84995ee --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/regex/PhoneMatcher.java @@ -0,0 +1,28 @@ +// PhoneMatcher.java +package com.jdojo.regex; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +public class PhoneMatcher { + public static void main(String[] args) { + // Prepare regular expression. A group of 3 digits followed by 7 digits. + String regex = "\\b(\\d{3})\\d{7}\\b"; + String source = "3342449027, 2339829, and 6152534734"; + + // Compile the regular expression + Pattern p = Pattern.compile(regex); + + // Get Matcher object + Matcher m = p.matcher(source); + + // Start matching and display the found area codes + while(m.find()) { + // Display the phone number and area code. Note that group 1 captures first 3 digits of match, whereas group 0 will have the entire phone number. The matched text can be obtained using m.group() or m.group(0)*/ + String phone = m.group(); + String areaCode = m.group(1); + System.out.println("Phone: " + phone + + ", Area Code: " + areaCode); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/regex/RegexMatch.java b/BeginningJava8Fundamentals/src/com/jdojo/regex/RegexMatch.java new file mode 100644 index 0000000..6df98ce --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/regex/RegexMatch.java @@ -0,0 +1,26 @@ +// RegexMatch.java +package com.jdojo.regex; + +public class RegexMatch { + public static void main(String[] args) { + // Prepare a regular expression to represent a pattern + String regex = ".@."; + + // Try matching many strings against the regular expression + RegexMatch.matchIt("a@k", regex); + RegexMatch.matchIt("webmaster@jdojo.com", regex); + RegexMatch.matchIt("r@j", regex); + RegexMatch.matchIt("a%N", regex); + RegexMatch.matchIt(".@.", regex); + } + + public static void matchIt(String str, String regex) { + // Test for pattern match + if (str.matches(regex)) { + System.out.println(str + " matches the regex " + regex); + } + else { + System.out.println(str + " does not match the regex " + regex); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/statement/PrintMatrix.java b/BeginningJava8Fundamentals/src/com/jdojo/statement/PrintMatrix.java new file mode 100644 index 0000000..8d4272b --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/statement/PrintMatrix.java @@ -0,0 +1,22 @@ +// PrintMatrix.java +package com.jdojo.statement; + +public class PrintMatrix { + public static void main(String[] args) { + for(int i = 1; i <= 3; i++) { + for(int j = 1; j <= 3; j++) { + System.out.print(i + "" + j); + + // Print a tab, except for the last number in a row + if (j < 3) { + System.out.print("\t"); + } + } + + // Print a new line, except after the last line + if (i < 3) { + System.out.println(); + } + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/string/CollatorStringComparison.java b/BeginningJava8Fundamentals/src/com/jdojo/string/CollatorStringComparison.java new file mode 100644 index 0000000..8aeca63 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/string/CollatorStringComparison.java @@ -0,0 +1,38 @@ +// CollatorStringComparison.java +package com.jdojo.string; + +import java.text.Collator; +import java.util.Locale; + +public class CollatorStringComparison { + public static void main(String[] args) { + // Create a Locale object for US + Locale USLocale = new Locale("en", "US"); + + // Get collator instance for US + Collator c = Collator.getInstance(USLocale); + String str1 = "cat"; + String str2 = "Dog"; + + int diff = c.compare(str1, str2); + + System.out.print("Comparing using Collator class: "); + print(diff, str1, str2); + + System.out.print("Comparing using String class: "); + diff = str1.compareTo(str2); + print(diff, str1, str2); + } + + public static void print(int diff, String str1, String str2) { + if (diff > 0) { + System.out.println(str1 + " comes after " + str2); + } + else if (diff < 0) { + System.out.println(str1 + " comes before " + str2); + } + else { + System.out.println(str1 + " and " + str2 + " are considered the same." ); + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/string/Palindrome.java b/BeginningJava8Fundamentals/src/com/jdojo/string/Palindrome.java new file mode 100644 index 0000000..b86136d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/string/Palindrome.java @@ -0,0 +1,53 @@ +// Palindrome.java +package com.jdojo.string; + +public class Palindrome { + public static void main(String[] args) { + String str1 = "hello"; + boolean b1 = Palindrome.isPalindrome(str1); + System.out.println(str1 + " is a palindrome: " + b1 ); + + String str2 = "noon"; + boolean b2 = Palindrome.isPalindrome(str2); + System.out.println(str2 + " is a palindrome: " + b2 ); + } + + public static boolean isPalindrome(String inputString) { + // Check for null argument. + if (inputString == null) { + throw new IllegalArgumentException("String cannot be null."); + } + + // Get the length of string + int len = inputString.length(); + + // In case of an empty string and one character strings, + // we do not need to do any comparisions. + // They are always palindromes. + if (len <= 1) { + return true; + } + + // Convert the string into uppercase, so we can make the comparisons case insensitive + String newStr = inputString.toUpperCase(); + + // Initialize the result variable to true + boolean result = true; + + // Get the number of comparison to be done + int counter = len / 2; + + // Do the comparison + for (int i = 0; i < counter; i++) { + if (newStr.charAt(i)!= newStr.charAt(len - 1 - i)) { + // It is not a palindrome + result = false; + + // Exit the loop + break; + } + } + + return result; + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/string/StringBuilderTest.java b/BeginningJava8Fundamentals/src/com/jdojo/string/StringBuilderTest.java new file mode 100644 index 0000000..1b25a47 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/string/StringBuilderTest.java @@ -0,0 +1,43 @@ +// StringBuilderTest.java +package com.jdojo.string; + +public class StringBuilderTest { + public static void main(String[] args) { + // Create an empty StringNuffer + StringBuilder sb = new StringBuilder(); + printDetails(sb); + + // Append "blessings" + sb.append("blessings"); + printDetails(sb); + + // Insert "Good " in the beginning + sb.insert(0, "Good "); + printDetails(sb); + + // Delete the first o + sb.deleteCharAt(1); + printDetails(sb); + + // Append " be with you" + sb.append(" be with you"); + printDetails(sb); + + // Set the length to 3 + sb.setLength(3); + printDetails(sb); + + // Reverse the content + sb.reverse(); + printDetails(sb); + } + + public static void printDetails(StringBuilder sb) { + System.out.println("Content: \"" + sb + "\""); + System.out.println("Length: " + sb.length()); + System.out.println("Capacity: " + sb.capacity()); + + // Print an empty line to separate results + System.out.println(); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/string/StringComparison.java b/BeginningJava8Fundamentals/src/com/jdojo/string/StringComparison.java new file mode 100644 index 0000000..917fa85 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/string/StringComparison.java @@ -0,0 +1,16 @@ +// StringComparison.java +package com.jdojo.string; + +public class StringComparison { + public static void main(String[] args) { + String apple = new String("Apple") ; + String orange = new String("Orange") ; + + System.out.println(apple.equals(orange)); + System.out.println(apple.equals(apple)); + System.out.println(apple == apple); + System.out.println(apple == orange); + System.out.println(apple.compareTo(apple)); + System.out.println(apple.compareTo(orange)); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/string/StringInSwitch.java b/BeginningJava8Fundamentals/src/com/jdojo/string/StringInSwitch.java new file mode 100644 index 0000000..9f9fa89 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/string/StringInSwitch.java @@ -0,0 +1,36 @@ +// StringInSwitch.java +package com.jdojo.string; + +public class StringInSwitch { + public static void main(String[] args) { + operate("on"); + operate("off"); + operate("ON"); + operate("Nothing"); + operate("OFF"); + operate(null); + } + + public static void operate(String status) { + // Check for null + if (status == null) { + System.out.println("status cannot be null."); + return; + } + + // Convert to lowercase + status = status.toLowerCase(); + + switch (status) { + case "on": + System.out.println("Turn on"); + break; + case "off": + System.out.println("Turn off"); + break; + default: + System.out.println("Unknown command"); + break; + } + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/string/StringLength.java b/BeginningJava8Fundamentals/src/com/jdojo/string/StringLength.java new file mode 100644 index 0000000..43e0f52 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/string/StringLength.java @@ -0,0 +1,18 @@ +// StringLength.java +package com.jdojo.string; + +public class StringLength { + public static void main (String[] args) { + // Create two string objects + String str1 = new String() ; + String str2 = new String("Hello") ; + + // Get the length of str1 and str2 + int len1 = str1.length(); + int len2 = str2.length(); + + // Display the length of str1 and str2 + System.out.println("Length of \"" + str1 + "\" = " + len1); + System.out.println("Length of \"" + str2 + "\" = " + len2); + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/utility/Calc.java b/BeginningJava8Fundamentals/src/com/jdojo/utility/Calc.java new file mode 100644 index 0000000..00e6f80 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/utility/Calc.java @@ -0,0 +1,88 @@ +// Calc.java +package com.jdojo.utility; + +/** + * A utility class to perform basic calculations on numbers. + * All methods in this class are static. It + * provides methods to perform addition, subtraction, + * multiplication and division. + * + * @author Kishori Sharan + * @since Version 1.0 + */ +public final class Calc { + /** + * Stop someone from instantiating this class. This class is not + * meant for instantiation as all its methods are + * static. + */ + private Calc() { + } + + /** + * Performs addition on two numbers. It returns the result of + * n1 + n2 as an int. If the result + * of n1 + n2 exceeds the range of the + * int data type, it will not return the correct + * result. For bigger numbers, use {@link #add(long, long)}. + * + * @param n1 The first number + * @param n2 The second number + * @return Returns the value of n1 + n2 + */ + public static int add(int n1, int n2) { + return n1 + n2; + } + + /** + * Performs addition on two numbers. It returns the result of + * n1 + n2 as a long. + * + * @param n1 The first number + * @param n2 The second number + * @return Returns the value of n1 + n2 + */ + public static long add(long n1, long n2) { + return n1 + n2; + } + + /** + * Returns the result of n1 - n2. + * + * @param n1 The first number + * @param n2 The second number + * @return Returns the result of n1 - n2 + */ + public static int subtract(int n1, int n2) { + return n1 - n2; + } + + /** + * Returns the result of multiplication of n1 and + * n2. It may return incorrect result if the value of + * the multiplication of n1 and n2 + * exceeds the range of the int data type. + * + * @param n1 The multiplicand + * @param n2 The multiplier + * @return Returns the result of multiplication of + * n1 and n2 + */ + public static int multiply(int n1, int n2) { + return n1 * n2; + } + + /** + * Returns the result of integer division of n1 by + * n2. + * + * @param n1 The dividend + * @param n2 The divisor + * @return Returns the result of n1 / n2 + * @throws ArithmeticException If n2 is zero. + */ + public static int divide(int n1, int n2) + throws ArithmeticException { + return n1 / n2; + } +} \ No newline at end of file diff --git a/BeginningJava8Fundamentals/src/com/jdojo/utility/package-info.java b/BeginningJava8Fundamentals/src/com/jdojo/utility/package-info.java new file mode 100644 index 0000000..03e03e8 --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/utility/package-info.java @@ -0,0 +1,7 @@ +/** + * Contains utility classes. More description for + * com.jdojo.utility package goes here. + * @since 1.1 + * @version 1.9 + */ +package com.jdojo.utility; diff --git a/BeginningJava8Fundamentals/src/com/jdojo/wrapper/CachedWrapperObjects.java b/BeginningJava8Fundamentals/src/com/jdojo/wrapper/CachedWrapperObjects.java new file mode 100644 index 0000000..6704e4a --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/wrapper/CachedWrapperObjects.java @@ -0,0 +1,32 @@ +// CachedWrapperObjects.java +package com.jdojo.wrapper; + +public class CachedWrapperObjects { + public static void main(String[] args) { + System.out.println("Using the constructor:"); + + // Create two Integer objects using constructors + Integer iv1 = new Integer(25); + Integer iv2 = new Integer(25); + System.out.println("iv1 = iv1 = " + iv1 + ", iv2 = " + iv2); + + // Compare iv1 and iv2 references + System.out.println("iv1 == iv2: " + (iv1 == iv2)); + + // Let us see if they are equal in values + System.out.println("iv1.equals(iv2): " + iv1.equals(iv2)); + + System.out.println("\nUsing the valueOf() method:"); + + // Create two Integer objects using the valueOf() + Integer iv3 = Integer.valueOf(25); + Integer iv4 = Integer.valueOf(25); + System.out.println("iv3 = " + iv3 + ", iv4 = " + iv4); + + // Compare iv3 and iv4 references + System.out.println("iv3 == iv4: " + (iv3 == iv4)); + + // Let us see if they are qual in values + System.out.println("iv3.equals(iv4): " + iv3.equals(iv4)); + } +} diff --git a/BeginningJava8Fundamentals/src/com/jdojo/wrapper/MathUtil.java b/BeginningJava8Fundamentals/src/com/jdojo/wrapper/MathUtil.java new file mode 100644 index 0000000..080864d --- /dev/null +++ b/BeginningJava8Fundamentals/src/com/jdojo/wrapper/MathUtil.java @@ -0,0 +1,31 @@ +// MathUtil.java +package com.jdojo.wrapper; + +public class MathUtil { + public static Integer add(Integer a, Integer b) { + int aValue = a.intValue(); + int bValue = b.intValue(); + int resultValue = aValue + bValue; + Integer result = Integer.valueOf(resultValue); + return result; + } + + public static void main(String[] args) { + int iValue = 200; + int jValue = 300; + int kValue; /* will hold result as int */ + + // Box iValue and jValue into Integer objects + Integer i = Integer.valueOf(iValue); + Integer j = Integer.valueOf(jValue); + + // Store returned value of the add() method in an Integer object k + Integer k = MathUtil.add(i, j); + + // Unbox Integer object's int value into kValue int variable + kValue = k.intValue(); + + // Display the result using int variables + System.out.println(iValue + " + " + jValue + " = " + kValue); + } +}