📦
Basics

Variables & Data Types

Storing Data
💡 Variable ek labeled dabba (box) hai jisme tum ek value rakhte ho — dabbe ka naam aur us mein kya rakh sakte ho (type), pehle se tay hota hai.

Java mein har variable ka ek type hota hai — jaise int (whole number), double (decimal number), char (single letter), boolean (true/false), aur String (text).

Java "statically typed" language hai — matlab dabbe ka type shuru mein hi batana padta hai, aur us dabbe mein sirf wahi type ki cheez fit hogi.

int age = 10;
double price = 99.5;
char grade = 'A';
boolean isFun = true;
String name = "Duke";
📦
Variable ek labeled dabba (box) hai jisme tum ek value rakhte ho — dabbe ka naam aur us mein kya rakh sakte ho (type), pehle se tay hota hai.
1 / 7
Is page mein (3 subtopics)

Java mein 8 primitive types hain, aur inhe do groups mein baant sakte hain: numbers (byte, short, int, long, float, double), text (char), aur logic (boolean). Har type ki apni fixed size (bits/bytes) hoti hai, jo decide karti hai kitna bada number store ho sakta hai.

Whole numbers ke liye 4 types hain — chhote se bade tak byte, short, int, long. Zyadatar programs mein int hi default choice hoti hai (bahut bade numbers ke liye long). Decimal numbers ke liye float aur double hain — double zyada precise hai aur Java mein decimal literals (jaise 3.14) by default double hi maane jaate hain, isiliye float use karne ke liye 'f' suffix zaroori hai.

TypeSizeRangeDefaultExample
byte1 byte-128 to 1270byte b = 100;
short2 bytes-32,768 to 32,7670short s = 2000;
int4 bytes~-2.1B to 2.1B0int i = 50000;
long8 bytesBahut bada0Llong l = 100L;
float4 bytes~7 decimal digits precision0.0ffloat f = 3.14f;
double8 bytes~15 decimal digits precision0.0double d = 3.14;
char2 bytes0 to 65,535 (Unicode)'\u0000'char c = 'A';
boolean1 bit (JVM-dependent)true / falsefalseboolean b = true;
💡Tip: Jab tak koi specific reason na ho, whole numbers ke liye int aur decimals ke liye double use karo — ye Java ke "default" choices hain aur zyadatar situations mein best fit hote hain.

Local variable ek method/block ke andar define hota hai — sirf wahi tak "zinda" rehta hai (jab method khatam, variable bhi gaya). Ise use karne se pehle initialize karna zaroori hai, warna compile error aayega — Java local variables ko koi default value nahi deta (jaanbujh kar, taaki galti se uninitialized data use na ho).

Instance variable class ke andar, method ke bahar define hota hai — har object ki apni alag copy hoti hai. Ye "heap" memory mein object ke saath store hoti hai, aur automatically default value milti hai (0, null, false) agar explicitly initialize na karo.

Static variable class ke saath juda hota hai, kisi individual object se nahi — sab objects ismein ek hi copy share karte hain. Ye program shuru hote hi (class load hote hi) banti hai aur poore program ke chalte rehti hai.

class Counter {
  int id;              // instance variable — har object ki apni
  static int total;    // static variable — sabme shared
  void increment() {
    int temp = 1;       // local variable — sirf is method mein
    total += temp;
  }
}
⚠️Common Mistake: Local variable ko bina initialize kiye use karne ki koshish mat karo — "variable might not have been initialized" compile error milega. Ye Java ki safety feature hai, bug nahi!

Java mein camelCase use hota hai variables/methods ke liye (studentName, calculateTotal), aur PascalCase class names ke liye (StudentRecord, BankAccount). Constants (static final variables) SCREAMING_SNAKE_CASE mein likhe jaate hain (MAX_SPEED, PI_VALUE) — ye conventions Java Language Specification mein official nahi hain, lekin poori industry follow karti hai, isliye inhe todna code ko "unprofessional" bana deta hai.

Numeric literals mein Java 7+ se underscore use kar sakte ho readability ke liye — 1_000_000 padhna 1000000 se kahin aasan hai. Hexadecimal 0x se shuru hota hai (0x1A = 26), octal sirf 0 se (010 = 8 decimal mein), aur binary 0b se (0b1010 = 10).

Variable names letters, digits, underscore (_), aur dollar sign ($) se ban sakte hain, lekin digit se shuru nahi ho sakte, aur Java ke reserved keywords (class, int, if, etc.) use nahi kar sakte.

int million = 1_000_000;
int hex = 0x1A;      // 26
int binary = 0b1010; // 10
final double MAX_SPEED = 120.0;