Outline
Background
What is Object Oriented Programming?
JVM
Java Version History
Java Memory Model
Stack, Heap
Garbage Collector
Reference and Value Types
Pass By Value
Java Core
Basic Class & main method
Variables
Primitives
Strings, Arrays
Operators
Expressions, Statements & Blocks
Control Flow
Conditionals
if, if-else
switch
ternary
Loops
for
for-each
do-while
while
break, continue
Classes Part 1
Class
Member variables
Initialization blocks
Methods
Varargs
Overloading
Constructors
Objects
Creating objects
Using objects
Static
Static variables
Static methods
Static classes
Classes Part 2
this keyword
packages
access modifiers
initializing fields
Nested Classes
Inner Classes
Local Classes
Anonymous Classes
Lambdas
Expressions
Method References
Enums
Annotations
Basics
Declaring annotation type
Predefined Annotation types
Repeating annotations
Interfaces & Inheritance
Interfaces
Defining
Implementing
Using Interface as a type
Default methods
Inheritance
Overriding & Hiding
Polymorphism
Hiding fields
super keyword
Object as a superclass
Final classes & methods
Abstract methods & classes
Numbers & Strings
Numbers
Numbers Classes
Formatting number output
java.lang.Math.*
Casting
Autoboxing and Unboxing
Characters
Strings
Converting from numbers to Strings
Manipulating characters
Comparing Strings and Sub-strings
StringBuilder
Generics
Why Generics?
Generic Types & Raw Types
Generic Methods
Bounded Type Parameters
Generics, Inheritance & Subtypes
Type Inferences
Wildcards
Type Erasure
Restrictions
Collections
Collection Types
List
Queue
Set
Map
Arrays
Ordering & Sorting
Comparisons
Iterating
Utilities
Exceptions
Heirarchy
Checked & Unchecked Exceptions
Handling Exceptions
try-catch-finally
try-with
Custom Exceptions
Lambdas & Streams
IO
Threading
Reflection
Design Patterns
Data Structures & Algorithms
Testing
Build & Configuration
Spring
Last updated