This repository tracks my learning of Java for backend development, progressing towards Spring Boot, microservices, and scalable systems.
- Build strong core Java fundamentals
- Write clean, structured, and logical code
- Prepare for backend development using Spring Boot
- JDK setup and IntelliJ IDEA configuration
- Java program structure and execution flow
- Variables and data types
- Literals and type conversion
- Arithmetic
- Relational
- Logical
- if-else
- else-if
- ternary operator
- switch-case
- while
- do-while
- for loop
- choosing the right loop
- Implemented basic Java programs for each concept
- Solved exercises on:
- Operators
- Conditionals (grading logic)
- Loops
- Built basic console logic (calculator-style program)
- day-01/
- basics/
- operators/
- conditionals/
- loops/
- Understanding how Java code is compiled and executed
- Writing clean and structured control flow logic
- Choosing appropriate loops based on use-case
- 1D arrays
- Multi-dimensional arrays
- Jagged arrays
- Array of objects
- Enhanced for loop
- Method creation and usage
- Method overloading
- Stack vs Heap
- Class structure
- Object creation
- Basic encapsulation
- Second largest element
- Reverse array (in-place)
- Check if array is sorted
- Find duplicate elements
- Rotate array
- Prime number checker
- Factorial
- Fibonacci
- Find max element
- Student (average & grade calculation)
- BankAccount (deposit & withdraw logic)
- Book (price discount logic)
- day-02/
- arrays/
- methods/
- classesAndObjects/
- self-practice/
- Applying array concepts to solve real problems
- Writing reusable logic using methods
- Understanding how objects encapsulate data and behavior
- Identifying and correcting logical mistakes through practice
- String creation and immutability
- Mutable vs Immutable strings
- StringBuffer and StringBuilder
- Encapsulation
- Getters and setters
- this keyword
- Constructors (default and parameterized)
- Static variables
- Static methods
- Static block
- Naming conventions
- Anonymous objects
- Reverse string
- Palindrome check
- Count vowels and consonants
- Remove duplicate characters
- Compare
==vs.equals()
- Encapsulation with validation (Student, BankAccount)
- Constructor usage (Book, Employee)
- Static keyword practice (Counter, utility class)
- Demonstrated
thiskeyword and anonymous objects
- day-03/
- strings/
- encapsulation/
- constructors/
- static/
- misc/
- Understanding string immutability and performance implications
- Applying encapsulation for data protection and validation
- Using constructors for proper object initialization
- Understanding shared behavior using static members
- Writing cleaner and more structured object-oriented code
- Need of inheritance
- Single and multilevel inheritance
- Multiple inheritance (conceptual in Java)
- this and super keyword
- Method overriding
- Compile-time vs runtime polymorphism
- Dynamic method dispatch
- Packages
- Access modifiers
- final keyword
- Object class methods (equals, toString, hashCode)
- Upcasting and downcasting
- Wrapper classes
- Completed quiz and coding exercises on OOP concepts
- Understood inheritance hierarchy and method overriding
- Explored polymorphism and dynamic method dispatch behavior
- Practiced usage of access modifiers and package structure
- Analyzed object comparison using equals and hashCode
- day-04/
- inheritance/
- polymorphism/
- packages/
- object-class/
- misc/
- Understanding code reuse through inheritance
- Applying polymorphism for flexible and scalable design
- Managing access and structure using packages and modifiers
- Understanding object behavior through Object class methods
- Gaining clarity on type casting and wrapper classes
- Applying OOP concepts in a real use-case
- Class design and object interaction
- Arrays of objects
- Basic input/output handling
- Built a console-based quiz application
- Question class with encapsulated fields
- QuizService to manage quiz flow
- Display multiple-choice questions
- Accept user input
- Calculate and display final score
- day-05/
- quiz-app/
- Question.java
- QuizService.java
- QuizConsoleApp.java
- quiz-app/
- Structuring a small application using multiple classes
- Managing data using arrays of objects
- Understanding flow control in real scenarios
- Identifying design limitations (tight coupling, input handling)
- Transitioning from concept-based coding to building small applications
- Code is written and pushed daily to maintain consistency and track progress