Java
54 topics · 25 free · 5 modules
Java Fundamentals

Abstract Classes
Partial blueprint - some methods, some holes

Classes & Objects
Blueprints and instances - the core of Java

Constructors
Initialize objects - same name as class, no return type

Control Flow
if/else - make decisions in code

Custom Exceptions
Extend Exception - domain-specific errors

Encapsulation
Private fields + public methods = controlled access

Exception Handling
try / catch / finally - handle errors gracefully
🔒Garbage Collection
Automatic memory management in Java
🔒Generics
Type-safe containers - write once, use for any type

Inheritance
extends - child class inherits from parent

Interfaces
Contract - what a class must do, not how
🔒JVM Memory Regions
Stack vs Heap - where your data lives
🔒JVM Pipeline
From .java to running bytecode

Loops
for, while, for-each - repeat with control

Methods
Reusable blocks of code with inputs and outputs

Operators & Expressions
Arithmetic, comparison, logical, and ternary

Polymorphism
One supertype, many implementations

String Methods
Deep dive - trim, replace, split & more
🔒String Pool
Why identical strings can share one object

Strings
Immutable text - the most-used Java type

The main() Method
Where every Java program begins

Variables & Primitive Types
The building blocks of Java data

Wrapper Classes
Autoboxing - primitives meet objects
Collections & Data Structures
🔒ArrayDeque
Double-ended queue - fast at both ends
🔒ArrayList: Index-Based Access
Your go-to List for most use cases
🔒Arrays
Fixed-size, indexed, type-safe containers

HashMap Internals
Inside put & get - hashing, buckets, collisions
🔒HashMap: Key-Value Lookup
Fast access by key - O(1) average
🔒HashSet: No Duplicates Allowed
Unique elements with average O(1) lookup
🔒Iterating Collections
for-each, Iterator, forEach - three ways to loop

Java Collections: The Family
Know the landscape before picking a collection
🔒LinkedList: Insert & Remove Fast
Doubly-linked nodes - O(1) at both ends

Map
Key-value pairs for fast lookups

Pick the Right Collection
A quick decision guide
🔒PriorityQueue
Heap-ordered queue - smallest out first
🔒Queue & Deque
FIFO processing - first in, first out
🔒Sorting Collections
Comparable vs Comparator - natural vs custom order
🔒TreeMap: Sorted Keys
Red-black tree - keys always in order
🔒TreeSet: Sorted Unique
Red-black tree - elements always in order, no duplicates

Why Collections?
Arrays vs Collections - know the difference
Functional Java
🔒Functional Interfaces
Predicate & Function - lambdas with a contract

Lambda Expressions
Concise syntax for anonymous functions
🔒Optional
Represent an absent return value explicitly
🔒Stream Collectors
Recipes that collect() applies to a stream
🔒Stream Pipeline
Transform collections step by step
Concurrency
🔒Concurrent Collections
Thread-safe collections without full locking
🔒Synchronization
Coordinating shared state between threads
🔒Threads
Creating and running threads in Java
Gotchas & Pitfalls
🔒The Floating-Point Trap
Why 0.1 + 0.2 is not 0.3
🔒The Integer Cache Trap
Why == lies for boxed values
🔒The Mutable Key Trap
Why your HashSet loses the live object

The equals Without hashCode Trap
Why your HashSet loses the object
🔒The finally return Trap
Why a return in finally hides bugs
🔒The for-each Remove Trap
Why removing in a loop throws
Videos
Every topic, narrated over the skribble — 25 free to watch, the rest unlock with the course.