<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Srivalli Yaarlagadda</title>
    <description>The latest articles on DEV Community by Srivalli Yaarlagadda (@srivalli_srivalli_42fb6dc).</description>
    <link>https://dev.to/srivalli_srivalli_42fb6dc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4010750%2Fc2d38981-2468-4fb8-880d-d9d3f50da451.png</url>
      <title>DEV Community: Srivalli Yaarlagadda</title>
      <link>https://dev.to/srivalli_srivalli_42fb6dc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srivalli_srivalli_42fb6dc"/>
    <language>en</language>
    <item>
      <title>OOP (Object-Oriented Programming).</title>
      <dc:creator>Srivalli Yaarlagadda</dc:creator>
      <pubDate>Tue, 11 Aug 2026 08:34:19 +0000</pubDate>
      <link>https://dev.to/srivalli_srivalli_42fb6dc/oop-object-oriented-programming-5hki</link>
      <guid>https://dev.to/srivalli_srivalli_42fb6dc/oop-object-oriented-programming-5hki</guid>
      <description>&lt;p&gt;We’ll learn it in the correct order because the concepts depend on each other:&lt;/p&gt;

&lt;p&gt;Java OOP&lt;br&gt;
│&lt;br&gt;
├── 1. Class&lt;br&gt;
├── 2. Object&lt;br&gt;
├── 3. Constructor&lt;br&gt;
├── 4. this keyword&lt;br&gt;
├── 5. Instance vs static&lt;br&gt;
├── 6. Encapsulation&lt;br&gt;
├── 7. Inheritance&lt;br&gt;
├── 8. Polymorphism&lt;br&gt;
└── 9. Abstraction&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Class
Definition&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A class is a blueprint/template that defines the properties and behaviors that objects can have.&lt;/p&gt;

&lt;p&gt;A class itself is not usually the actual thing. It describes what an object should contain and do.&lt;/p&gt;

&lt;p&gt;Real-time example&lt;/p&gt;

&lt;p&gt;Think about a Car.&lt;/p&gt;

&lt;p&gt;A car has:&lt;/p&gt;

&lt;p&gt;Properties:&lt;/p&gt;

&lt;p&gt;color&lt;br&gt;
brand&lt;br&gt;
speed&lt;br&gt;
model&lt;/p&gt;

&lt;p&gt;Behaviors:&lt;/p&gt;

&lt;p&gt;start()&lt;br&gt;
stop()&lt;br&gt;
accelerate()&lt;br&gt;
brake()&lt;/p&gt;

&lt;p&gt;We can represent that with a Java class:&lt;/p&gt;

