A friendly, structured, beginner-to-advanced Java learning repo covering 71 topics across 9 modules. This is based on BroCode's Java Full Course. Every topic has notes and exercises.
-
Start with HOW_TO_START.md - If you're a total beginner, this file will guide you through installing Java and an IDE.
-
Follow the Modules in Order - Start from Module_01 and work your way up. Don't skip ahead!
-
Read the Notes First - For each topic, open the Notes_[TopicName].java file. It explains the concept with simple analogies and runnable examples.
-
Do the Exercises - After reading the notes, complete the Exercise_[TopicName].java file. It has 3 exercises with hints.
-
Build the Projects - Projects are marked with β in the topic list. They combine multiple concepts into fun, runnable programs.
-
Track Your Progress - Use the checklist below to mark off completed topics.
| Module | Topics | Description |
|---|---|---|
| Module_01_Java_Basics | 01-06 | Introduction, variables, input, arithmetic, and first projects |
| Module_02_Control_Flow_and_Math | 07-12 | If statements, random numbers, math class, printf, compound interest |
| Module_03_Strings_and_Operators | 13-20 | String methods, substrings, ternary operator, switches, calculator |
| Module_04_Loops | 21-25 | While loops, for loops, break/continue, nested loops, number guessing game |
| Module_05_Methods | 26-30 | Methods, overloaded methods, scope, banking program, dice roller |
| Module_06_Arrays | 31-38 | Arrays, user input to arrays, search, varargs, 2D arrays, quiz game, rock-paper-scissors, slot machine |
| Module_07_Object_Oriented_Programming | 39-54 | OOP intro, constructors, inheritance, polymorphism, abstraction, interfaces, getters/setters, aggregation, composition |
| Module_08_Advanced_Java | 55-65 | Wrapper classes, ArrayLists, exceptions, file I/O, music player, hangman, dates/times, anonymous classes, timers |
| Module_09_Expert_Topics | 66-71 | Generics, HashMaps, enums, threading, multithreading, alarm clock |
- Download the latest JDK from oracle.com
- Follow the installation instructions for your OS
- VS Code (Recommended for beginners): Install from code.visualstudio.com, then add the Java Extension Pack
- IntelliJ IDEA (More advanced): Community edition is free from jetbrains.com
- Open the .java file in your IDE
- Click the "Run" button (usually a play icon)
- Or use terminal:
javac FileName.javathenjava FileName
- 01_Introduction
- 02_Variables
- 03_User_Input
- 04_Project_MadLibs β
- 05_Arithmetic
- 06_Project_ShoppingCart β
- 07_If_Statements
- 08_Random_Numbers
- 09_Math_Class
- 10_Printf
- 11_Project_CompoundInterest β
- 12_Nested_If_Statements
- 13_String_Methods
- 14_Substrings
- 15_Project_WeightConverter β
- 16_Ternary_Operator
- 17_Project_TemperatureConverter β
- 18_Enhanced_Switches
- 19_Project_Calculator β
- 20_Logical_Operators
- 21_While_Loops
- 22_Project_NumberGuessingGame β
- 23_For_Loops
- 24_Break_and_Continue
- 25_Nested_Loops
- 26_Methods
- 27_Overloaded_Methods
- 28_Variable_Scope
- 29_Project_BankingProgram β
- 30_Project_DiceRoller β
- 31_Arrays
- 32_User_Input_Into_Array
- 33_Search_An_Array
- 34_Varargs
- 35_2D_Arrays
- 36_Project_QuizGame β
- 37_Project_RockPaperScissors β
- 38_Project_SlotMachine β
- 39_OOP_Introduction
- 40_Constructors
- 41_Overloaded_Constructors
- 42_Array_of_Objects
- 43_Static
- 44_Inheritance
- 45_Super
- 46_Method_Overriding
- 47_ToString_Method
- 48_Abstraction
- 49_Interfaces
- 50_Polymorphism
- 51_Runtime_Polymorphism
- 52_Getters_and_Setters
- 53_Aggregation
- 54_Composition
- 55_Wrapper_Classes
- 56_ArrayLists
- 57_Exception_Handling
- 58_Write_Files
- 59_Read_Files
- 60_Project_MusicPlayer β
- 61_Project_HangmanGame β
- 62_Dates_and_Times
- 63_Anonymous_Classes
- 64_TimerTasks
- 65_Project_CountdownTimer β
- 66_Generics
- 67_HashMaps
- 68_Enums
- 69_Threading
- 70_Multithreading
- 71_Project_AlarmClock β
- Don't rush - Take your time with each concept. Understanding > Speed
- Experiment - Change values in the code and see what happens
- Google everything - If something doesn't make sense, search for it
- Practice daily - Even 30 minutes a day is better than cramming
- Join communities - Reddit's r/learnjava or Discord servers for help
- Build projects - Apply what you learn in small projects
- Don't fear errors - Errors are learning opportunities
Happy coding! π