Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

21 Commits

Repository files navigation

Hello-Java

A hands-on, topic-by-topic walkthrough of the Java programming language (targeting Java 21 LTS). Every topic is a runnable .java file with theory in the top Javadoc and worked examples in main(). The expected console output is also included as comments inside each main() so you can verify your run.

Project SDK: JDK 21 — set in .idea/misc.xml. Files under src/Phase9_ModernJavaAndModules/ModernJava and several others use Java 21 features (pattern matching for switch, record patterns, sequenced collections, virtual threads, …).

Each section below links straight to the source file(s) in this repository.


Learning Phases at a Glance

Work through the phases in order. Within a phase, files are self-contained — read them in the order they appear.

PhaseThemeSections
0Setup & First ProgramsHello world, JVM/JDK/JRE, Input / Output
1Core LanguageTypes, variables, operators, control flow, enums
2Methods, Arrays, StringsThe everyday building blocks
3Object OrientationClasses, interfaces, nested classes
4Errors & Type SafetyExceptions, Optional, Generics, Annotations
5Collections, Lambdas & StreamsData structures + functional pipelines
6Runtime, Memory, Regex, ReflectionBelow the surface
7ConcurrencyThreads, synchronization, virtual threads
8Practical APIsFile I/O, Date & Time, HTTP Client
9Modern Java & ModulesJava 10 → 21 features, JPMS

Estimated pace if you read one phase per week: 9 weeks. Bear down on the projects (Banking, Employee, Face Detection, Snake Game) as you reach them — they're where the concepts click.


Phase 0 — Setup & First Programs

Get a JDK installed, understand what the JDK / JRE / JVM are, write your first main(), and figure out how Java reads and writes the console.

First Programs

TopicSource
Hello WorldHelloWorld.java
Is main compulsory?IsMainCompulsory.java
Class name vs file nameClassNameMyth/Hello.java

Foundations & Tooling

#TopicSource
1Introduction to JavaIntroduction.java
2Download and Install JavaInstallJava.java
3JDK vs JRE vs JVMJDKvsJREvsJVM.java
4Taking InputScanner · BufferedReader · Console
5Printing OutputPrintMethods.java · FormattedOutput.java

Phase 1 — Core Language

Identifiers, keywords, types, variables, operators, control flow, enums. Master this and every later phase becomes easier.

#TopicSource
1IdentifiersIdentifiers.java
2KeywordsKeywords.java
3Data Types (Intro)DataTypesIntro.java
4Primitive Data Typesbyte · short · int · long · float · double · char · boolean
5Wrapper ClassesWrapperClassesIntro.java · AutoboxingUnboxing.java
6VariablesInstance · Local · Static · Scope
7OperatorsArithmetic · Relational · Logical · Bitwise & Shift · Assignment · Unary · Ternary · instanceof
8Decision Makingif · if-else · if-else-if · nested-if · switch
9Loops and Jump Statementsfor · while · do-while · enhanced for · infinite loop · for loop notes · break · continue · return · labels
10Type ConversionAutomatic · Explicit · Widening
11CommentsSingle-line · Multi-line · Documentation (Javadoc)
12EnumerationsIntro · Outside class · Custom values · Constructor · Methods · In switch · Main inside enum
13Special Keywordsfinal
14Extras / Interview TidbitsFacts about null · Underscore in numbers · Does Java support goto? · Object memory allocation · Function currying · Binary search · Sorting

Phase 2 — Methods, Arrays, Strings

The bread-and-butter library types and the keyword you'll use the most. Strings are immutable; arrays are fixed-size; methods are how you organise behaviour.

Methods

#TopicSource
1Introduction (syntax, overloading, pass-by-value, recursion)MethodIntroduction.java
2Static Methods vs Instance MethodsStaticVsInstanceMethods.java
3Access Modifiers (public / protected / package-private / private)AccessModifiers.java
4Command Line Arguments (String[] args)CommandLineArguments.java
5Variable Arguments (Varargs ...)Varargs.java
6Method References (::) — Java 8+MethodReferences.java
7Interface Methods — default / static / private — Java 8/9InterfaceMethods.java

Arrays

