
Understand concepts, write your own code, and solve practice examples to build confidence. Question yourself, avoid memorization, and use the Q&A for help to learn at your pace.
Download and install the Java development kit (JDK) version 13 for Windows 64-bit, then install IntelliJ IDEA Community Edition and launch it, skipping imports and accepting the license.
Learn to download and install the Java Development Kit on macOS and set up intelligent idea to start writing Java code.
Create a Java command line app from a template, name the project my project in idea projects / my project, and locate the source package com dot company.
Learn what a method is in Java, how it accepts data, processes it, and returns a value, while exploring return types, access modifiers, and class structure.
Learn to write your first Java program by defining a public class with a main method, using string arguments, and printing to the console with System.out.println.
Master variables in Java by declaring types, assigning values, and printing dynamic data, while combining strings with variables and ensuring declarations precede usage.
Explore primitive data types in Java, including byte, short, long, float, double, char, and boolean, and learn their sizes, ranges, and how they store data.
Declare and store integers in Java using byte, short, int, and long, learn their ranges, and understand type promotion in expressions.
Explore the floating point data type in Java, comparing float and double, and how divisions and square roots yield decimals, with f suffix and precision trade-offs.
Explore the char and boolean data types in Java, learn how Unicode represents characters, declare char and boolean variables, and preview their role in conditional and control flow statements.
Explore non primitive data types in Java, focusing on reference types like arrays. Learn how to declare, allocate memory with new, and access array elements via indices.
Learn to create arrays in Java by declaring and allocating memory with new, assigning values by index, and printing elements; use curly braces to initialize int and double arrays.
Explore basic arithmetic operations in Java, including addition, subtraction, multiplication, division, and modulus, with variable examples and increment, decrement, and compound assignment operators.
Learn to accept user input in Java via the Scanner class on the console; create a Scanner object, import java.util.Scanner, and read an integer with nextInt, then print it.
Build a Java simple interest calculator using a scanner to read principal, years, and rate, then compute and display interest with principal times years times rate divided by 100.
Explore how conditional statements in Java control program flow by evaluating conditions as true or false, using the if and switch statements.
Learn how to write if conditional statements in Java, using boolean expressions such as age > 18, with else and else-if blocks to govern driver's license eligibility outcomes.
Learn how to use nested if statements in Java to check multiple conditions, such as age and percentage, and understand inner and multi-level nesting with example outputs.
Learn to use the switch statement to replace long if-else chains with case blocks for values 1 through 5, using break and a default for out-of-range input.
Master Java relational operators for comparing values, including equal to, not equal to, greater than, less than, greater than or equal to, and less than or equal to forms.
Apply logical operators to combine two conditions in a single if statement, using the double ampersand (logical and) and understand how it differs from the bitwise ampersand for efficient evaluation.
Learn how the logical or operator makes an expression true if any condition holds, using age and percentage criteria to illustrate that one condition being true qualifies a person.
Learn to use a while loop to repeat code, print a message five times, control iterations with count and count++ or count--, and avoid infinite loops.
Learn the do while loop in Java, how its syntax checks the condition at the end, and how it differs from the while loop.
Explore how a for loop in Java combines initialization, condition, and increment to simplify loop logic, print numbers from 0 to 10, and access array elements using an index i.
Use a for loop to traverse an array of numbers, access each element with its index i, and print numbers[i] while building a running sum.
Explore using a while loop to sum array elements in Java and compare it with a for loop, using initialization, condition, and increment to traverse arrays.
Learn to use a for loop and the modulus operator to identify and print even numbers from an array, and adjust the logic to find odd numbers with a conditional.
Explore the enhanced for loop in Java version 5, which iterates over arrays without indexing, prints each element, and uses break to stop at seven.
Create two arrays for odd and even numbers, iterate through the input with an enhanced for loop, assign numbers to the correct array using separate indices, then print both.
Explore multi-dimensional arrays in Java by comparing one-dimensional and two-dimensional arrays, learn to access elements with row and column indices, and declare and initialize two-dimensional arrays with proper syntax.
Learn to declare, initialize, and print two dimensional arrays in Java, including 3x3 and 3x2 cases, and traverse them with nested loops to format output.
Practice example 1 guides you to build a Java program that uses an if-else to determine if a student passes based on entered marks from 0 to 100.
Implement a Java program with a nested if to determine football academy eligibility from user age and height, yielding qualified, not qualified, or comeback messages with dynamic years.
Accept an integer representing the day of the week, use a switch statement to map 1–7 to Monday–Sunday, read input with Scanner, and print the corresponding day with prompts.
Build a Java multiplication table for a user-entered number using a for loop from 1 to 10. Read input with a scanner and print the results.
Build a product discount calculator using an array of prices and a for loop to apply a user-entered discount percentage, and print the discounted prices.
Use loops and a scanner to accept multiple values by asking the user for the number of values, storing them in an array, and printing the entered values.
Explore object oriented programming in Java by learning how classes, instance variables, and methods define attributes and how objects are created from templates using the new keyword.
Create a new Java class named student in a package, define id and marks, instantiate objects in main, and access attributes with the dot operator and print them.
Explore how object creation works internally in Java: a class becomes a new data type, the new operator allocates memory and returns a reference to the object's memory location.
Implement class methods in a Java class by defining variables, assigning values, and invoking a percentage method to calculate marks across subjects.
Learn to create methods that return a value instead of printing, using a proper return type such as double. Capture the returned value in variables for further calculations.
Learn how to design class methods that accept parameters in java by defining a parameterized total method, passing sum values, and computing a percentage without code repetition.
Learn how constructors initialize class variables when creating objects and how they are automatically invoked, enabling default values or using parameter choice constructors to pass values.
Use parameterized constructors to initialize id and score fields, including physics, chemistry, and math marks. Create objects with new, pass arguments to the constructor, and print values to verify initialization.
Learn how the this keyword in Java refers to the object itself, distinguishes class fields from parameters, and enables accessing an object's instance variables in OOP.
Learn how Java uses method overloading to define the same method name with different parameter lists, including no parameters and integer or double variants, with practical multiplication examples.
Explore overloading constructors in Java to create objects with or without parameters, ensuring flexible object creation through parameterized and no parameter constructors.
Pass an object as a parameter to a method to compute area by accessing its length and height.
Explains the private access modifier in Java and contrasts it with public and default access. Demonstrates how private variables and private methods restrict access within the class.
Learn how the static keyword lets you access class methods without objects, compare it with instance access, and understand its role in the main method and its limitations.
Explore how the final keyword in Java prevents reassignment, keeping a variable's value constant for the program and showing an error when a final variable is reassigned.
Learn how inheritance lets a Java class become a subclass of a superclass, inheriting attributes and methods via the extends keyword.
Explore how to implement inheritance in Java by creating a parent and child class, using extends to inherit attributes and methods, and controlling access with private modifiers.
Learn how inheritance reduces code repetition by modeling general students and biology students, where biology inherits physics and chemistry and adds biology marks.
Learn how inheritance lets a bio student extend the student class to reuse physics and chemistry marks, and how to display biology marks without code repetition.
Explore hierarchical inheritance with a single parent class and multiple child classes, exemplified by student, bio student, and engineering student, including subject marks and display logic.
Learn multi-level inheritance in Java, where a class inherits from a parent that inherits from a grandparent, allowing access to fields and methods across E, B, and C.
Master the concept of method overriding in Java by exploring how a subclass overrides a superclass method, using the super keyword to access the parent, and distinguishing it from overloading.
Explore how method overriding enables runtime polymorphism and dynamic method dispatch in Java, contrasting it with method overloading and explaining compile-time versus runtime behavior.
Learn how to prevent method overriding in Java by using the final keyword on a method, and how to prevent inheritance by declaring a class final.
Explore object oriented programming by creating a programmer class with name, id, and salary, initializing via a constructor, creating an object, displaying and updating its attributes in main.
Implement an object-oriented circle class in Java to compute area and perimeter from a user-provided radius using pi 3.14, with constructor and area and perimeter methods.
Master object oriented programming and inheritance by building an employee class with set and get data, and three subclasses: tech, HR, and design with salary calculations.
Learn the difference between errors and exceptions, and implement Java exception handling using try, catch, finally, and throw to manage runtime issues.
Implement exception handling in Java by using a try block, catching arithmetic exceptions, and a finally block that executes code regardless of errors.
Learn to display the actual exception description in Java by printing the caught exception object in the catch block, replacing your own message with the exception's message (divide by zero).
Use multiple catch blocks to handle different exceptions from a single try block, such as array index out of bounds, so each error is addressed by its specific handler.
Nest try blocks to handle multiple exceptions with inner and outer catches, such as index out of bounds and arithmetic errors, and learn how to throw your own exceptions.
Learn how to throw your own exceptions in Java using the throw statement, with a try-catch example for age under 18, and transition from built-in to custom exceptions.
Create a custom exception by extending the exception class and overriding toString to display not an adult, then throw and catch it for age checks.
Identify built-in Java exceptions like array out of bounds and arithmetic exceptions, learn to handle them as they occur, and use console feedback and Google to resolve them.
Learn to handle exceptions in Java by creating a custom invalid user I.D. exception, validating input with a scanner, and using try-catch to throw and display a meaningful message.
Implement a negative amount not allowed exception to guard a deposit feature in a banking app, using a try-catch to update balance safely.
Java io fundamentals: input and output, streams, byte vs character streams, read and write methods, and using Scanner with System.in and System.out for console and file io.
Explore how to read user input with a buffered reader in Java, using input stream reader, handling read line with a try catch block, and comparing to scanner.
Learn to print to the console in Java using a PrintWriter backed by System.out with auto flush enabled, and why it replaces System.out.println for real-world apps.
Learn file handling in Java by reading and writing data with file input stream and file output stream, including byte reading, end of file, and closing streams.
Use FileOutputStream to write data to a file, converting strings to bytes with getBytes and closing the stream; the lecture shows user input with BufferedReader and InputStreamReader.
Learn to persist a bank balance in Java by reading and updating a file. Deposit input updates the balance and writes the new total back to disk.
Explore the string class and string handling in Java, learn how strings are objects created via constructors and string literals, and how the String class provides methods for manipulation.
Read a string from user input with a scanner, measure its length using the length method, and explore concatenation with the plus operator in Java.
Demonstrates how to use string methods charAt and getChars to extract single characters and substrings by index from Java strings, including zero-based indexing and parameter semantics.
Explore how to convert a string to a character array with toCharArray, traverse each character with a for loop, and compare strings using equals and equals ignore case.
Explore region matches to compare specific regions within strings, then learn how starts with and ends with determine if a string begins or ends with a given substring in Java.
Learn how to extract a substring in Java with the substring method, using start and end indices, and understand string immutability alongside the string builder class as a mutable alternative.
Learn to concatenate strings in Java using the plus operator and the concat method, replace substrings with replace, and trim spaces with trim to clean up strings.
Learn how toUpperCase and toLowerCase convert strings, and how join combines strings with a delimiter; understand string immutability and string buffer as a mutable alternative.
Explain how the string buffer in Java is mutable, how to create it, and how to use append, insert, reverse, delete, and delete character at method, plus length and capacity.
Explore replace and substring on string buffer, using start and end indices to replace characters and extract substrings. Learn how substring preserves immutability and contrasts with regular strings.
Create a username and password length validator in Java, prompting for input, checking username length > 6 and password length > 8, and displaying valid or invalid messages.
Learn to compute the frequency of the letter e in a Java sentence by iterating with a for loop and charAt, counting occurrences.
Build a username and password checker using the String class and the equals method. Accept credentials, verify against the admin username and the admin user password, and print login status.
Explore find and replace in Java by replacing target words in a paragraph using the string replace method, handling immutability, and taking user input with a scanner for dynamic replacements.
Explore Java packages as containers that group classes, enable code reuse, and enforce access control. Learn built-in and user-defined packages, how to create and define them, and avoid naming collisions.
Learn to create a Java package in the source folder, add classes, and import them to use across packages, demonstrated with a demo package and a link class.
Explore how access specifiers (private, default, protected, and public) operate with Java packages. Learn their rules, visibility within, outside packages, and how inheritance enables protected access.
Explore how the private and default access specifiers work with Java packages by creating a demo class, a private method, and testing access from the same and a different package.
Understand interfaces in Java as a collection of abstract methods implemented by classes with implements, contrasting with classes, noting interfaces cannot be instantiated and may include default or static methods.
Create a Java interface with abstract methods drive and stop, implement it in a vehicle class, and call the methods to print car has started and car has stopped.
Explore how interfaces provide abstraction by declaring what to do without detailing how, and enable multiple inheritance in Java by allowing a class to implement multiple interfaces.
Implement access control in a Java banking example by defining bank and customer classes with deposit and withdraw, and constrain update balance to bank only via private access.
Explore how interfaces define bank rules and enforce an abstract interest paid method, then implement private and government banks that print their 5 percent and 7 percent rates.
Explore Java collections framework, including list, set, queue interfaces and implementations like array list, linked list, vector, and stack, to store, perform insertion and deletion, and manipulate objects at runtime.
Explore the array list as a dynamic memory structure in Java, contrasting it with fixed arrays, understand index-based access, and learn basic creation and preparation for manipulation.
Learn how to create and manipulate a Java ArrayList of strings by adding, retrieving, updating, and checking elements with get, add, set, and contains, plus iterating with a for loop.
Learn to iterate an array list with an enhanced for loop and remove specific elements, then check the list size and copy its elements into an array using toArray.
Learn to traverse an array list with an iterator, add car objects to the list, and print each object's brand, name, and price using for and enhanced for loops.
Discover what a linked list is, including singly and doubly linked lists, node structure with value and next or previous references, and how insertion, deletion, and manipulation work in Java.
Learn to create and manipulate a Java linked list, add elements, insert at a specific index, iterate and print, combine lists with add all, and remove or clear items.
Create a linked list of car objects and add several car instances to it. Retrieve and print each car's brand, name, and price using an enhanced for loop.
Explore the list interface in Java, a sub interface of collection, implemented by array list, linked list, vector, and stack. Learn its ordering, duplicates, and operations like add and get.
Explore the set interface and HashSet class, learning how duplicates are disallowed, insertion order isn't preserved, and how hashing via hash tables enhances search while Set inherits methods from Collection.
Learn to implement a hashset by adapting from a list, using add and remove, iterating with an iterator, and relying on hashing to store elements efficiently, without preserving insertion order.
Explore linked hash set, which preserves insertion order with a doubly linked list while ensuring unique elements, and learn default and collection-based constructors and when to use it.
Explore the tree set, a unique, sorted collection that stores elements in ascending order using a tree structure, with no nulls; learn constructors, comparators, and descending iteration.
Save objects to a TreeSet by implementing a compatible interface and the compare to method, add car objects with price, name, and brand, and print them in ascending price order.
Create a Java array list named food, add five string items, and print all elements first with a for loop using get and index, then with a for-each loop.
Implement a student class with name, id, and percentage, create four objects using a parameterized constructor, store them in an array list, and print each student's data.
The Complete Java Masterclass: Learn Java From Scratch
Here Is What You Get By Enrolling In This Course:
Word-By-Word Explanation: In the entire course, I explain each line of code, without skipping a single line of code.
Awesome Quality Content: Over 16+ hours of HD Videos.
Well Structured & Easy To Learn: Course has been specially designed to make it easy for the students to learn Java in a simple manner.
24 X 7 Support: I will always be there to guide you in your journey to become Python expert.
Here Is Everything You Will Learn In This Complete Course:
In this hands-on course, you will learn Java right starting from scratch to the level where you can write complex Java programs using concepts like OOP, Inheritance, Interfaces, Generics etc.
This course will teach you Java right from scratch from a very basic level and will gradually move you towards more advanced topics.
In addition to the concepts taught, this course also has specially designed Practice Examples which will challenge you and make you think and test what you have learned.
The Complete Course is divided into 12 Major sections.
Here is a brief description of what you will learn in each section.
Section 1: Installing required tools.
In this section we will learn how to download and install the required tools and setup the development environment to start programming in Java.
Section 2: Data types, Arrays & Accepting user input.
In this section we will learn about the different types of data types in Java. We will learn about primitive and non-primitive data types in Java and also how they are different from each other. In primitive data types we will learn about int, char, float & boolean. In case of the non-primitive data types, we will cover Arrays. In addition to data types, we will also learn about the "Scanner" class which allows us to accept data from the user via the input console. We also learn how to create a very interesting program for calculating interest.
Section 3: Conditional & Loops.
In this section we will broadly cover two major topics i.e conditionals & loops. We will start off with an introduction to the "if" conditional statement and will learn how program flow can be changed using the conditional statement. Before writing the code for the conditional "if" we first in depth about how exactly the conditional statements work internally. We then take a coding example to understand the if statement and also learn about how we can nest together multiple "if" statements.
We then learn about the switch case which is also a conditional which can be used to alter the flow of execution of a program. After which we move ahead to learn about logical operators which play a major role in conditionals and in deciding the flow of execution of a program. We cover logical "AND" & "OR" operators in Java and use them with conditionals.
Next we learn about loops, the for and the while loop which allow us to iterate or repeat a set of code multiple number of times. We also learn how to use these loops to iterate through an array to access individual array elements. We also learn about a special for loop called as the enhanced for loop which can also be used to iterate an array.
Now that we know how to use loops to iterate arrays, we now dive deeper into multi-dimensional array. We also write a Java program to find odd & even numbers from a given array, we perform this task using a combination of conditionals, arrays & loops.
To further strengthen the concepts we learned, we also have a set of challenging practice examples at the end of this section.
Section 4: Object Oriented Programming.
OOP is the heart and code of Java and hence in this section we spend a great deal of time to understand and learn Object Oriented Programming in Java. We start off by learning what exactly does OOP mean and how the OOP methodology works. We then learn about how to create objects and classes in Java and see how objects are created internally.
We then learn about class methods and learn their significance in OOP. We write different methods, make methods return values and also learn how to create class methods that accept parameters. After which we learn about constructors which help us to initialise classes in Java and also learn how to create parametrised constructors.
We then move on to learn the "this" keyword in Java and it's significance, we take an example to learn how "this" keyword can be used to access instance variables and class methods. We then learn about method overloading and constructor overloading and take an example to overload class methods in Java.
We then learn about access modifiers in Java and use them in conjunction with class attributes and methods. We learn about access modifiers such as public, private & protected and learn in depth about how they allow certain part of the code to be shared and to be kept hidden.
Up next, we learn about inheritance which is another most important features of Java. We learn how to make a class inherit attributes and methods of other classes using the extends keyword. We just don't cover the regular inheritance but also cover Hierarchical and Multi-level inheritance as well.
Marching ahead we learn about method overriding and learn how to override methods form the parent class in Java. We also learn how to prevent method overriding using the "final" keyword.
Section 5: Exception handling.
In this section we learn, what are exceptions? How exceptions can be thrown, caught & handled. We learn how to use try blocks to enclose the exception prone code such that we can handle an exception when it occurs. We will also learn how to nest multiple try blocks inside each other to catch multiple exceptions in a given program. Apart from this we also learn how to create our very own custom exceptions and also how to throw them when needed.
This section is also backed by a solid set of practice example, one to handle invalid user ID and other one to handle negative bank deposits.
Section 6: Java I/O
This section deals with the basic I/O operations in Java i.e reading input from user, displaying output to the user, reading from files, writing to files etc. In this section we will cover a couple of classes from the Java I/O package and also their methods which allow us to perform I/O operations. We start off by learning how Java I/O works and then learn about the BufferedReader class which is used to accept user input and the PrintWriter class used to display the output to the user. We will also learn how to read and write data to the files using the associated classes. At the end, we write a program which can store data into a file so that even if the program execution ends, the data would still be preserved in the file.
Section 7: Strings
This section is all about string class and its methods. String is one of the most widely used data structure in Java and hence we learn and understand various string methods. Some of the string method which will be covered in this section are length, charAt, getChar, toCharArray, equals, regionMatches, substring, concat, toUpperCase, toLowerCase.
In addition to this we also learn about the StringBuffer class as well which has the exact same methods as the string class but is immutable.
This section also includes a challenging set of practice examples like a password length validator, frequency counter, password checker & a find and replace program.
Section 8: Packages & Interfaces.
We will learn about what are Packages in Java, why they are required and how to create and use them. We will also learn how access modifiers can be used with packages to prevent access to certain classes and its methods. We also learn about interfaces, how they are created and why they are required.
As a practice example we will build a mini banking software that makes use of interfaces to impose banking rules.
Section 9: Java collections.
We learn what are Java collections, what is an ArrayList, how to implement an ArrayList and also learn multiple ArrayList methods which allow us to add items or objects to the ArrayList and manipulate them. We will also learn about LinkedList and learn how to create a LinkedList and use LinkedList methods to manipulate items inside a LinkedList. In a similar way we also learn about List interface, HashSet, LinkedHashSet & TreeSet along with their respective methods.
Section 10: Lambda Expressions.
In this section we cover lambda expressions and its usage, we will learn how to write a lambda expression in Java along with a functional interface. We will also learn how to enclose a chunk of code into lambdas using block lambdas. We will also learn about using generic functional interface and how to pass arguments to a lambda expression.
Section 11: Generics.
This section covers generics in java, we will first start off with an introduction to generics and then will actually implement generics using a coding example. We will learn how to add multiple parameters to a generic, the different generic methods and bounded type generics.
Section 12: Multithreading.
Multithreading is another important concept in the Java programming language. In this section we study multithreading in detail. We will learn what is a thread, what is a life cycle and different stages of a thread. We will learn how to reference and access the main thread in a Java program and how to manipulate it. We will also learn about different ways to create a thread in Java i.e using the runnable interface and using a thread class. We will also create multiple threads and observe how they behave and execute in a multithreaded environment.
To conclude we will also learn about a couple thread methods such as the join and the yield method which can be performed on a thread.
So let's begin the journey of becoming an expert Java Programmer.
In addition to the Udemy 30-day money back guarantee, you have my personal guarantee that you will love what you learn in this course. If you ever have any questions please feel free to message me directly and I will do my best to get back to you as soon as possible!
Make sure to enrol in the course before the price changes.
Take yourself one step closer towards becoming a professional Java developer by clicking the "take this course button" now!
Join the journey.
Sincerely,
Ashutosh Pawar