&lt;p&gt;class Car {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String color;
String brand;
int speed;

void start() {
    System.out.println("Car started");
}

void stop() {
    System.out.println("Car stopped");
}

void accelerate() {
    speed += 10;
    System.out.println("Speed: " + speed);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Here:&lt;/p&gt;

&lt;p&gt;Car&lt;br&gt;
│&lt;br&gt;
├── Properties&lt;br&gt;
│    ├── color&lt;br&gt;
│    ├── brand&lt;br&gt;
│    └── speed&lt;br&gt;
│&lt;br&gt;
└── Behaviors&lt;br&gt;
     ├── start()&lt;br&gt;
     ├── stop()&lt;br&gt;
     └── accelerate()&lt;/p&gt;

&lt;p&gt;The class is basically a design/template.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Object
Definition&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An object is an actual instance of a class.&lt;/p&gt;

&lt;p&gt;This distinction is extremely important:&lt;/p&gt;

&lt;p&gt;Class  → Blueprint&lt;br&gt;
Object → Actual thing created from blueprint&lt;br&gt;
Real-time example&lt;/p&gt;

&lt;p&gt;Think about a building blueprint.&lt;/p&gt;

&lt;p&gt;Blueprint&lt;br&gt;
     ↓&lt;br&gt;
   HOUSE&lt;/p&gt;

&lt;p&gt;From that blueprint, you can build multiple houses:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;     HOUSE BLUEPRINT
            ↓
   ┌────────┼────────┐
   ↓        ↓        ↓
House A  House B  House C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Similarly:&lt;/p&gt;

&lt;p&gt;Car car1 = new Car();&lt;br&gt;
Car car2 = new Car();&lt;br&gt;
Car car3 = new Car();&lt;/p&gt;

&lt;p&gt;Here:&lt;/p&gt;

&lt;p&gt;Car&lt;br&gt;
 ↓&lt;br&gt;
Class&lt;/p&gt;

&lt;p&gt;car1&lt;br&gt;
car2&lt;br&gt;
car3&lt;br&gt;
 ↓&lt;br&gt;
Objects&lt;/p&gt;

&lt;p&gt;Each object can have its own values.&lt;/p&gt;

&lt;p&gt;car1.color = "Red";&lt;br&gt;
car1.brand = "Toyota";&lt;/p&gt;

&lt;p&gt;car2.color = "Blue";&lt;br&gt;
car2.brand = "BMW";&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;car1&lt;br&gt;
┌────────────────┐&lt;br&gt;
│ color = Red    │&lt;br&gt;
│ brand = Toyota │&lt;br&gt;
└────────────────┘&lt;/p&gt;

&lt;p&gt;car2&lt;br&gt;
┌────────────────┐&lt;br&gt;
│ color = Blue   │&lt;br&gt;
│ brand = BMW    │&lt;br&gt;
└────────────────┘&lt;/p&gt;

&lt;p&gt;Both are Car objects, but their data is different.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What does new mean?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will see this constantly in Java:&lt;/p&gt;

&lt;p&gt;Car car = new Car();&lt;/p&gt;

&lt;p&gt;The important part is:&lt;/p&gt;

&lt;p&gt;new Car()&lt;/p&gt;

&lt;p&gt;It creates a new object of the Car class.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;Car class&lt;br&gt;
   ↓&lt;br&gt;
new Car()&lt;br&gt;
   ↓&lt;br&gt;
Object created&lt;br&gt;
   ↓&lt;br&gt;
car reference&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;Car car = new Car();&lt;/p&gt;

&lt;p&gt;means:&lt;/p&gt;

&lt;p&gt;Create a new Car object and store a reference to it in car.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Calling object methods&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you have an object:&lt;/p&gt;

&lt;p&gt;Car car = new Car();&lt;/p&gt;

&lt;p&gt;you can access its properties and methods using:&lt;/p&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;p&gt;called the dot operator.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;car.color = "Red";&lt;/p&gt;

&lt;p&gt;car.start();&lt;br&gt;
car.accelerate();&lt;/p&gt;

&lt;p&gt;The flow is:&lt;/p&gt;

&lt;p&gt;car&lt;br&gt;
 ↓&lt;br&gt;
.&lt;br&gt;
 ↓&lt;br&gt;
start()&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;car&lt;br&gt;
 ↓&lt;br&gt;
.&lt;br&gt;
 ↓&lt;br&gt;
color&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Complete example&lt;br&gt;
class Car {&lt;/p&gt;

&lt;p&gt;String color;&lt;br&gt;
String brand;&lt;br&gt;
int speed;&lt;/p&gt;

&lt;p&gt;void start() {&lt;br&gt;
    System.out.println("Car started");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;void accelerate() {&lt;br&gt;
    speed += 10;&lt;br&gt;
    System.out.println("Speed: " + speed);&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;public class Main {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public static void main(String[] args) {

    Car car = new Car();

    car.color = "Red";
    car.brand = "Toyota";

    System.out.println(car.color);
    System.out.println(car.brand);

    car.start();

    car.accelerate();
    car.accelerate();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Red&lt;br&gt;
Toyota&lt;br&gt;
Car started&lt;br&gt;
Speed: 10&lt;br&gt;
Speed: 20&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Constructor&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now we come to another very important concept.&lt;/p&gt;

&lt;p&gt;Definition&lt;/p&gt;

&lt;p&gt;A constructor is a special member of a class that is automatically called when an object is created.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Car car = new Car();&lt;/p&gt;

&lt;p&gt;When new Car() executes, Java calls the constructor.&lt;/p&gt;

&lt;p&gt;Why do we need constructors?&lt;/p&gt;

&lt;p&gt;Suppose you have:&lt;/p&gt;

&lt;p&gt;Car car = new Car();&lt;/p&gt;

&lt;p&gt;car.color = "Red";&lt;br&gt;
car.brand = "Toyota";&lt;br&gt;
car.speed = 0;&lt;/p&gt;

&lt;p&gt;That's repetitive.&lt;/p&gt;

&lt;p&gt;Instead, we can initialize the object when creating it.&lt;/p&gt;

&lt;p&gt;Car car = new Car("Red", "Toyota");&lt;/p&gt;

&lt;p&gt;Create the constructor:&lt;/p&gt;

&lt;p&gt;class Car {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String color;
String brand;

Car(String color, String brand) {
    this.color = color;
    this.brand = brand;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;Car car = new Car("Red", "Toyota");&lt;/p&gt;

&lt;p&gt;creates an object that is already initialized.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Constructor rules&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A constructor:&lt;/p&gt;

&lt;p&gt;Has the same name as the class&lt;br&gt;
class Car {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Car() {

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Class:&lt;/p&gt;

&lt;p&gt;Car&lt;/p&gt;

&lt;p&gt;Constructor:&lt;/p&gt;

&lt;p&gt;Car()&lt;br&gt;
Has no return type&lt;/p&gt;

&lt;p&gt;Correct:&lt;/p&gt;

&lt;p&gt;Car() {&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Incorrect:&lt;/p&gt;

&lt;p&gt;void Car() {&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;The second one is actually a method, not a constructor.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Real-time constructor example&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Imagine creating users in an application.&lt;/p&gt;

&lt;p&gt;Without a constructor:&lt;/p&gt;

&lt;p&gt;User user = new User();&lt;/p&gt;

&lt;p&gt;user.name = "John";&lt;br&gt;
user.email = "&lt;a href="mailto:john@gmail.com"&gt;john@gmail.com&lt;/a&gt;";&lt;br&gt;
user.age = 25;&lt;/p&gt;

&lt;p&gt;With a constructor:&lt;/p&gt;

&lt;p&gt;User user = new User(&lt;br&gt;
    "John",&lt;br&gt;
    "&lt;a href="mailto:john@gmail.com"&gt;john@gmail.com&lt;/a&gt;",&lt;br&gt;
    25&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Class:&lt;/p&gt;

&lt;p&gt;class User {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String name;
String email;
int age;

User(String name, String email, int age) {
    this.name = name;
    this.email = email;
    this.age = age;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;This is much closer to how you'll see objects initialized in real Java applications.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The this keyword&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is another important concept.&lt;/p&gt;

&lt;p&gt;Look at:&lt;/p&gt;

&lt;p&gt;class User {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String name;

User(String name) {
    this.name = name;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;We have two names:&lt;/p&gt;

&lt;p&gt;name&lt;br&gt;
 ↓&lt;br&gt;
constructor parameter&lt;/p&gt;

&lt;p&gt;this.name&lt;br&gt;
 ↓&lt;br&gt;
object's variable&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;this.name = name;&lt;/p&gt;

&lt;p&gt;means:&lt;/p&gt;

&lt;p&gt;Assign the constructor parameter name to the current object's name property.&lt;/p&gt;

&lt;p&gt;Real-time analogy&lt;/p&gt;

&lt;p&gt;Imagine two labels:&lt;/p&gt;

&lt;p&gt;Object's name&lt;br&gt;
       ↓&lt;br&gt;
   this.name&lt;/p&gt;

&lt;p&gt;Incoming value&lt;br&gt;
       ↓&lt;br&gt;
      name&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;this.name = name;&lt;/p&gt;

&lt;p&gt;means:&lt;/p&gt;

&lt;p&gt;object's name ← incoming name&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why is this called "current object"?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Suppose:&lt;/p&gt;

&lt;p&gt;User user1 = new User("Alice");&lt;br&gt;
User user2 = new User("Bob");&lt;/p&gt;

&lt;p&gt;When constructing user1:&lt;/p&gt;

&lt;p&gt;this → user1&lt;/p&gt;

&lt;p&gt;When constructing user2:&lt;/p&gt;

&lt;p&gt;this → user2&lt;/p&gt;

&lt;p&gt;So this always means:&lt;/p&gt;

&lt;p&gt;The current object whose method or constructor is executing.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Instance variables&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;class Student {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String name;
int age;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;name and age belong to each individual object.&lt;/p&gt;

&lt;p&gt;Student s1 = new Student();&lt;br&gt;
Student s2 = new Student();&lt;/p&gt;

&lt;p&gt;s1.name = "Alice";&lt;br&gt;
s2.name = "Bob";&lt;/p&gt;

&lt;p&gt;Memory conceptually looks like:&lt;/p&gt;

&lt;p&gt;s1&lt;br&gt;
┌─────────────┐&lt;br&gt;
│ name=Alice  │&lt;br&gt;
│ age=0       │&lt;br&gt;
└─────────────┘&lt;/p&gt;

&lt;p&gt;s2&lt;br&gt;
┌─────────────┐&lt;br&gt;
│ name=Bob    │&lt;br&gt;
│ age=0       │&lt;br&gt;
└─────────────┘&lt;/p&gt;

&lt;p&gt;These are called instance variables because every object gets its own instance data.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;static&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now something different.&lt;/p&gt;

&lt;p&gt;Suppose every Student belongs to the same school.&lt;/p&gt;

&lt;p&gt;You don't want every object to maintain a separate copy of:&lt;/p&gt;

&lt;p&gt;schoolName&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;p&gt;class Student {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String name;

static String schoolName = "ABC School";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;Student s1 = new Student();&lt;br&gt;
Student s2 = new Student();&lt;/p&gt;

&lt;p&gt;s1.name = "Alice";&lt;br&gt;
s2.name = "Bob";&lt;/p&gt;

&lt;p&gt;Both share:&lt;/p&gt;

&lt;p&gt;schoolName = ABC School&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         Student class
              │
      schoolName = ABC
              │
      ┌───────┴───────┐
      ↓               ↓
    s1              s2
  Alice             Bob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Instance vs Static&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This distinction is important for interviews and real Java development.&lt;/p&gt;

&lt;p&gt;Instance&lt;/p&gt;

&lt;p&gt;Belongs to an object.&lt;/p&gt;

&lt;p&gt;String name;&lt;/p&gt;

&lt;p&gt;Access:&lt;/p&gt;

&lt;p&gt;student.name&lt;br&gt;
Static&lt;/p&gt;

&lt;p&gt;Belongs to the class.&lt;/p&gt;

&lt;p&gt;static String schoolName;&lt;/p&gt;

&lt;p&gt;Access:&lt;/p&gt;

&lt;p&gt;Student.schoolName&lt;/p&gt;

&lt;p&gt;Easy way to remember:&lt;/p&gt;

&lt;p&gt;instance → each object has its own copy&lt;/p&gt;

&lt;p&gt;static   → shared at class level&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Static method&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can also have static methods.&lt;/p&gt;

&lt;p&gt;class MathUtil {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;static int add(int a, int b) {
    return a + b;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;You don't need to create an object:&lt;/p&gt;

&lt;p&gt;int result = MathUtil.add(10, 20);&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;MathUtil obj = new MathUtil();&lt;br&gt;
obj.add(...);&lt;/p&gt;

&lt;p&gt;This is useful for utility-type operations.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Now the actual OOP pillars&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you understand:&lt;/p&gt;

&lt;p&gt;Class&lt;br&gt;
Object&lt;br&gt;
Constructor&lt;br&gt;
this&lt;br&gt;
Instance&lt;br&gt;
static&lt;/p&gt;

&lt;p&gt;you're ready for the four major OOP concepts.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         OOP
          │
┌─────────┼─────────┐
↓         ↓         ↓
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Encapsulation Inheritance Polymorphism&lt;br&gt;
                         │&lt;br&gt;
                     Abstraction&lt;/p&gt;

&lt;p&gt;The next concept is Encapsulation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Encapsulation
Definition&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Encapsulation is the practice of bundling data and the methods that operate on that data inside a class, while controlling direct access to the data.&lt;/p&gt;

&lt;p&gt;The key idea is:&lt;/p&gt;

&lt;p&gt;Don't allow outside code to freely modify important internal data.&lt;/p&gt;

&lt;p&gt;Bad example&lt;/p&gt;

&lt;p&gt;Imagine a bank account:&lt;/p&gt;

&lt;p&gt;class BankAccount {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;double balance;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Then anyone can do:&lt;/p&gt;

&lt;p&gt;account.balance = -500000;&lt;/p&gt;

&lt;p&gt;That's dangerous.&lt;/p&gt;

&lt;p&gt;You don't want outside code directly changing the balance.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Encapsulation using private&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;p&gt;class BankAccount {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private double balance;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Now this won't be allowed from outside:&lt;/p&gt;

&lt;p&gt;account.balance = 5000;&lt;/p&gt;

&lt;p&gt;because balance is private.&lt;/p&gt;

&lt;p&gt;Instead, provide controlled methods:&lt;/p&gt;

&lt;p&gt;class BankAccount {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private double balance;

public void deposit(double amount) {

    if (amount &amp;gt; 0) {
        balance += amount;
    }
}

public double getBalance() {
    return balance;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;BankAccount account = new BankAccount();&lt;/p&gt;

&lt;p&gt;account.deposit(5000);&lt;/p&gt;

&lt;p&gt;System.out.println(account.getBalance());&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;5000.0&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Real-time example — Bank ATM&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Think about an ATM.&lt;/p&gt;

&lt;p&gt;You don't directly access the bank's database and do:&lt;/p&gt;

&lt;p&gt;balance = 100000&lt;/p&gt;

&lt;p&gt;Instead, you interact through controlled operations:&lt;/p&gt;

&lt;p&gt;ATM&lt;br&gt;
 │&lt;br&gt;
 ├── deposit()&lt;br&gt;
 ├── withdraw()&lt;br&gt;
 └── checkBalance()&lt;/p&gt;

&lt;p&gt;The actual balance is protected internally.&lt;/p&gt;

&lt;p&gt;That's the basic idea of encapsulation.&lt;/p&gt;

&lt;p&gt;Outside world&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
┌─────────────────────┐&lt;br&gt;
│    BankAccount      │&lt;br&gt;
│                     │&lt;br&gt;
│ private balance     │&lt;br&gt;
│                     │&lt;br&gt;
│ deposit()           │&lt;br&gt;
│ withdraw()          │&lt;br&gt;
│ getBalance()        │&lt;br&gt;
└─────────────────────┘&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why encapsulation matters in backend development&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You'll use this concept constantly when building Java backend applications.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;class User {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private String password;

public void setPassword(String password) {
    // validation / hashing
}

public boolean verifyPassword(String password) {
    // verification
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;You don't want code throughout your application freely manipulating sensitive internal state.&lt;/p&gt;

&lt;p&gt;This becomes especially important when you later learn:&lt;/p&gt;

&lt;p&gt;Java&lt;br&gt;
 ↓&lt;br&gt;
Spring Boot&lt;br&gt;
 ↓&lt;br&gt;
REST APIs&lt;br&gt;
 ↓&lt;br&gt;
Services&lt;br&gt;
 ↓&lt;br&gt;
Repositories&lt;br&gt;
 ↓&lt;br&gt;
Database&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Java Fundamentals — Part 1</title>
      <dc:creator>Srivalli Yaarlagadda</dc:creator>
      <pubDate>Tue, 11 Aug 2026 04:58:54 +0000</pubDate>
      <link>https://dev.to/srivalli_srivalli_42fb6dc/java-fundamentals-part-1-27ak</link>
      <guid>https://dev.to/srivalli_srivalli_42fb6dc/java-fundamentals-part-1-27ak</guid>
      <description>&lt;p&gt;**1. What is Java?&lt;br&gt;
**Definition&lt;/p&gt;

&lt;p&gt;Java is a high-level, object-oriented, class-based programming language designed to be portable across different operating systems.&lt;/p&gt;

&lt;p&gt;Java was originally developed at Sun Microsystems and is now maintained by Oracle and the broader Java community.&lt;/p&gt;

&lt;p&gt;The famous idea associated with Java is:&lt;/p&gt;

&lt;p&gt;Write Once, Run Anywhere.&lt;/p&gt;

&lt;p&gt;For example, you can write:&lt;/p&gt;

&lt;p&gt;System.out.println("Hello Java");&lt;/p&gt;

&lt;p&gt;and compile it into Java bytecode.&lt;/p&gt;

&lt;p&gt;That bytecode can run on different operating systems as long as the appropriate JVM is available.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;2. Why is Java called platform-independent?&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Suppose you write a Java program on Windows:&lt;/p&gt;

&lt;p&gt;Java Code&lt;br&gt;
    ↓&lt;br&gt;
Java Compiler&lt;br&gt;
    ↓&lt;br&gt;
Bytecode&lt;br&gt;
    ↓&lt;br&gt;
.class file&lt;/p&gt;

&lt;p&gt;That .class file can then run through a JVM on:&lt;/p&gt;

&lt;p&gt;Windows&lt;br&gt;
Linux&lt;br&gt;
macOS&lt;/p&gt;

&lt;p&gt;The flow is:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         Java Code
             │
             ▼
       Java Compiler
             │
             ▼
         Bytecode
             │
   ┌─────────┼─────────┐
   ▼         ▼         ▼
Windows    Linux      macOS
  JVM        JVM        JVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;That's the basic reason Java is considered platform-independent.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;3. JDK vs JRE vs JVM&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
This is one of the most important Java fundamentals.&lt;/p&gt;

&lt;p&gt;People often confuse these three.&lt;/p&gt;

&lt;p&gt;JVM&lt;br&gt;
Definition&lt;/p&gt;

&lt;p&gt;JVM (Java Virtual Machine) is the runtime environment that executes Java bytecode.&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;.class file&lt;br&gt;
    ↓&lt;br&gt;
   JVM&lt;br&gt;
    ↓&lt;br&gt;
Program runs&lt;/p&gt;

&lt;p&gt;The JVM is responsible for things such as:&lt;/p&gt;

&lt;p&gt;executing bytecode&lt;br&gt;
memory management&lt;br&gt;
garbage collection&lt;br&gt;
runtime checks&lt;br&gt;
**4. JRE&lt;br&gt;
**Definition&lt;/p&gt;

&lt;p&gt;JRE (Java Runtime Environment) provides the environment required to run Java applications.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;JRE&lt;br&gt;
│&lt;br&gt;
├── JVM&lt;br&gt;
└── Java runtime libraries&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;JRE = JVM + libraries needed to run Java applications&lt;/p&gt;

&lt;p&gt;**5. JDK&lt;br&gt;
**Definition&lt;/p&gt;

&lt;p&gt;JDK (Java Development Kit) provides the tools required to develop Java applications.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;JDK&lt;br&gt;
│&lt;br&gt;
├── JRE&lt;br&gt;
│    └── JVM&lt;br&gt;
│&lt;br&gt;
└── Development tools&lt;br&gt;
     ├── javac&lt;br&gt;
     ├── java&lt;br&gt;
     ├── javadoc&lt;br&gt;
     └── other tools&lt;/p&gt;

&lt;p&gt;So the easy relationship is:&lt;/p&gt;

&lt;p&gt;JDK&lt;br&gt;
 ↓&lt;br&gt;
JRE&lt;br&gt;
 ↓&lt;br&gt;
JVM&lt;br&gt;
Easy memory trick&lt;br&gt;
JDK → Develop&lt;br&gt;
JRE → Run&lt;br&gt;
JVM → Execute&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your first Java program&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Create:&lt;/p&gt;

&lt;p&gt;HelloWorld.java&lt;/p&gt;

&lt;p&gt;Write:&lt;/p&gt;

&lt;p&gt;public class HelloWorld {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public static void main(String[] args) {

    System.out.println("Hello Java");

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Hello Java&lt;/p&gt;

&lt;p&gt;Now let's understand every single part.&lt;/p&gt;

&lt;p&gt;**7. public&lt;br&gt;
**public class HelloWorld&lt;/p&gt;

&lt;p&gt;public is an access modifier.&lt;/p&gt;

&lt;p&gt;It means that the class can be accessed from outside its package.&lt;/p&gt;

&lt;p&gt;Don't worry about packages yet. We'll cover them later.&lt;/p&gt;

&lt;p&gt;For now remember:&lt;/p&gt;

&lt;p&gt;public → accessible from other classes&lt;br&gt;
**8. class&lt;br&gt;
**class HelloWorld&lt;/p&gt;

&lt;p&gt;A class is a blueprint/template for creating objects.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Car&lt;/p&gt;

&lt;p&gt;could be a class.&lt;/p&gt;

&lt;p&gt;It can describe:&lt;/p&gt;

&lt;p&gt;Properties:&lt;br&gt;
    color&lt;br&gt;
    model&lt;br&gt;
    speed&lt;/p&gt;

&lt;p&gt;Behavior:&lt;br&gt;
    start()&lt;br&gt;
    stop()&lt;br&gt;
    accelerate()&lt;/p&gt;

&lt;p&gt;We'll go deeply into classes when we reach OOP.&lt;/p&gt;

&lt;p&gt;**9. HelloWorld&lt;br&gt;
**class HelloWorld&lt;/p&gt;

&lt;p&gt;This is the class name.&lt;/p&gt;

&lt;p&gt;Java convention:&lt;/p&gt;

&lt;p&gt;ClassName&lt;/p&gt;

&lt;p&gt;uses PascalCase.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Student&lt;br&gt;
Employee&lt;br&gt;
BankAccount&lt;br&gt;
PaymentService&lt;br&gt;
UserController&lt;br&gt;
*&lt;em&gt;10. main()&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
This is extremely important.&lt;/p&gt;

&lt;p&gt;public static void main(String[] args)&lt;/p&gt;

&lt;p&gt;The main() method is the entry point of a traditional Java application.&lt;/p&gt;

&lt;p&gt;When the JVM starts your application, it looks for the appropriate main method.&lt;/p&gt;

&lt;p&gt;Think:&lt;/p&gt;

&lt;p&gt;Program starts&lt;br&gt;
      ↓&lt;br&gt;
main()&lt;br&gt;
      ↓&lt;br&gt;
Rest of your code executes&lt;br&gt;
**11. System.out.println()&lt;br&gt;
**System.out.println("Hello Java");&lt;/p&gt;

&lt;p&gt;This prints text to the console.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;System.out.println("Hello");&lt;br&gt;
System.out.println("Welcome");&lt;br&gt;
System.out.println(100);&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Hello&lt;br&gt;
Welcome&lt;br&gt;
100&lt;br&gt;
*&lt;em&gt;12. Java Variables&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Now we get into actual programming.&lt;/p&gt;

&lt;p&gt;Definition&lt;/p&gt;

&lt;p&gt;A variable is a named memory location used to store a value.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;int age = 25;&lt;/p&gt;

&lt;p&gt;Think of it like a labelled box:&lt;/p&gt;

&lt;p&gt;┌───────────────┐&lt;br&gt;
│ age           │&lt;br&gt;
│               │&lt;br&gt;
│      25       │&lt;br&gt;
└───────────────┘&lt;/p&gt;

&lt;p&gt;Here:&lt;/p&gt;

&lt;p&gt;int  → data type&lt;br&gt;
age  → variable name&lt;br&gt;
25   → value&lt;br&gt;
*&lt;em&gt;13. Data Types&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Java has two broad categories:&lt;/p&gt;

&lt;p&gt;Data Types&lt;br&gt;
│&lt;br&gt;
├── Primitive&lt;br&gt;
│&lt;br&gt;
└── Reference&lt;br&gt;
*&lt;em&gt;14. Primitive Data Types&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Java has 8 primitive data types:&lt;/p&gt;

&lt;p&gt;byte&lt;br&gt;
short&lt;br&gt;
int&lt;br&gt;
long&lt;br&gt;
float&lt;br&gt;
double&lt;br&gt;
char&lt;br&gt;
boolean&lt;/p&gt;

&lt;p&gt;These are fundamental built-in types.&lt;/p&gt;

&lt;p&gt;int&lt;/p&gt;

&lt;p&gt;Used for whole numbers.&lt;/p&gt;

&lt;p&gt;int age = 25;&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;int count = 100;&lt;br&gt;
int salary = 50000;&lt;br&gt;
int marks = 85;&lt;br&gt;
double&lt;/p&gt;

&lt;p&gt;Used for decimal numbers.&lt;/p&gt;

&lt;p&gt;double price = 99.99;&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;double temperature = 36.5;&lt;br&gt;
char&lt;/p&gt;

&lt;p&gt;Stores a single character.&lt;/p&gt;

&lt;p&gt;char grade = 'A';&lt;/p&gt;

&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;'A'&lt;/p&gt;

&lt;p&gt;uses single quotes.&lt;/p&gt;

&lt;p&gt;boolean&lt;/p&gt;

&lt;p&gt;Stores:&lt;/p&gt;

&lt;p&gt;true&lt;br&gt;
false&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;boolean isLoggedIn = true;&lt;/p&gt;

&lt;p&gt;This is extremely common in real applications.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;boolean isAdmin = false;&lt;br&gt;
*&lt;em&gt;15. Reference Types&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Reference types can refer to objects.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;String name = "Srivalli";&lt;br&gt;
int[] numbers = {10, 20, 30};&lt;br&gt;
Student student = new Student();&lt;/p&gt;

&lt;p&gt;We'll learn objects and references properly when we reach OOP.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;16. Operators&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Operators allow you to perform operations.&lt;/p&gt;

&lt;p&gt;Arithmetic operators&lt;/p&gt;

&lt;h2&gt;
  
  
  +
&lt;/h2&gt;

&lt;p&gt;*&lt;br&gt;
/&lt;br&gt;
%&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;int a = 10;&lt;br&gt;
int b = 3;&lt;/p&gt;

&lt;p&gt;System.out.println(a + b);&lt;br&gt;
System.out.println(a - b);&lt;br&gt;
System.out.println(a * b);&lt;br&gt;
System.out.println(a / b);&lt;br&gt;
System.out.println(a % b);&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;13&lt;br&gt;
7&lt;br&gt;
30&lt;br&gt;
3&lt;br&gt;
1&lt;/p&gt;

&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;10 / 3&lt;/p&gt;

&lt;p&gt;with two integers gives:&lt;/p&gt;

&lt;p&gt;3&lt;/p&gt;

&lt;p&gt;not 3.333....&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;17. Comparison Operators&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Used to compare values.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  &amp;lt;
&lt;/h1&gt;
&lt;h1&gt;
  
  
  &amp;lt;=
&lt;/h1&gt;

&lt;p&gt;!=&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;int age = 25;&lt;/p&gt;

&lt;p&gt;System.out.println(age &amp;gt;= 18);&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;true&lt;br&gt;
*&lt;em&gt;18. Logical Operators&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The main ones are:&lt;/p&gt;

&lt;p&gt;&amp;amp;&amp;amp;   AND&lt;br&gt;
||   OR&lt;br&gt;
!    NOT&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;int age = 25;&lt;br&gt;
boolean hasId = true;&lt;/p&gt;

&lt;p&gt;if (age &amp;gt;= 18 &amp;amp;&amp;amp; hasId) {&lt;br&gt;
    System.out.println("Allowed");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Both conditions must be true.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;19. Conditional Statements&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Now Java can make decisions.&lt;/p&gt;

&lt;p&gt;if&lt;br&gt;
int age = 20;&lt;/p&gt;

&lt;p&gt;if (age &amp;gt;= 18) {&lt;br&gt;
    System.out.println("Adult");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Flow:&lt;/p&gt;

&lt;p&gt;age &amp;gt;= 18?&lt;br&gt;
    │&lt;br&gt;
 ┌──┴──┐&lt;br&gt;
YES    NO&lt;br&gt;
 │      │&lt;br&gt;
 ▼      ▼&lt;br&gt;
Adult  Nothing&lt;br&gt;
**20. if-else&lt;br&gt;
**int age = 16;&lt;/p&gt;

&lt;p&gt;if (age &amp;gt;= 18) {&lt;br&gt;
    System.out.println("Adult");&lt;br&gt;
} else {&lt;br&gt;
    System.out.println("Minor");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Minor&lt;br&gt;
*&lt;em&gt;21. Real-world example&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Imagine login:&lt;/p&gt;

&lt;p&gt;boolean loggedIn = true;&lt;/p&gt;

&lt;p&gt;if (loggedIn) {&lt;br&gt;
    System.out.println("Show dashboard");&lt;br&gt;
} else {&lt;br&gt;
    System.out.println("Show login page");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;This is exactly the type of logic you'll eventually use in backend development.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;User request&lt;br&gt;
     ↓&lt;br&gt;
Is authenticated?&lt;br&gt;
     ↓&lt;br&gt;
 YES ───→ Dashboard/API response&lt;br&gt;
 NO  ───→ Unauthorized&lt;br&gt;
*&lt;em&gt;22. Loops&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Loops repeat code.&lt;/p&gt;

&lt;p&gt;Suppose you want:&lt;/p&gt;

&lt;p&gt;Hello&lt;br&gt;
Hello&lt;br&gt;
Hello&lt;br&gt;
Hello&lt;br&gt;
Hello&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;System.out.println("Hello");&lt;br&gt;
System.out.println("Hello");&lt;br&gt;
System.out.println("Hello");&lt;br&gt;
System.out.println("Hello");&lt;br&gt;
System.out.println("Hello");&lt;/p&gt;

&lt;p&gt;use a loop.&lt;/p&gt;

&lt;p&gt;**23. for loop&lt;br&gt;
**for (int i = 0; i &amp;lt; 5; i++) {&lt;br&gt;
    System.out.println("Hello");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Flow:&lt;/p&gt;

&lt;p&gt;i = 0&lt;br&gt;
 ↓&lt;br&gt;
condition?&lt;br&gt;
 ↓&lt;br&gt;
true&lt;br&gt;
 ↓&lt;br&gt;
print&lt;br&gt;
 ↓&lt;br&gt;
i++&lt;br&gt;
 ↓&lt;br&gt;
condition?&lt;br&gt;
 ↓&lt;br&gt;
...&lt;br&gt;
 ↓&lt;br&gt;
i = 5&lt;br&gt;
 ↓&lt;br&gt;
false&lt;br&gt;
 ↓&lt;br&gt;
STOP&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Hello&lt;br&gt;
Hello&lt;br&gt;
Hello&lt;br&gt;
Hello&lt;br&gt;
Hello&lt;br&gt;
*&lt;em&gt;24. Real-time example — Display users&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Suppose:&lt;/p&gt;

&lt;p&gt;String[] users = {&lt;br&gt;
    "Alice",&lt;br&gt;
    "Bob",&lt;br&gt;
    "Charlie"&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;You can loop:&lt;/p&gt;

&lt;p&gt;for (int i = 0; i &amp;lt; users.length; i++) {&lt;br&gt;
    System.out.println(users[i]);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Alice&lt;br&gt;
Bob&lt;br&gt;
Charlie&lt;/p&gt;

&lt;p&gt;This becomes very useful when working with collections and database results.&lt;/p&gt;

&lt;p&gt;**25. Arrays&lt;br&gt;
**Definition&lt;/p&gt;

&lt;p&gt;An array is a fixed-size collection of elements of the same type.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;int[] marks = {80, 90, 75, 88};&lt;/p&gt;

&lt;p&gt;Visual:&lt;/p&gt;

&lt;p&gt;Index:    0    1    2    3&lt;br&gt;
          ↓    ↓    ↓    ↓&lt;br&gt;
        ┌────┬────┬────┬────┐&lt;br&gt;
marks = │ 80 │ 90 │ 75 │ 88 │&lt;br&gt;
        └────┴────┴────┴────┘&lt;/p&gt;

&lt;p&gt;Important:&lt;/p&gt;

&lt;p&gt;Java array indexes start at 0.&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;marks[0] → 80&lt;br&gt;
marks[1] → 90&lt;br&gt;
marks[2] → 75&lt;br&gt;
marks[3] → 88&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Methods
Definition&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A method is a block of code that performs a specific task and can be called when needed.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;static void greet() {&lt;br&gt;
    System.out.println("Hello!");&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Call it:&lt;/p&gt;

&lt;p&gt;greet();&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Hello!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Methods with parameters
static void greet(String name) {
System.out.println("Hello " + name);
}&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Call:&lt;/p&gt;

&lt;p&gt;greet("Srivalli");&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;Hello Srivalli&lt;/p&gt;

&lt;p&gt;Here:&lt;/p&gt;

&lt;p&gt;name&lt;/p&gt;

&lt;p&gt;is the parameter.&lt;/p&gt;

&lt;p&gt;**28. Methods with return values&lt;br&gt;
**static int add(int a, int b) {&lt;br&gt;
    return a + b;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Use:&lt;/p&gt;

&lt;p&gt;int result = add(10, 20);&lt;/p&gt;

&lt;p&gt;System.out.println(result);&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;30&lt;/p&gt;

&lt;p&gt;Flow:&lt;/p&gt;

&lt;p&gt;10 + 20&lt;br&gt;
   ↓&lt;br&gt;
 add()&lt;br&gt;
   ↓&lt;br&gt;
 return 30&lt;br&gt;
   ↓&lt;br&gt;
result&lt;br&gt;
*&lt;em&gt;29. The foundation of Java OOP&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Everything we've covered so far prepares you for the biggest part of Java:&lt;/p&gt;

&lt;p&gt;Object-Oriented Programming&lt;/p&gt;

&lt;p&gt;The four major OOP concepts are:&lt;/p&gt;

&lt;p&gt;OOP&lt;br&gt;
│&lt;br&gt;
├── Encapsulation&lt;br&gt;
├── Inheritance&lt;br&gt;
├── Polymorphism&lt;br&gt;
└── Abstraction&lt;/p&gt;

&lt;p&gt;But before these four, you need to understand:&lt;/p&gt;

&lt;p&gt;Class&lt;br&gt;
Object&lt;br&gt;
Constructor&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;class Car {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String color;
int speed;

void drive() {
    System.out.println("Car is driving");
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Create an object:&lt;/p&gt;

&lt;p&gt;Car car = new Car();&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;p&gt;Class&lt;br&gt;
 ↓&lt;br&gt;
Car&lt;br&gt;
 ↓&lt;br&gt;
Blueprint&lt;/p&gt;

&lt;p&gt;Object&lt;br&gt;
 ↓&lt;br&gt;
car&lt;br&gt;
 ↓&lt;br&gt;
Actual instance&lt;/p&gt;

&lt;p&gt;You can then do:&lt;/p&gt;

&lt;p&gt;car.color = "Red";&lt;br&gt;
car.speed = 100;&lt;/p&gt;

&lt;p&gt;car.drive();&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