#TopicSource
1Introduction (declare, init, iterate, defaults, pitfalls)ArrayIntroduction.java
2Multi-Dimensional Arrays (2D, 3D, deepToString)MultiDimensionalArrays.java
3Jagged Arrays (varying row lengths, Pascal's triangle)JaggedArrays.java
4java.util.Arrays utility class (sort, search, copy, fill, equals, stream)ArraysClass.java
5Final Arrays (reference vs contents, immutability patterns)FinalArrays.java

Strings

#TopicSource
1Introduction (pool, intern, char[] bridge, compact strings)StringIntroduction.java
2Why Strings are Immutable (pool, threads, security, hash caching)StringImmutability.java
3String Concatenation (+, concat, join, StringJoiner, perf trap)StringConcatenation.java
4String Methods (every important method by category)StringMethods.java
5StringBuffer Class (synchronized, full method reference)StringBufferClass.java
6StringBuilder Class (non-synchronized, full method reference)StringBuilderClass.java
7String vs StringBuffer vs StringBuilder (table + benchmark)StringVsBufferVsBuilder.java
8Modern Features — Java 11/12/15/21 (strip, repeat, lines, transform, text blocks, case String s when …)ModernStringFeatures.java

Phase 3 — Object Orientation

Java's organising paradigm — classes, objects, and the four pillars (abstraction, encapsulation, inheritance, polymorphism). Then interfaces, the second pillar of abstraction, and nested classes that finish the picture.

OOP Concepts

#TopicSource
1Introduction (the four pillars in one mini-demo)OopIntroduction.java
2Classes & ObjectsInitializing object · Ways to create an object
3Constructors (default / parameterized / overloading / chaining / copy / private)Constructors.java
4Object Class (equals / hashCode / toString / clone / getClass / records)ObjectClassMethods.java
5AbstractionAbstract class · Interfaces · Abstract vs Interface
6EncapsulationTestEncapsulation.java
7InheritanceIntro · Single · Multi-level · Hierarchical · Multiple (interfaces) · Hybrid
8Polymorphism (overloading + overriding + dynamic dispatch + covariant returns)Polymorphism.java
9Packages and Imports (single / wildcard / static, package-private access)PackagesAndImports.java
10Sealed Classes — Java 17+ (sealed / non-sealed / permits)SealedClassesDemo.java
11Project: Simple Banking ApplicationAccount · SavingsAccount · CheckingAccount · Transaction (record) · Bank · Runner: BankingApp.java
12Serialization (extra)Demo 1 · Demo 2

Interfaces

#TopicSource
1Interfaces — full tour (abstract / default / static / private members, multiple impl, interface inheritance)InterfaceIntro.java
2Class vs Interface (side-by-side, real-world JDK pattern)ClassVsInterface.java · longer version
3Functional Interface (SAM, @FunctionalInterface, java.util.function, composition, lambdas, comparators)FunctionalInterfaceDemo.java
4Nested Interface (inside class, inside interface, private nested)NestedInterface.java
5Marker Interface (Serializable, custom marker, annotation alternative, generic upper bound)MarkerInterface.java
6Sealed Interfaces — Java 17+ (permits, non-sealed, exhaustive switch)SealedInterfaceDemo.java
7Project: Employee Management SystemEmployee (sealed) · FullTimeEmployee · PartTimeEmployee · Contractor · Intern · Promotable · Auditable (marker) · EmployeeFilter (functional) · EmployeeRepository · Runner: EmployeeApp.java

Nested & Inner Classes

#TopicSource
1Introduction (the four kinds at a glance)NestedClassesIntroduction.java
2Static Nested Classes (Builder, nested records, hidden helpers)StaticNestedClass.java
3Inner (member) Classes (Outer.this, leak risk, iterators)InnerClass.java
4Local & Anonymous Classes (capture rules, lambda vs anonymous)LocalAndAnonymousClass.java

Phase 4 — Errors & Type Safety

Mechanisms for handling things going wrong, making "absent values" explicit in the type system, parameterising types safely, and decorating code with metadata that tools can read.

Exception Handling

#TopicSource
1Introduction (hierarchy, checked vs unchecked, stack trace)ExceptionIntroduction.java
2Try-Catch Block (single / multiple / multi-catch / nested / finally)TryCatchBlock.java
3final, finally, finalize — three confusable keywordsFinalFinallyFinalize.java
4throw and throws — raise vs declare, propagation, re-throwThrowAndThrows.java
5Custom Exceptions (checked + unchecked, carrying extra data)CustomException.java
6Chained Exceptions (getCause, initCause, suppressed vs cause)ChainedException.java
7Null Pointer Exceptions (six causes, helpful NPE Java 14+, Optional)NullPointerExceptions.java
8Exception Handling with Method Overriding (the throws rule)ExceptionInOverriding.java
9Try-with-resources — Java 7+ / 9+ (AutoCloseable, suppressed exceptions)TryWithResources.java
10Best Practices (top-10 dos & don'ts with code)ExceptionBestPractices.java

Optional<T>

#TopicSource
1Optional<T> (creation, transforms, anti-patterns, primitive variants)OptionalDemo.java

Generics

#TopicSource
1Introduction (before/after, type parameter conventions)GenericsIntroduction.java
2Generic Classes (single + multi-param, inheritance, diamond)GenericClasses.java
3Generic Methods (type inference, method-level type params)GenericMethods.java
4Generic Interfaces (Comparable, Function, custom contracts)GenericInterfaces.java
5Bounded Type Parameters (<T extends X>, multi-bound &)BoundedTypeParameters.java
6Wildcards (?, ? extends, ? super)Wildcards.java
7PECS Principle (Producer Extends, Consumer Super)PecsPrinciple.java
8Type Erasure (runtime behaviour, bridge methods, reflection)TypeErasure.java
9Generic Restrictions (no primitives / no new T() / no generic arrays / no parameterised instanceof)GenericRestrictions.java
10Recursive Type Bounds (<T extends Comparable<T>>, self-typed builders, Enum<E extends Enum<E>>)RecursiveTypeBounds.java
11Heap Pollution + @SafeVarargsHeapPollutionAndSafeVarargs.java
12Modern Generics — Java 7 → 21 (diamond, var, generic records, sealed generic interfaces, generic record patterns in switch)ModernGenerics.java

Annotations

#TopicSource
1Introduction (the four families, retention levels)AnnotationsIntroduction.java
2Built-In Annotations (@Override, @Deprecated, @SuppressWarnings, @FunctionalInterface, @SafeVarargs)BuiltInAnnotations.java
3Custom Annotations (@Retention, @Target, @Repeatable, @Inherited, type-use)CustomAnnotations.java
4Runtime Annotations (reading via reflection, mini AOP)RuntimeAnnotations.java

Phase 5 — Collections, Lambdas & Streams

Pick the right container, then transform data declaratively with lambdas and the Stream API.

Collections

0. Framework Overview

TopicSource
Framework Introduction (hierarchy diagram, big-O cheatsheet)CollectionsIntroduction.java
Modern Features — Java 8 → 21 (factories, Collectors, Stream.toList, Sequenced Collections)ModernCollections.java

1. Core Interfaces

TopicSource
Collection InterfaceCollectionInterface.java
List InterfaceListInterface.java
Set InterfaceSetInterface.java
Queue InterfaceQueueInterface.java
Deque InterfaceDequeInterface.java
Map InterfaceMapInterface.java

2. List Implementations

TopicSource
ArrayListArrayListDemo.java
LinkedListLinkedListDemo.java
Vector + Stack (legacy)VectorAndStack.java
AbstractList + AbstractSequentialList (skeleton classes)AbstractListClasses.java

3. Set Implementations

TopicSource
HashSetHashSetDemo.java
LinkedHashSetLinkedHashSetDemo.java
TreeSetTreeSetDemo.java
EnumSet (bit-vector enum keys)EnumSetDemo.java
SortedSet + NavigableSet interfacesSortedAndNavigableSet.java
ConcurrentSkipListSetConcurrentSkipListSetDemo.java

4. Queue / Deque Implementations

TopicSource
PriorityQueue (heap, Top-K)PriorityQueueDemo.java
ArrayDeque (modern stack + queue)ArrayDequeDemo.java
BlockingQueue (ArrayBlockingQueue / LinkedBlockingQueue / SynchronousQueue)BlockingQueueDemo.java
ConcurrentLinkedQueue (lock-free)ConcurrentLinkedQueueDemo.java
AbstractQueue (skeleton class + custom BoundedQueue)AbstractQueueDemo.java

5. Map Implementations

TopicSource
HashMapHashMapDemo.java
LinkedHashMap (insertion + access order, LRU cache)LinkedHashMapDemo.java
TreeMap (sorted, NavigableMap)TreeMapDemo.java
WeakHashMap (GC-eligible keys)WeakHashMapDemo.java
IdentityHashMap (== instead of equals)IdentityHashMapDemo.java
Hashtable (legacy)HashtableDemo.java

6. Utility & Supporting Classes

TopicSource
Collections utility classCollectionsClass.java
Iterable interface (custom for-each types)IterableDemo.java
Iterator / ListIterator / SpliteratorIteratorDemo.java
Enumeration (legacy 1.0 iteration)EnumerationDemo.java
Comparator and ComparableComparatorComparable.java

7. Concurrency Collections

TopicSource
ConcurrentHashMap (lock-striped)ConcurrentHashMapDemo.java
CopyOnWriteArrayList (snapshot iterator, listener-list pattern)CopyOnWriteArrayListDemo.java
ConcurrentLinkedQueue (lock-free)ConcurrentLinkedQueueDemo.java
BlockingQueue familyBlockingQueueDemo.java
ConcurrentSkipListSetConcurrentSkipListSetDemo.java

Project

TopicSource
Face Detection System (uses every collection type)Face · Detector · FaceRepository · Runner: FaceDetectionApp.java

Lambda Expressions and Streams

Foundations

TopicSource
Lambda Expressions (syntax forms, capture, target typing, this)LambdaExpressions.java
Method References (::) — four forms in stream contextMethodReferences.java

Streams

TopicSource
Stream Introduction (laziness, one-shot, decl vs imp)StreamIntroduction.java
Stream Creation (15 ways)StreamCreation.java
Stream Pipeline (Source / Intermediate / Terminal architecture)StreamPipeline.java
Intermediate Operations (filter/map/flatMap/sorted/distinct/limit/skip/peek/takeWhile/dropWhile/mapMulti)IntermediateOperations.java
Terminal Operations (forEach/collect/reduce/count/match/find/min/max/toArray/toList)TerminalOperations.java
Collectors (toList/toMap/groupingBy/partitioningBy/joining/teeing/collectingAndThen)CollectorsClass.java

Stream Types

TopicSource
Sequential vs Parallel (when each helps, side-effect trap, splittability)SequentialVsParallel.java
Infinite Streams (iterate/generate/limit/takeWhile)InfiniteStreams.java
Primitive Streams (IntStream/LongStream/DoubleStream, boxing perf)PrimitiveStreams.java
Stream vs Collection (side-by-side, crossing back and forth)StreamVsCollection.java
File I/O via streams (Files.lines/list/walk, append, write)StreamFileIO.java
Modern Streams — Java 9 → 21 (takeWhile/dropWhile, iterate(3-arg), mapMulti, toList, teeing, sequenced collections)ModernStreams.java

Real-World Examples

TopicSource
Filtering Employees by SalaryEmployeeSalaryExample.java
Streams in a Grocery StoreGroceryStoreExample.java
Grouping Books by AuthorBookGroupingExample.java

Phase 6 — Runtime, Memory, Regex, Reflection

What the JVM actually does with your code, how to manipulate text with patterns, and how to inspect and dispatch dynamically.

Memory Allocation

#TopicSource
1Java Memory Management (overview, heap inspection, default GC)MemoryManagementIntro.java
2How Java Objects Are Stored in Memory (header, fields, padding, references, compressed oops)ObjectsInMemory.java
3Types of Memory Areas (Method Area / Heap / Stack / PC / Native, generations)JvmMemoryAreas.java
4Stack vs Heap (side-by-side, pass-by-value, escape analysis)StackVsHeap.java
5Garbage Collection (reachability, mark/sweep, generations, weak/soft refs, Cleaner)GarbageCollection.java
6Types of JVM Garbage Collectors (Serial / Parallel / G1 / ZGC / Shenandoah / Epsilon)GarbageCollectors.java
7Memory Leaks (5 patterns + fixes)MemoryLeaks.java
8Modern Memory Features — Java 9 → 21 (Compact Strings, Cleaner, direct buffers, virtual threads, Generational ZGC)ModernMemoryFeatures.java

Regex

#TopicSource
1Introduction (Pattern + Matcher, escapes, matches vs find vs lookingAt)RegexIntroduction.java
2Matcher Class (every important method, named groups, replaceAll, region, results)MatcherClass.java
3Character Class (custom sets, predefined \d/\w/\s, POSIX, Unicode)CharacterClass.java
4Quantifiers (*+?{n,m}, greedy vs reluctant vs possessive, backtracking)Quantifiers.java
5Metacharacters & Anchors (^$\b\A\z\G, Pattern.quote)MetacharactersAndAnchors.java
6Groups & Backreferences ((…)(?:…)(?<name>…)\1${name})GroupsAndBackreferences.java
7Lookahead & Lookbehind ((?=…)(?!…)(?<=…)(?<!…), password rules)LookaroundAssertions.java
8Flags (CASE_INSENSITIVE, MULTILINE, DOTALL, COMMENTS, UNICODE_CHARACTER_CLASS, scoped (?i:…))RegexFlags.java
9Modern Features — Java 8/9/11/21 (splitAsStream, asPredicate, Matcher.results, replaceAll(Function), pattern-matching switch on String)ModernRegexFeatures.java
10Real-World Examples (email, phone, URL, IPv4, password, ISO date, hex color, slug, CSV)RegexExamples.java

Reflection API

#TopicSource
1Introduction (Class, Method, Field, basics)ReflectionIntroduction.java
2Class / Method / Field in depth (overloads, parameters, generic types)ClassAndMethodReflection.java
3Dynamic Invocation (MethodHandle, dynamic Proxy, mini AOP)DynamicInvocation.java

Phase 7 — Concurrency

Multiple threads of execution inside one JVM — concurrent and parallel work, the synchronization primitives that keep shared state sane, and the Java 21 virtual-thread world.

1. Foundations

#TopicSource
1Multithreading Introduction (concurrency vs parallelism, why threads)MultithreadingIntroduction.java
2Threads (java.lang.Thread API tour)Threads.java
3Thread Lifecycle (NEW/RUNNABLE/BLOCKED/WAITING/TIMED_WAITING/TERMINATED)ThreadLifecycle.java
4The Main Thread (default properties, JVM exit rules)MainThread.java
5Thread.start() vs Thread.run()StartVsRun.java
6Thread.sleep(...)ThreadSleepMethod.java
7Thread.join(...)ThreadJoinMethod.java
8Thread.yield() and onSpinWaitThreadYieldMethod.java
9Thread Interruption (cooperative cancellation)ThreadInterruption.java
10Thread Priority (MIN/NORM/MAX, OS mapping)ThreadPriority.java
11Daemon Threads (JVM exit semantics)DaemonThread.java

2. Creating Work

TopicSource
Runnable Interface (lambdas, composition, decoration)RunnableInterface.java
Callable & Future (results, exceptions, cancellation, FutureTask)CallableAndFuture.java

3. Correctness (synchronization, JMM, atomics)

TopicSource
Java Synchronization (synchronized blocks/methods, monitor locks)JavaSynchronization.java
Thread Safety (strategies, levels, compound-op traps)ThreadSafety.java
Race Conditions, Livelock, StarvationRaceConditionStarvationLivelock.java
Java Memory Model (happens-before, safe publication)JavaMemoryModel.java
volatile Keyword (visibility, DCL singleton)VolatileKeyword.java
wait / notify / notifyAllWaitNotifyNotifyAll.java
Producer-Consumer (three implementations)ProducerConsumer.java
ThreadLocal<T>ThreadLocalDemo.java
Atomic Variables (Atomic*, LongAdder, ABA)AtomicVariables.java

4. Locks

TopicSource
Locks in Java (Lock interface tour)LocksInJava.java
Lock vs Monitor in ConcurrencyLockVsMonitor.java
Lock Framework vs synchronizedLockFrameworkVsSync.java
ReentrantLock (fairness, tryLock, conditions)ReentrantLockDemo.java
ReadWriteLock (many readers, one writer)ReadWriteLockDemo.java
StampedLock (optimistic reads)StampedLockDemo.java
Deadlock (Coffman, detection, prevention)DeadlockDemo.java

5. Executors and high-level concurrency

TopicSource
Thread Pools (ThreadPoolExecutor, queues, rejection policies)ThreadPools.java
Executor Framework (ExecutorService tour)ExecutorFramework.java
ScheduledExecutorService (fixedRate vs fixedDelay)ScheduledExecutorDemo.java
ForkJoinPool (divide-and-conquer, work stealing)ForkJoinPoolDemo.java
CompletableFuture (composable async)CompletableFutureDemo.java

6. Synchronizers

TopicSource
CountDownLatch (one-shot gate)CountDownLatchDemo.java
CyclicBarrier (resettable, barrier action)CyclicBarrierDemo.java
Semaphore (permits, binary, fair)SemaphoreDemo.java
Phaser (variable parties, per-phase actions)PhaserDemo.java

7. Java 21 — modern concurrency

TopicSource
Virtual Threads (JEP 444 finalised)VirtualThreads.java
Structured Concurrency (JEP 453 preview)StructuredConcurrency.java
Scoped Values (JEP 446 preview)ScopedValuesDemo.java

8. End-to-end + project

TopicSource
Multithreading Complete Tutorial (one-file tour)MultithreadingCompleteTutorial.java
Project: Snake Game (Swing render thread + game loop thread + locked state)Direction · Cell · GameState · GameLoop · SnakeBoard · Runner: SnakeGame.java

Phase 8 — Practical APIs

The APIs you'll actually reach for in business apps: reading and writing files, handling dates and times, and talking to HTTP services.

File I/O

#TopicSource
1Introduction (java.io vs java.nio.file, which class for what)FileIOIntroduction.java
2Byte Streams (InputStream / OutputStream, File* impls)ByteStreams.java
3Character Streams (Reader / Writer, charset traps, bridges)CharacterStreams.java
4Buffered Streams (Buffered*, readLine, lines())BufferedStreams.java
5Data Streams (DataInput/OutputStream for primitives)DataStreams.java
6Object Streams (Java serialization in/out)ObjectStreams.java
7Path and Files (the modern API)FilesAndPaths.java
8Walking the file system (list/walk/find/lines)FilesWalkAndList.java
9FileChannel (random access, memory mapping, locks)FileChannelDemo.java
10WatchService (observe FS changes)WatchServiceDemo.java
11Modern File I/O — Java 11+ (readString, writeString, mismatch)ModernFileIO.java

Date and Time API

#TopicSource
1Introduction (the headline types, why java.time)DateTimeIntroduction.java
2LocalDate / LocalTime / LocalDateTime (zone-less locals)LocalDateLocalTimeLocalDateTime.java
3Instant (the global timeline)InstantDemo.java
4ZonedDateTime / OffsetDateTime (zones, DST, fixed offsets)ZonedDateTimeDemo.java
5Duration (clock-length differences)DurationDemo.java
6Period (calendar-length differences)PeriodDemo.java
7DateTimeFormatter (parse and print)DateTimeFormatterDemo.java
8Legacy bridge (Date / Calendar / Timestampjava.time)LegacyDateConversions.java

HTTP Client (Java 11+)

#TopicSource
1Introduction (HttpClient, HttpRequest, body handlers, body publishers)HttpClientIntroduction.java
2Synchronous and Asynchronous Requests (send vs sendAsync, fan-out, errors)SyncAndAsyncRequests.java
3WebSocket (full-duplex, listeners, backpressure)WebSocketDemo.java

Phase 9 — Modern Java & Modules

Language and library features that landed between Java 8 and Java 21, and the module system added in Java 9. By the end of this phase you can read any modern Java codebase fluently.

Modern Java (10 → 21)

FeatureSinceSource
var — local variable type inferenceJava 10VarLocalTypeInference.java
Switch expressions (->, yield)Java 14SwitchExpression.java
Pattern matching for switch (with when, null cases)Java 21PatternMatchingSwitch.java
Records and record patterns (deconstruction)Java 16 / 21RecordsAndPatterns.java
Sequenced Collections (getFirst, getLast, reversed)Java 21SequencedCollections.java

Java Platform Module System (JPMS)

#TopicSource
1Introduction (why modules, anatomy of module-info.java)ModulesIntroduction.java
2Module Examples (catalogue of module-info.java shapes)ModuleExamples.java
3ServiceLoader (the built-in plugin / SPI mechanism)ServiceLoaderDemo.java

How to Run

This is a plain-Java project — no Maven, no Gradle. From the repo root:

# Compile one file
javac src/Phase0_SetupAndFirstPrograms/Introduction/Introduction.java
# Run it (use the fully qualified class name including the package)cd src
java Phase0_SetupAndFirstPrograms.Introduction.Introduction

Or from your IDE: right-click any .java file containing a main() and choose Run.

Single-file mode (Java 11+)

java src/Phase0_SetupAndFirstPrograms/Introduction/Introduction.java

How Each File Is Structured

Every .java file is self-contained:

  1. A theory block at the top (Javadoc style) — read this first.
  2. A main() method with concrete, runnable examples grouped into numbered sections.
  3. Expected output captured inline as comments where useful.

Most folders also have one <Topic>.README.md per file with the same theory in markdown form — handy for browsing on GitHub without opening the source.


Pace and Projects

PhaseSuggested durationCapstone
0–1Week 1
2Week 2
3Week 3Banking App, Employee App
4Week 4
5Weeks 5–6Face Detection
6Week 7
7Weeks 8–9Snake Game
8Week 10
9Week 11

Happy hacking!

About

In this repository we learn in detail about JAVA Programming.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages