
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Master Java fundamentals and topics by exploring the Java Development Kit, Java Runtime Environment, and Java Virtual Machine, then dive into object oriented programming, collections, lambda expressions, streams, and concurrency.
Explore how java sources compile to platform-independent bytecode with javac, load via the class loader, and run on the JVM, and distinguish the roles of JDK and JRE.
Explore Java version history from 1.0 to 23, highlighting Swing, collections, generics, streams, lambda expressions, local variable type inference, and virtual threads, and pattern matching.
Install the latest Java Development Kit 23 from Oracle, configure environment variables and PATH, verify the installation with javac, and prepare the JDK 23 for use with IntelliJ.
Install the IntelliJ community edition on Windows, configure the path and underlying JDK, and prepare a Java project. Create and run a simple Hello world program to verify the setup.
Compile and run a Java application from the command line by creating a test.java file with a class and a main method that prints hello world from command line.
Set up your first Java project in IntelliJ, choosing Gradle and the JDK. Learn about the main method, class structure, and printing hello world with System.out.println.
Learn to use single-line and multi-line comments in Java with IntelliJ to control line-by-line execution, showing how // and /* */ prevent execution and gray out code.
Master declaring and using variables in Java, including int, float, string, boolean, and char, with assignment, printing, camel casing, and final variable behavior.
Learn the eight primitive data types in Java: byte, short, int, long, float, double, boolean, and char, along with their sizes, ranges, and literal representations including underscores and exponent notation.
Explain type casting for primitive types in java, highlighting automatic widening and explicit narrowing. Show int to double and double to int, and a percentage calculation using casting.
Explore strings in Java as reference types, using length and the toLowerCase and toUpperCase methods. Understand immutability, update the reference, and practice concatenation with + and the concatenate method.
Define the boolean data type with true and false, print booleans, and evaluate boolean expressions such as less-than and equality to yield true or false.
Explore one and multi-dimensional arrays in Java, learn to declare, initialize, use indices starting at zero, update elements, and handle array index out of bound exceptions and length.
Learn how conditional statements control code flow in Java using if, if else, else if, and switch statements, based on boolean conditions evaluated at runtime.
Learn how to use if, else if, and else statements to execute code based on boolean conditions. See how number comparisons determine which path executes and print statements display results.
Explore nested if statements by placing one if inside another and evaluating multiple conditions, and learn how logical operators can reduce nesting for readability, illustrated with finding the largest number.
Learn how to replace nested if statements with switch statements to improve readability, using integers or strings to map days to actions with cases, break, and a default.
Use the modern switch expression with the arrow operator to map an integer to a string. Handle multiple values per case, provide a default, and print the result with System.out.println.
Explore Java loops, including for, for-each, while, and do-while, with initialization, condition, and increment steps; learn break, continue, nested loops, and labeled loops for precise control.
Explore how for loops initialize a variable, check a condition, and increment after each iteration. The lecture demonstrates printing 0–4 and variants with different starts and steps, including reverse iteration.
Discover how the enhanced for loop simplifies iterating over one dimensional arrays in Java, contrasting it with the standard for loop and using the length parameter to access items.
Explore how nested for loops work with outer and inner loops using i and j, including three nested levels, and combine one dimensional arrays like symbols and colors.
Learn how break and continue control for loops in Java, with examples of breaking to exit loops, continuing to skip iterations, and using labels for nested loops.
Explore how the Java while loop executes its body while a condition is true, increments the counter, and uses break and continue to control flow while avoiding infinite loops.
Explore the do-while loop in Java, see how it prints 0 to 4 with a simple increment and condition, and learn how do-while, while, and for loops can be transformed.
Learn how Java methods are object oriented blocks of code that run when called, accept parameters, and enable code reuse inside a class.
Learn how to pass parameters to Java methods, define the type and name, call with fixed or variable arguments, and sum values using a for-each loop.
Define and return values from Java methods using the return statement with matching data types, such as integers and strings, and compare void with static public methods plus string concatenation.
Demonstrate method overloading by creating methods with the same name but different parameters or data types, and explain static binding that selects the correct method at compile time.
Explore variable scope in Java, including local variables, method scope, and for loop scope, with examples of symbols not accessible outside their blocks, and preview static methods and reference types.
Java 10 introduces var for local variable type inference, letting you omit explicit types in methods and locals. But var cannot be used for class fields and triggers compile-time errors.
Explore one-dimensional and multi-dimensional arrays in Java, learn zero-based indexing, array initialization, and the Arrays class methods for modifying, sorting, copying, and searching data, including jagged arrays and exceptions.
Learn how to work with one-dimensional and multi-dimensional arrays in java, initialize to zeros, update values by index, print arrays, and handle array out-of-bounds scenarios.
Learn how to use the java.util Arrays class to sort, print, fill, and compare one dimensional arrays with methods like Arrays.sort, Arrays.toString, Arrays.fill, and Arrays.equals, binary search on sorted data.
Explore Java operators, including arithmetic, relational, assignment, bitwise, and logical operators, plus the ternary conditional and instance of operator, with practical usage examples.
Explore arithmetic and conditional operators in Java, including plus, minus, multiply, divide, modulo, plus equals, and boolean results from equals, not equals, less than, and greater than.
Discover how bitwise and logical operators work in Java using binary representations of six and five to yield four and seven, and see string length and starts with checks interplay.
Explore using ternary operators to replace simple if-else, return the smaller number, apply to strings, and chain conditions for zero, negative, and positive results.
Explore object oriented programming as a paradigm of classes and objects that bundle data and methods, contrast it with procedural programming and outline the pillars of inheritance, encapsulation, and abstraction.
Create and instantiate Java classes using the new keyword to define attributes and methods, access them with the dot operator, and view classes as blueprints for objects.
Define and access class-related attributes, including a default string, an integer x and a double y, instantiate multiple independent objects with new, and note that final prevents changing a value.
Define and call a public void say hello method inside a class using the dot operator on an instantiated object to print hello world, then preview access modifiers next lecture.
Discover how Java packages group related classes, prevent name conflicts, and how to import them with full paths or asterisk from the Java API, with packages mapped to directories.
Learn how public, default, and private modifiers control class, variable, and method access across packages, with practical examples of accessing and restricting data in Java.
Create private field variables for a student (first name, last name, address, age, university), generate setters and getters, implement toString, and instantiate the class to display its string representation.
Learn how the constructor, a special method without a return type, initializes field variables when creating objects; explore public and private constructors and default constructors.
Explore local, instance, and static variables in Java, contrasting stack versus heap memory, default values, initialization rules, scope through constructors and objects, and access via this or class references.
Objects in Java default to null, so invoking methods on a null reference causes a null pointer exception; use null checks before accessing a best friend's first name.
Clarifies Java's pass-by-value vs pass-by-reference for primitives and objects, showing copied references still act on the same memory location, with heap and stack concepts.
Explore inheritance, where a subclass extends a superclass to inherit properties and methods, using super to call parent constructors and methods, and protected access enables child class usage.
Explore composition as a has-a relationship by using object references instead of inheritance, and learn why composition should be favored for flexible, modular design, with an employee and address example.
Explore how inheritance works in Java, override methods in subclasses, and use final to prevent overriding or extension, with examples like bubble sort and merge sort.
Explore polymorphism in object oriented programming with an algorithm superclass and bubble sort and merge sort subclasses. Learn how programming to a supertype enables runtime polymorphism and reduces code duplication.
Explore abstraction by defining abstract methods and abstract classes, demonstrating that shapes like circle and rectangle must override calculate area, program to a super type, and cannot be instantiated.
Encapsulation hides data by wrapping variables and methods into a class unit. Use public and private modifiers to control visibility, getters for read only access, and setters for updates.
Explore how interfaces define a blueprint for classes, contrast with abstract classes, and enable multiple inheritance. Learn default and static interface methods and functional interfaces with lambda.
Explore immutability in Java, using final fields and no setters to create unchangeable objects, illustrated by immutable person and string examples, with thread-safety implications in multi-threading.
Compare how the double equals operator checks primitive value equality and how the equals method compares object values. Learn why overriding equals also requires overriding hashCode to maintain correct behavior.
Explore java records as a boilerplate-free alternative to classes, defining a public record student with name, address, age, and gender; learn auto-generated constructors, accessors, equals, hashCode, and toString.
Explore sealed classes and interfaces in Java, restricting which types may extend or implement a class or interface using permits, final, and nonsealed, as shown with shape, circle, and rectangle.
Explore the instance of operator, testing an object's type, and Java 14 pattern matching for inline casting, with examples from strings and an animal dog class.
This course is about Java programming language. The Complete Java 23 Bootcamp - From Beginner to Expert helps to learn the fundamentals of object oriented programming. Let's consider the topics you will learn about:
Section 1 - Java Basics
variables, data types and type casting
loops and conditionals
methods and operators
life cycle of a thead
Section 2 - Object Oriented Programming (OOP)
classes and objects
class methods and packages
modifiers and constructors
pass by value and pass by reference
inheritance
composition
polymorphism and abstraction
encapsulation
interfaces, records and sealed classes
Section 3 - Memory Management
stack and heap memory
garbage collection
ZGC and generational garbage collection
Section 4 - Exceptions
exceptions and errors
try-catch blocks
throws and throw keywords
Section 5 - File Handling and Serialization
Files in Java
FileReader and FileWriter
FileInputStream, DataInputStream and handling files
Section 6 - Strings
constant string pool (intern pool)
string comparison
intern() method
Section 7 - Generics
generic methods and classes
Section 8 - Java Collection Framework
arrays and lists
hashmaps and hash sets
running time comparison of data structures
Section 9 - Lambda Expressions
lambda expressions
method references
Section 10 - Streams
Java stream API
external and internal iteration
short-circuiting and loop fusion
optionals
parallelization
Section 11 - Multithreading and Virtual Threads
threads and processes
thread lifecycle
synchronization
virtual threads
We are going to discuss the theory behind each concept and then we take a look at the concrete implementation in Java as well.
You will get lifetime access to 180+ 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!