
Explore Java step by step from basics to advanced topics, covering operators, memory models, strings, enums and dates, arrays, collections and generics, and features like optional, streams, and lambda expressions.
Explore Java operators, including arithmetic, relational, assignment, bitwise, logical, and conditional (ternary) operators, plus the instance of operator for type checks.
Explore how and, or, and not logical operators combine conditions to yield true or false in Java, with practical examples using A and B.
Master the ternary operator by evaluating a boolean condition to select between two values, demonstrated with numbers and strings, including nested usage and readability cautions.
Apply the instanceof operator to verify if an object is an instance of a class or interface, using cat and animal as examples; note compile-time errors when types are incompatible.
Explore wrapper classes for Java primitives and how autoboxing and unboxing convert between primitives and objects, unlocking useful methods in Integer that primitives lack.
Understand autoboxing and unboxing in Java by comparing primitive types with wrapper classes, and learn when to use primitives to improve performance.
Explore wrapper classes main methods, including valueOf for converting strings to int, double, or boolean, plus value extraction methods, toString, binary radix conversions, with error handling and boxing techniques.
Master wrapper class methods in Java, including compareTo, equals, ceil, floor, round, min, max, and random, to compare numbers, check booleans, and generate pseudo random values.
Java character wrapper class methods let you check letters and digits, detect whitespace, determine case, and convert between cases, plus use escape sequences to print quotes, backslashes, tabs, and newlines.
Explore garbage collection in Java. Compare manual memory management in C/C++ and automatic heap memory management with mark and sweep, references versus objects, and non-deterministic behavior.
the finalize method is invoked by the garbage collector when an object has no active references, illustrating gc's non-deterministic nature and advising against relying on system.gc while managing references.
Explore the differences between stack memory and heap memory in Java, including how stack frames store method calls and local variables while heap stores objects and instance variables.
Monitor heap memory in Java by using Runtime.getRuntime to read total, max, and free memory, convert bytes to megabytes, and compute used memory as total minus free.
Explore how constructors initialize objects in Java, including default and parameterized options, and learn how constructor overloading and chaining enable multiple initialization paths.
Demonstrates constructor overloading and chaining by building a house class with multiple constructors to initialize rooms, doors, and windows, using this to chain constructors, and toString to print the object.
Explore method overloading in Java by using the same method name with different parameters. Learn the two overload strategies—varying the number of arguments and data types—with integer and double examples.
Differentiate overriding from overloading in Java: overriding uses same name and same parameters, enabling runtime polymorphism; overloading uses same name with different parameters within one class, enabling compile-time polymorphism.
Explore how strings are created in Java and how the string constant pool avoids duplicates. Compare string literals with the new keyword, revealing memory usage in the heap.
Explore string comparison in Java by contrasting the double equals sign with the equals method, highlighting reference versus value equality, the string constant pool, and the impact of new keyword.
Explain how the string intern() method returns a canonical pool reference to save memory by reusing literals and newly created strings, affecting == and equals.
Master essential string methods in Java, including length, charAt, substring, replace, replaceAll, trim, and split. Understand how length returns Unicode units, and compare concatenation with the plus operator.
Explore string immutability in Java and how substring, replace, and concat create new strings. Learn why this impacts memory, garbage collection, and when to use StringBuilder or StringBuffer.
Compare string, string buffer, and string builder, showing that string builder updates the same object for speed and memory efficiency, while string buffer is safe for multi-threaded applications.
Compare string builder and string buffer performance in a single-threaded context, showing string builder is about two times faster, and demonstrate append, insert, delete, reverse, and conversion to string.
Explore enums in Java, a special type representing a fixed set of constants like days of week; learn usage, accessing values with the dot operator, and differences from classes.
Define and use enums in Java, declare them inside a class or separately, iterate values() to print days or seasons, and switch on the enum with cases and default.
Explore the two date and time approaches in Java: the classic java.util date and calendar, and the modern java.time API, highlighting safety, usability, and backward compatibility.
Learn to manipulate date and time with java.util date, calendar, and simple date format, including creating, formatting, adjusting, and comparing dates and time zones.
Learn to handle dates and times with the java.time package using local date, local time, and local date time, plus date time formatter and plus or minus changes.
Explore conditional statements in java, including simple and nested if statements, switch statements, and default cases, and learn to use logical operators to reduce nesting and improve readability.
Identify the largest of three numbers using nested if statements in Java, and print the largest number, or use logical operators to simplify control flow.
Explore how loops and nested loops control execution in Java, using for, foreach, while, and do-while patterns, with break, continue, labels, and multi-dimensional arrays.
Explore nested for loops with outer and inner loops, printing indices and values in a two dimensional array, and use optional labels with break and continue.
Explore how arrays store fixed, same-type items with zero-based indexing in one-dimensional string and integer arrays. Learn to create, iterate, and use methods to modify, sort, copy, or search.
Explore one-dimensional int and string arrays, printing with Arrays.toString, sorting with Arrays.sort, and searching with Arrays.binarySearch. Learn how Arrays.equals compares items, and how Arrays.copyOf copies array content.
Learn how arrays behave as method arguments in Java, including pass-by-value vs pass-by-reference semantics, and how anonymous one-dimensional arrays are defined, modified, and reflected outside the method.
Explore multidimensional arrays in Java, including two- and three-dimensional structures, indexing with rows and columns, initialization, jagged arrays, and common errors like array index out of bounds.
Learn to create and manipulate two dimensional integer arrays, initialize a 3x4 matrix, set values by i plus j, iterate with foreach, and handle irregular (jagged) matrices and index bounds.
Explore varargs in Java, enabling a method to accept zero or many arguments using three dots, stored as an array, with rules on placement and single vararg per method.
Explore varargs in Java by summing integers with a public static void method using int... numbers, showing 3+5+10+20=38 and 3+5+10+200=218, and that varargs must be the last parameter.
Explore how arraylists serve as dynamic arrays that grow and shrink at runtime, offering random indexing for fast access and preserving insertion order with generics and wrapper classes.
Learn to create and manipulate an array list in Java: instantiate, add, remove, update, check size and empty, sort, and convert to array.
Explore how generics enable type safety and avoid typecasting by using type parameters in classes, interfaces, and methods, with compile-time checks via the diamond operator.
Explore generic methods in Java, learn to replace type casting with type-safe generics, define flexible methods like printArray using T and V, and apply to strings and numbers.
Explore generic classes in Java by building a box that stores a generic type T, with a constructor and get/set methods, and see how Java replaces T for different types.
Explore Java generics wildcards: understand ? extends Number as an upper bound, ? super Integer as a lower bound, and inbounded wild cards for safer, flexible type handling.
Explore upper bounded wildcards in java generics by using ? extends number to handle lists of numbers and print their values, while excluding non-numeric types.
Explore lower bounded wildcards in Java generics, using ? super Integer to accept super types like Number or Object, and see how lists of Integer, Number, or Object behave.
Learn how unbounded wild cards use the question mark to accept lists of unknown types. See a generic print method work with integers, doubles, and strings.
This course is about Java programming language. The Java Programming: Step by Step from A to Z course stands on its own but relies on the free beginner course so I strongly recommend that you start with the First Steps in Java FREE course and then continue with this course.
Curriculum
operators
wrapper classes
garbage collection
stack and heap memory
Strings
enums
date and time
generics theory and examples
collections and data structures
exceptions and errors
abstraction, encapsulation and polymorphism,
serialization
lambda expressions
Java streams theory and examples as well
multithreading theory and examples
design patterns
We are going to discuss the theory behind each concept and then we take a look at the concrete implementation in Java as well.
Thanks for joining the course, let's get started!
We are going to discuss the theory behind each concept and then we take a look at the concrete implementation in Java as well.
Thanks for joining the course, let's get started!
We are going to discuss the theory behind each concept and then we take a look at the concrete implementation in Java as well.
Thanks for joining the course, let's get started!
You will get lifetime access to 110+ lectures plus slides and source codes for the lectures!
This course comes with a 30 day money back guarantee! If you are not satisfied in any way, you'll get your money back.
So what are you waiting for? Learn Java in a way that will advance your career and increase your knowledge, all in a fun and practical way!