
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Master java from basics to advanced topics, including object-oriented programming, multithreading, networking, and web development, and apply knowledge through real-world projects and code challenges to launch your career.
Compare Java and C++ on memory management, platform dependence, performance, and typical uses, showing Java for cross-platform enterprise and Android apps, C++ for systems and real-time apps.
Explore the Java platform components: the Java runtime environment, the Java virtual machine, and the Java Development Kit, including the class loader, runtime data areas, and the native method interface.
Explore Java virtual machine architecture, including dynamic class loading, delegation model, and the execution engine with interpreter, jit compiler, and garbage collector, plus heap, program counter, and native method stack.
Explore how the JVM secures Java applications by enforcing bytecode verification, using security managers and policies to protect against malicious code, unauthorized access, and data breaches.
Explains how a Java source file is compiled into bytecode, loaded by the class loader, verified for safety, and executed by the JVM interpreter.
Download the JDK 17 from the provided link, run the Windows x64 installer, choose an installation folder, and complete the setup to install the JDK.
Install the Eclipse IDE for Java developers by downloading, selecting the JDK folder, choosing an installation destination, and launching Eclipse to set your workspace.
Use Eclipse to create a new Java project, add a main class, and write code to print Hello World, then run the program to view output in the console.
Learn to compile a Java file to bytecode with the Java C command, then run the class file with the Java command from the command line, printing hello world.
Define a Main class with a public static void main(String[] args) as the program’s starting point and print Hello World to the standard output.
Learn how Java's standard output, accessed via System.out, uses print line to add a new line and print to stay on the same line for console output.
Master Java variables and data types, from byte to boolean, including strings. Learn declaring, initializing, updating variables, and using print line and concatenation to display results.
Explore byte, short, and long data types in Java, their signed ranges, and memory efficiency. Learn about long literals with the L suffix and casting between types to handle overflow.
Explore Java type casting, including automatic and manual conversions, widening and narrowing between data types, with examples of up casting and down casting.
Explore more type casting examples in Java, showing how int results from expressions require casting to byte to avoid type mismatch, with examples using byte, short, and long.
Explore how float and double store real numbers in Java, with seven and sixteen decimal precision, four and eight bytes, and the use of f or d suffixes and casting.
Java stores characters as Unicode numbers mapped to symbols, with examples like 65 for 'A' and 97 for 'a', and shows how casting reveals decimal values and next characters.
Explain comments in Java, including single-line comments starting with // and multi-line comments using /* ... */, with hello world and the main function as the entry point.
The final keyword makes a local variable a constant by preventing reassignment after initial assignment. It shows how to declare and use final to prevent accidental modification.
Explore arithmetic in Java by adding, subtracting, multiplying, and dividing integers, printing results, and using the modulo operator for remainders; learn when decimals require float types.
Learn how Java comparison operators produce booleans by comparing two values, using greater than, less than, greater than or equal to, less than or equal to, equals, and not equals.
Explore compound assignment operators in Java as shorthand for arithmetic and bitwise operations with assignment. See how +=, -=, *=, and /= match longer expressions.
Explore how Java's increment and decrement operators work, including postfix and prefix forms, the x += 1 shorthand, and examples that print updated values.
Explore how wrapper classes wrap primitive data types into objects, enabling autoboxing and unboxing in Java, with examples using int and character and the toString conversion.
Discover how Java packages group related code, control access, and support reuse, then import packages or specific classes like ArrayList to use their functionality.
learn to get input from the console using a scanner, import java.util, read strings with nextLine and integers with nextInt, and print the user's name and age.
Create a simple Java program in Eclipse to demonstrate declaring and assigning integers, using print and println, and applying compound assignment and division to update values.
Create a simple Java application in Eclipse that reads a user's first name, last name, and age using a scanner, then prints the full name and age.
Master if and else statements by evaluating boolean expressions, executing code blocks based on true or false outcomes, and comparing values like equals and greater than.
Learn how chained elsif statements check multiple conditions and assign a letter grade from numeric scores, using thresholds like 90 for A, 80 for B, and 70 for C.
Explore the switch statement in Java, which tests a variable against multiple values and executes a matching case using break, with a default for unmatched cases.
Learn how the enhanced switch statement in Java 14+ returns values, uses the arrow syntax and yield with braces, and why default is mandatory, compared to the traditional switch.
Explore conditional operators in Java, including and, or, and not, through boolean expressions and code examples that evaluate with a variable named a in if statements.
Build a simple Java grade converter that reads a numeric grade using a scanner and outputs the corresponding letter grade with chained else-if statements.
Discover how for loops execute a code block multiple times by initializing a counter, testing a condition, and updating it to print numbers 1 to 5.
Use while loops to execute code blocks repeatedly while a condition is true. Initialize the counter outside the loop, update it inside, and print numbers from 1 to 5.
Master do-while loops, where the block runs at least once before the condition is checked. Initialize the counter outside, update inside, and print 1 through 5.
Explore the break statement in Java, which terminates loops or switch statements, with examples showing breaking a for loop when i equals five to print 0–4.
Learn how the continue statement in Java controls loop flow by skipping iterations in for, while, and do-while loops, and understand inner-loop behavior.
Learn how to build a Java console app that reads a number with scanner, validates a 2–20 range, and demonstrates for, while, and do-while loops, plus break and continue.
Implement a command line calculator in Java that reads two numbers and an operation, performs addition, subtraction, multiplication, division, modulo, or exponentiation, and prints the result.
Learn how to declare and call functions in Java, including void and return types, parameters, and static methods, with examples of printing and returning values.
Learn how parameters pass information to functions with integer parameters, see a multiply example with 2 and 3, and a power2 function that squares a value.
Explore variable scope in Java, including local, parameter, and global (class level) variables. Learn how scope affects visibility, lifetime, and avoiding naming conflicts in code.
Learn function overloading in Java by using the same method name with different parameter lists, and see overload resolution based on number, type, and order of parameters.
Create a Java project in Eclipse named functions example, implement add numbers and overloaded print message methods, and demonstrate calling them from main to print a string and an integer.
Learn how arrays store lists of values, declare and initialize them with or without values, set size with new, and access elements by zero-based indices to read or modify.
Learn two ways to iterate arrays in Java: classic for loops using array.length and an index, and for-each loops that print each element, optionally with its index.
Explore how array lists in Java offer a dynamic, resizable alternative to fixed-size arrays by importing java.util, declaring a generic ArrayList<Integer>, adding and removing elements, and iterating to print results.
Learn to sort arrays in Java using the java.util Arrays class, import the class, declare and initialize an int array, sort in place with Arrays.sort, and print with Arrays.toString.
Learn how binary search finds a target in a sorted array using Java's built-in Arrays.binarySearch. Understand the left, right, and mid pointers, insertion point, and that sorting is required.
Explore a practical Java code example that creates and manipulates an int array, prints elements, sorts with Arrays.sort, and performs binary search to locate indices.
Pass arrays to methods by creating a function that accepts an integer array and prints its elements with a for loop, using either a declared array or an anonymous array.
Learn how to return int arrays from methods in Java by creating a method that returns an array and using it in main to iterate and print elements.
Explore multidimensional arrays in Java as arrays of arrays (matrices), initialize with nested braces or new int[3][3], and iterate with nested loops to print elements.
Learn how to copy an array into another using system.arraycopy, initialize source and destination arrays, and copy all elements to the destination.
Learn how strings in Java store text, declare string variables with the string keyword, print with println, and use length, toUpperCase, toLowerCase, and indexOf to locate words or characters.
Explore the string class in Java, including string literals, the string pool, and methods to declare strings with assignment, new, or a char array constructor, all yielding the same object.
Explore how the string pool in Java manages string literals, references, and heap allocations, with examples that show when new strings are created or reused.
Learn how to compare strings in Java using the equals method, the equals two operator, and the compare two method; understand text value versus references, case sensitivity, and lexicographic results.
Learn Java string concatenation with the plus operator and the concat method to form new strings from literals and numbers, returning a new string object.
Learn how to use Java's substring function to extract a substring by index, with start inclusive and end exclusive, demonstrated with an example.
Master the Java string format method to build formatted strings with placeholders for strings, numbers, dates, and other data types, enabling runtime value substitution.
Java's string class and its built-in methods for manipulating strings, including toLowerCase, toUpperCase, trim, startsWith, endsWith, charAt, length, replace, concat, and isEmpty.
Explore the join method for strings, a static string method that merges inputs with a delimiter. Pass a delimiter and a list or array of strings to produce joined result.
Discover how to use Java's string repeat method to repeat a string n times, building repeated dashes and hello lines, and trim the trailing newline with substring.
Discover how the Java StringBuilder class enables mutable string manipulation with append, insert, delete, and replace methods, avoiding string pool inefficiencies and yielding string values with toString.
Learn how StringBuffer in Java provides a mutable, thread-safe way to build and modify strings, using append, insert, delete, replace, and toString to manage content.
Compare StringBuffer and StringBuilder in Java, emphasizing thread safety and performance, and explain when to use each.
Build a simple Java app in Eclipse to explore string manipulation. Learn to compare strings with equals, concatenate, extract substrings, and format output with String.format.
Explore stringbuilder and stringbuffer in Java, showing append, insert, delete, and toString operations on a Hello world example; compare thread safety and when to use stringbuffer versus stringbuilder.
Explore regex basics, a regular expression that defines a match pattern for find, replace, and validation. See how the dot denotes any character and how s creates a two-character pattern.
Explore character classes in RegEx, defining a set of characters that match a single character in a string. See negation, ranges, and intersections with practical examples.
Learn regex quantifiers to specify how many times a character may occur, with practical code examples showing exact, at least, at most, and zero or more repetitions.
Explore regex metacharacters as short codes, including digits, non digits, whitespace, non whitespace, word character, non word character, and word boundary; see code examples for true or false matches.
Explore how to implement regex in Java to validate strings as alphanumeric or exactly ten digits using Pattern, compile, and Matcher, and handle whitespace with \s.
Define object oriented programming as a paradigm that organizes code into objects via classes and instances, with attributes and methods, and illustrates inheritance, encapsulation, and polymorphism for reusable, modular code.
Explore how the this keyword in Java resolves ambiguity between instance variables and parameters by referencing the current object, using this.name and this.age in setters and a print method.
Learn how constructors in Java initialize objects, including default no-arg constructors and parameterized constructors, how overloading allows multiple constructors, and how the compiler provides a default constructor when none exists.
Explore constructor overloading in Java by implementing multiple constructors with different parameters, including default, name-only, age-only, and name-and-age variants, and instantiate objects with any of these constructors.
Learn how to implement a copy constructor in Java, creating a new object with the same data members as an existing one by copying name and age from a person.
Learn inheritance in Java, including hierarchical and multi-level patterns, with employee as a superclass and programmer and tester as subclasses. See methods like submit timesheet and vacation and subclass-specific methods.
Explore Java polymorphism by using a shared perform work method in an employee base class, with programmer and tester implementing their own versions to print distinct messages, boosting code usability.
Learn Java access modifiers: public, protected, default, and private, and how they control visibility to support encapsulation in classes and packages.
Explain encapsulation in Java with a bank account example in Eclipse, showing private fields, public getters, and a withdraw method that validates balance, preserving data hiding and maintainability.
Explore association in Java by modeling relationships between objects, including one-to-one, one-to-many, and many-to-many, illustrated with customers, orders, libraries, books, and book copies.
Learn aggregation in Java as object composition where an address object is shared by employee and customer. See how has relationships create reusable, complex structures by combining classes.
Explore composition, where a composite class contains component classes like engine and wheels. Use instance variables and constructors to assemble objects, noting components cannot exist without the composite.
Compare composition and aggregation in object oriented programming, defining composition as part of a class where the component cannot exist independently, and aggregation as container where components can exist independently.
Discover abstraction in Java by hiding implementation details and exposing essential functionality. Learn how abstract classes and interfaces let you focus on what an object does.
Explore abstract classes in Java, learn why you cannot instantiate an abstract class, and see how subclasses implement abstract methods like draw while optionally overriding non-abstract methods.
Explore Java interfaces as blueprints of classes and their abstract methods, learn how interfaces extend others, and see classes like Circle and Square implement Drawable by defining draw.
Compare method overriding and overloading in Java by showing how circle and square override a shape's draw method and how the shape class overloads draw with different parameters.
Master the super keyword to reference the immediate parent class instance variable, invoke the immediate parent class method, and call the immediate parent constructor in subclass constructors.
Explore the static keyword in Java, where static fields and static methods belong to the class, enabling a single shared value and class-based access via the class name.
Learn how plain old Java objects store data with private fields and public getters and setters, enabling JSON or XML serialization and representation of database entities or API responses.
Override the toString method in Java classes to produce a readable object representation. Learn how to print objects directly with println and display key fields.
Explore java records in java 14+, the immutable, boilerplate-free alternative to plain old Java objects, and learn how to declare records, access fields directly, and compare with POJOs.
Explore generic classes in Java by defining a type parameter, implementing a box class with setContent and getContent, and using Integer and String instances to demonstrate reusable, flexible code.
Explore multi-type generics by building a pair class with type parameters t and u, storing and printing an age and a name of different data types.
Discover how to add type bounds to generics with the extends keyword in a pear class, forcing the first type to extend number, and observe a bound mismatch with string.
Learn Java naming conventions for classes, interfaces, methods, variables, and packages. Use uppercase for classes and interfaces, camel case for methods and variables, and uppercase with underscores for constants.
Discover the Java math class and its static methods, including abs for absolute value, max for the larger of two numbers, sqrt, round, and random.
Learn how to create and format dates in Java using the date class from java.util, including Unix timestamps, format with SimpleDateFormat, and compare dates with after and before.
Learn to define and use enums in Java, create a day of week enum, and print all days using the values method while comparing weekend and workday constants.
In this comprehensive course we will dive deep into Java Programming and cover many topics starting from the basics to the advanced topics with Hands On projects and quizzes.
This comprehensive Java course is designed for programmers who want to learn Java programming language from scratch or for Java developers who want to improve in some specific areas or advance their skills and learn more advanced topics in Java. In this course, you'll learn variety of topics including:
Java Basics
Conditionals and Control Flow
Loops
Strings
Functions
Arrays
Regex
Object-Oriented Programming (OOP)
Exception Handling
Collections Framework
Java Input/Output
Java New Features
Networking
Multithreading
Swing: Developing GUI Applications
JDBC: Working with Databases
Connecting JDBC to MySQL Database
Servlets: Java Web Development
JSP: Java Web Development
Throughout the course, you'll work on Hands On projects like: Student Management system and an Online Chatting Application. These projects will help you apply what you've learned and build practical skills that you can use in real-world scenarios. By the end of this course, you'll have a solid foundation in Java and be able to build Java applications confidently.
I am confident that you will like this course and that you will be a professional Java programmer, or a better Java programmer if you already have some Java knowledge, so join me in this course and master Java Programming!