What you'll learn:
- Java basics including OOPs principles, Keywords, Operators, Objects, Classes, Methods, Constructors, Control flow statements, Loops, Inheritance, Interface etc.
- Java intermediate concepts including Exceptional handling, Wrapper Classes, Collections, Enums, Date and Time API
- Java advance concepts including Generics, Functional Programming, Lambda Expressions, Functional Interfaces, Method References, Streams API, Multi Threading
- Achieve professional proficiency in Java programming
- Gain practical expertise by completing over 100 coding exercises
- Master Java best practices guided by an experienced developer
Welcome to the course Java Programming: A Comprehensive Bootcamp from Zero to Hero, a comprehensive course designed to equip developers of all levels with the essential skills and knowledge to master Java programming from its fundamentals to advanced topics up to Java 21. Whether you're a beginner looking to kickstart your programming journey or an experienced developer seeking to enhance your Java expertise, this course has something valuable to offer.
Course Overview:
This course is meticulously crafted to cover every aspect of Java programming in-depth, ensuring a solid understanding of both the foundational concepts and the latest advancements in the language. Here's what you can expect to learn throughout the course:
Section 1: Let's Say Hello to Java
What is Java & why should you learn
Approach to learn Java language
Writing your first Java statement using jshell
Brief history of Java & it's release timeline
Why do we have different JDK vendors in Java ecosystem
Installation of Java
Section 2: Primitive data types in Java
Introduction to Java Keywords
Deep dive on byte, short, int, long, float, double data types
Syntax to declare primitive data types & store data using them
How to name a java variable
Case Styles in programming
Deep dive on boolean primitive data type
Deep dive on char primitive data type
Demo of Overflow and Underflow
[Java 7] Using underscore in numeric literals
Demo of octal number format in Java
Demo of hexa number format in Java
Demo of binary number format in Java
Type casting in Java
Demo of implicit and explicit casting
Introduction to String in Java
Demo of String in Java
Section 3: What happens behind the scenes when a Java program executes
Introduction to life cycle of a Java program
What is JDK, JRE, JVM
How Java became a platform independent language
Introduction to Java program code structure
Writing first Java class, compiling & running it
Introduction to IDE & IntelliJ IDEA
Create first Java project in IntelliJ & set up a theme
Writing first Java class in IntelliJ
Section 4: Deep dive on Java classes, methods, fields, constructors
Java supports Object-oriented programming (OOP)
Demo of creating a Java class
Declaring fields in a Java class
Demo of Java methods
Introduction to method signature
Purpose of a return statement in Java methods
Syntax of method invocation in Java
Let’s say hi to main method again
How to create & initialize Java objects
Introduction to Constructor in Java
Demo of Constructor in Java & introduction to debugging
Problem with default or no-args constructor
Constructor Overloading in Java
Constructor chaining in Java
Usage of return statement in constructor
Instance Initialization Block in Java class - Part 1
Instance Initialization Block in Java class - Part 2
Introduction to static variables in Java
How to define constant final static variables
Differences between static & instance variables
Introduction to static methods in Java
Static Initialization Block in Java class
Debugging of method invocations in IntelliJ
Where does Java store classes, objects, variables, methods
Deep dive on Heap memory and stack memory
Introduction to null in Java
Object Destruction and Garbage collection in Java
Class vs Object vs Instance vs Reference
What is encapsulation in Java
Section 5: Comments in Java
Single line Comments in Java
Multi line Comments in Java
Introduction to javadoc comments
Generating javadoc using IntelliJ
Section 6: Deep dive on String in Java
Introduction to String Pool in Java
The intern method in String
The concat method in String
Escape sequence character & Unicode char values in String
Finding the length of a String
Comparing Strings in Java
Fetching a character at an index in String
Checking if a String is empty
Changing the case in String
Converting values as String
Searching for a value in String
Trimming a String
Fetching Substring from a String
Replacing a part of a String
Splitting Strings
[JAVA 8] Joining Strings
The format() method in String
System.out.printf() method
Understanding how String objects are immutable
How to create mutable strings in Java
[JAVA 15] Text Block in Java
Converting String to primitive data type values
Convert String to double data type
Section 7: Operators in Java
Introduction to Operators & Operands in Java
Assignment Operator in Java
Introduction to Arithmetic Operators in Java
Addition Operator in Java
String Concatenation Operator
Division Operator in Java
Modulus Operator in Java
Unary plus and minus operators
Compound Arithmetic Assignment Operators in Java
Increment and Decrement operators in Java
Introduction to Relational Operators in Java
Equality Operator in Java
Inequality Operator in Java
Greater than, Greater than or equal, Less than, Less than or equal operators
Introduction to Logical Operators in Java
Logical NOT operator in Java
Logical Short-Circuit AND, Logical AND operators in Java
Logical Short-Circuit OR, Logical OR operators in Java
Logical XOR operator in Java
Compound Logical Assignment Operators in Java
Bitwise Operators in Java
Bitwise NOT operator or 1’s complement in Java
Bitwise AND operator in Java
Bitwise OR operator in Java
Bitwise XOR operator in Java
Left Shift operator in Java
Signed Right Shift operator in Java
Unsigned Right Shift operator in Java
Compound assignment bitwise operators in Java
Ternary or Conditional operator in Java
Details of Java operators Precedence & Associativity
Section 8: Control flow statements in Java
Introduction to Control flow statements in Java
Deep dive on if, else if, else statements in Java
Nested if- else if - else statements
Ternary operator in the place of if-else statement
Deep dive on switch case statement
[JAVA 14] Deep dive on switch expression
Deep dive on while statement
Deep dive on do while statement
Deep dive on for loop
Deep dive on nested for loops
break statement
continue statement
return statement
Local variables & Scope
Section 9: packages in Java
Introduction to packages & benefits of them
Creating a package
Rules & standards to name a package
Using package members with import statement
The great java.lang package
The static import statements
Important points about packages & imports
Introduction to access modifiers
Demo of access modifiers for java classes
Demo of access modifiers for methods, fields in classes
Deep dive on POJO classes
Section 10: Inheritance in Java
Introduction to Inheritance in Java
Object class is the default Superclass
is-a & has-a relationships in Java
What a subclass inherits from its superclass
Introduction to upcasting in Java
Introduction to downcasting & it's demo
instanceof Operator
Static Binding and Dynamic Binding in Java
What is Polymorphism in Java
Method Overriding
super keyword to invoke super class methods from sub class
Method Overloading
Method overriding vs Method overloading
Method hiding in Java Inheritance
Field hiding in Java Inheritance
The story of constructors & Inheritance together
this and super keywords in Java
Types of Inheritance in Java
abstract methods and classes
final keyword in Java
[JAVA 17] sealed classes & interfaces
Section 11: Interfaces in Java
Introduction to Interfaces
Constant Field Declarations in interface
[JAVA 8] How to build default methods in interfaces
[JAVA 8] How to build static methods in interfaces
Multiple Inheritance using interfaces
Interface defines a new type
Marker Interface
[JAVA 8] Functional Interface
Class Vs Abstract Class Vs Interface
Section 12: Arrays in Java
What is a Array in Java
Declaring & initializing Arrays
Arrays length
Iterate elements of Array using for loop
Iterate elements of Array using for-each loop
Arrays advantages and disadvantages
Copying Arrays using loops
Copying Arrays using arraycopy and copyOf methods
Converting Arrays
Sorting Arrays
Searching an Array
Filling an Array
Introduction to multidimensional or nested arrays
Two-Dimensional or 2D Arrays
Jagged Arrays
Three-Dimensional or 3D Arrays
Section 13: Accept input using BufferedReader and Scanner
Understanding System.out.println
Introduction to BufferedReader & Demo
Introduction to Scanner & Demo
Comparison of BufferedReader and Scanner
Don’t use System.out.println in Production code
Logging in Java
Section 14: Exception handling using try, catch and finally
Taste of first Exception
try-catch block
multiple catch blocks
finally block
[JAVA 7] try- with-resources statement
Rules while handling exceptions
The Exception Hierarchy
Checked Exceptions
Unchecked Exceptions
throws keyword
throw keyword
Differences between throw and throws keyword
Exception Propagation
Nested try block
Custom Checked Exception
Custom Unchecked Exception
final, finally and finalize
Section 15: Unmasking Java's Superclass(java.lang.Object) Secrets
Introduction to the methods in Object class
Deep dive on getClass() in Object class
Deep dive on hashCode() in Object class
Deep dive on equals() in Object class
Override hashCode() & equals() methods
Override hashCode() & equals() methods using IntelliJ
Deep dive on toString() in Object class
Demo of hashCode(), equals() & toString() methods of String
Deep dive on finalize() in Object class
Deep dive on clone() in Object class
Details about Shallow cloning & Deep cloning
Mutable and Immutable objects
[JAVA 16] Record classes
[JAVA 10] var (local variable type inference)
Section 16: Introduction to Collections & Wrapper Classes
Arrays have limitations
What are Collections & why they accept only objects
Introduction to Wrapper Classes
Convert Primitive Type to Wrapper Objects (Boxing)
Convert Wrapper Objects into Primitive Types (Unboxing)
Autoboxing and unboxing
Caching with valueOf() methods
Java Collection Framework Hierarchy
Section 17: Lists and ArrayLists Unleashed – A Hilarious Journey through Data Structures
Deep dive on the Collection Interface
[JAVA 21] Deep dive on the Sequenced Collections
Deep dive on the List Interface
How to create objects of ArrayList
Demo of ArrayList
[JAVA 7] Diamond Operator in Java
ArrayList performance
[JAVA 9] Creating Immutable Lists
Iterate ArrayList using for-each and iterator()
Iterate ArrayList using listIterator()
Sorting ArrayList using sort() methods
Sorting ArrayList using custom Comparator
Sorting ArrayList of custom data type using Comparable
Sorting ArrayList of custom data type using Comparator
Arrays vs ArrayList
Section 18: LinkedLists - Java's Dance of Nodes
Introduction of LinkedList
How to create objects of LinkedList
Demo of LinkedList
Iterate LinkedList elements
Sorting LinkedList elements
LinkedList performance
ArrayList vs LinkedList
Section 19: Generics in Java
Introduction to Generics in Java
Why we need Generics in Java
Generic class in Java
Generics methods in Java
Collections with out Generics
Covariance Demo
Subtype or Upper Bound Wildcards
Supertype or Lower Bound Wildcards
Unbounded Wildcards
Section 20: Deep dive on Map, HashMap, TreeMap, LinkedHashMap
Introduction to Map in Java
Demo of HashMap
How HashMap Store Key, Value
How HashMap retrieve Value
[JAVA 8] HashMap improvements in Java 8
Iterating HashMap using keySet() and entrySet()
Iterating HashMap using values()
Introduction to TreeMap in Java
Demo of TreeMap in Java
Demo of LinkedHashMap in Java
[JAVA 9] Creating Immutable Maps
Section 21: Set, HashSet, TreeSet, LinkedHashSet
Introduction to Set in Java
Demo of HashSet
How HashSet works internally
Iterating HashSet
Set operations
Demo of TreeSet in Java
Demo of LinkedHashSet in Java
[JAVA 9] Creating Immutable Sets
List vs Set
Section 22: Enums in Java
Introduction to Enums
Problems with normal Java class constants approach
Demo of Enum approach
Associating Data to Enum Constants
Demo of EnumSet and it's important methods
Advantages of Enums
Section 23: Date and Time in Java
How Java supports Date and Time
Why a new Date API introduced in Java 8
Demo of java util Date
Date formatting and parsing using SimpleDateFormat
Demo of java sql Date
Demo of java util Calendar
TimeZone specific Date and Time
[JAVA 8] Introduction to new Date & Time API from Java 8
[JAVA 8] The of() methods in java.time Date and Time API
[JAVA 8] The from() & withXxx() methods in java.time Date and Time API
[JAVA 8] The toXxx() & atXxx() methods in java.time Date and Time API
[JAVA 8} The getXxx(), plusXxx() and minusXxx() methods in new Date & Time API
[JAVA 8] Introduction to Instant and Duration in java.time Date and Time API
[JAVA 8] Demo of Instant and Duration in java.time Date and Time API
[JAVA 8] Period in java.time Date and Time API
[JAVA 8] The multipliedBy(), dividedBy() & negated() methods
[JAVA 8] The truncatedTo() method
[JAVA 8] Demo of ZoneId, ZonedDateTime
[JAVA 8] Demo of ZoneOffset
[JAVA 8] Demo of OffsetDateTime and OffsetTime
[JAVA 8] Demo of Day Light Saving with ZonedDateTime
[JAVA 8] Non-ISO Calendars in java.time Date and Time API
[JAVA 8] Formatting Dates and Times using DateTimeFormatter
[JAVA 8] Parsing Dates and Times using DateTimeFormatter
Section 24: [JAVA 8] Functional Programming using lambda expressions
Introduction to Functional Programming
Imperative style vs functional style programming
What are lambda expressions and their syntax
How to build Lambda expressions
Deep dive on Functional Interfaces
How Functional Interface & Lambda expressions are linked
Anonymous inner class in the place of lambda expressions
Predefined Functional interfaces inside JDK
Deep dive on Predicate functional interface
Deep dive on Function functional interface
Deep dive on UnaryOperator interface
Deep dive on Consumer interface
Deep dive on Supplier interface
Deep dive on BiFunctional Interfaces
Primitive Type functional interfaces
Deep dive on Lexical Scoping of Lambda expressions
this and super inside lambda expression
Section 25: [JAVA 8] Building Lambda expressions using Method References
Introduction to Method References
Demo of Static Method Reference
Demo of Instance Method Reference
Demo of Instance method Reference using Class type
Demo of Constructor Reference
Section 26: [JAVA 8] Streams API
Introduction to java util stream API
Creating a Stream from collections
Streams have no storage
Introduction to Streams Pipeline
Demo of Streams map() method
Demo of Streams flatMap() method
Demo of Streams filter() method
Demo of Streams limit() method
Demo of Streams skip() method
Streams are traversable only once
Introduction to Streams reduce() method
Demo of Streams reduce() method
Demo of Streams collect() method
Demo of Streams collectingAndThen() method
Demo of Streams groupingBy() and partitioningBy() method
Finding and Matching methods in Streams
Quick revision about stream pipeline
Deep dive on parallel streams and demo
Collections Vs Streams
Section 27: [JAVA 8] Optional to deal with nulls in Java
Introduction to Optional class
Demo of Optional
Demo of ifPresent, ifPresentOrElse, orElse, orElseGet methods
Demo of orElseThrow, map, filter methods
Quick tip to filter null elements with Stream API
Section 28: MultiThreading in Java
What is MultiThreading
How a program or a software executes inside a computer
Parallel vs Concurrent Execution
How multiple threads improve performance
Creating Threads in Java
MultiThreading Demo Program
Demo of Thread methods getId, threadId, getName, setName, currentThread, sleep
Demo of Thread method join, getPriority, setPriority
Demo of wait(), notify(), notifyAll()
Introduction to Race condition & synchronized keyword
Demo of synchronized methods and blocks
Introduction & Demo of volatile keyword
Introduction to Deadlock
Demo Deadlock & possible fixes
[JAVA 21] Introduction to Virtual Threads
Section 29 - New features from Java 22 & Java 23
Launch Multi-File Source-Code Programs
Unnamed Variables & Patterns
Markdown Documentation Comments
Throughout the course, you'll engage in hands-on coding exercises, assignments, and projects to reinforce your learning and apply the concepts in real-world scenarios. Our experienced instructors will provide guidance, support, and insights to help you navigate the intricacies of Java programming effectively.
Whether you aspire to become a Java developer, enhance your career prospects, or simply gain a deeper understanding of one of the most widely-used programming languages, this course will empower you to achieve your goals in the world of Java programming.
Prerequisites:
- No prior programming experience required, but familiarity with basic programming concepts will be beneficial.
- A computer with internet access and a willingness to learn and practice.
Target Audience:
- Beginners aspiring to learn Java programming.
- Experienced developers looking to expand their Java skills.
- Students and professionals seeking to advance their careers in software development.
Enroll now and embark on a journey to master Java programming comprehensively, from the basics to Java 21 and beyond!