📘 CodingMarble Learn

जावा प्रोग्रामिंग की मूल बातें

जावा एक सख़्त टाइप वाली, ऑब्जेक्ट-ओरिएंटेड भाषा है। कोड बाइटकोड में बदलता है जिसे जावा वर्चुअल मशीन (JVM) चलाती है, इसलिए एक ही प्रोग्राम हर कंप्यूटर पर चलता है। हर मान का टाइप होता है (int, double, char, boolean, String)। ऑपरेटर गणना करते हैं, if/switch चुनाव करते हैं, for/while दोहराते हैं। ऐरे एक टाइप के कई मान रखता है, गिनती 0 से। क्लास नक्शा है और new से ऑब्जेक्ट बनते हैं। एक्सेप्शन गलतियाँ सँभालते हैं, रैपर क्लास प्रिमिटिव को ऑब्जेक्ट बनाती हैं, थ्रेड कई काम साथ-साथ करवाते हैं।

🎬 कदम-दर-कदम कहानी

  1. वेरिएबल मेमोरी में एक डिब्बा है। हर डिब्बे का एक टाइप होता है: int पूरी संख्या, double दशमलव, char एक अक्षर, boolean सही/गलत।
  2. ऑपरेटर डिब्बों के मान जोड़ते-घटाते हैं: sum = a + b. नया मान एक नए डिब्बे में जाता है।
  3. for लूप: शर्त i < 4 सही है तो काम करो, i को 1 बढ़ाओ, फिर जाँचो। गलत होते ही लूप रुक जाता है।
  4. ऐरे (array) एक जैसे डिब्बों की कतार है। गिनती 0 से शुरू होती है: पहला डिब्बा arr[0]।
  5. क्लास (class) एक नक्शा (blueprint) है। new लिखने पर उससे एक नया ऑब्जेक्ट बनता है, हर एक के अपने मान।
  6. खुद करो: n बदलो। लूप arr[i] = i*i भरता है। "new Student" से नए ऑब्जेक्ट बनाओ।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

हर वेरिएबल का टाइप क्यों बताना पड़ता है?

टाइप तय करता है कि डिब्बा कितना बड़ा है और उससे क्या कर सकते हैं। जावा चलाने से पहले टाइप जाँचकर कई गलतियाँ पकड़ लेती है।

7 / 2 = 3 क्यों?

दोनों int हैं, इसलिए उत्तर भी int डिब्बे में जाता है और दशमलव हट जाता है। 7.0 / 2 = 3.5।

for लूप कब रुकता है?

हर चक्कर से पहले शर्त जाँचता है। पहली बार गलत होते ही (यहाँ i = 4) लूप ख़त्म। चरण 3 का काउंटर देखो।

ऐरे 0 से क्यों शुरू होता है?

इंडेक्स का मतलब है "शुरू से कितने डिब्बे दूर"। पहला डिब्बा 0 दूर है, इसलिए arr[0]।

एक क्लास के दो ऑब्जेक्ट क्या मान साझा करते हैं?

नहीं। हर new ऑब्जेक्ट को फ़ील्ड की अपनी कॉपी मिलती है (static छोड़कर)। हर हरे डिब्बे का अपना नाम और अंक है।

n छोटा करने पर क्या होगा?

arr.length बदलता है, इसलिए लूप कम बार चलता है और आख़िरी इंडेक्स से आगे नहीं जाता।

जावा क्या है और प्रोग्राम कैसे चलता है

जावा 1995 में बनी एक सामान्य-उपयोग भाषा है। मुख्य विचार: एक बार लिखो, कहीं भी चलाओ।

  1. सोर्स कोड Hello.java फ़ाइल में लिखो।
  2. कंपाइलर javac उसे बाइटकोड (Hello.class) बनाता है।
  3. JVM (जावा वर्चुअल मशीन) बाइटकोड को किसी भी कंप्यूटर पर चलाती है।
public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, world");
  }
}

हर प्रोग्राम main से शुरू होता है। हर कथन (statement) के अंत में सेमीकोलन; ब्लॉक { } में। जावा केस-सेंसिटिव है: Age और age अलग नाम हैं। टिप्पणी: // एक पंक्ति, /* कई पंक्तियाँ */।

डेटा टाइप, वेरिएबल और स्थिरांक

वेरिएबल मेमोरी में नाम वाला डिब्बा है। उपयोग से पहले टाइप बताना ज़रूरी: int marks = 85;

टाइपक्या रखता हैआकार
byte, short, int, longपूर्ण संख्याएँ1, 2, 4, 8 बाइट
float, doubleदशमलव4, 8 बाइट
charएक यूनिकोड अक्षर, जैसे 'A'2 बाइट
booleantrue या false-

ये 8 प्रिमिटिव टाइप हैं। String, ऐरे और ऑब्जेक्ट रेफ़रेंस टाइप हैं। final वेरिएबल स्थिरांक है: final double PI = 3.14159;। नाम: अक्षर, _ या $ से शुरू, बीच में स्पेस नहीं, class जैसा कीवर्ड नहीं।

टाइप कास्टिंग: छोटे से बड़ा अपने आप (double d = 5;); बड़े से छोटा कास्ट से (int n = (int) 7.9; = 7)।

ऑपरेटर

प्राथमिकता: * / % पहले, फिर + −; साफ़ रखने को कोष्ठक लगाओ।

नियंत्रण प्रवाह: if, switch और लूप

if (marks >= 90) grade = 'A';
else if (marks >= 75) grade = 'B';
else grade = 'C';

switch कई तय मानों में से एक चुनता है (break से रुको, वरना अगला case भी चलेगा)।

उदाहरण: 1 से 10 का योग: int s = 0; for (int i = 1; i <= 10; i++) s += i; = 55।

ऐरे और स्ट्रिंग

ऐरे एक टाइप के कई मान रखता है: int[] m = {70, 85, 92}; या new int[3]। इंडेक्स 0 से, आख़िरी इंडेक्स m.length − 1। उससे आगे जाने पर ArrayIndexOutOfBoundsException। 2-D ऐरे एक तालिका है: int[][] t = new int[3][4];।

String टेक्स्ट वाला ऑब्जेक्ट है। स्ट्रिंग अपरिवर्तनीय (immutable) है: मेथड नई स्ट्रिंग लौटाते हैं।

लूप में बहुत जोड़ना हो तो StringBuilder।

OOP और क्लास डिज़ाइन

क्लास एक नक्शा है जिसमें फ़ील्ड (डेटा) और मेथड (काम) होते हैं। ऑब्जेक्ट उससे new से बनी एक चीज़ है।

class Student {
  private String name; private int marks;
  Student(String n, int m) { name = n; marks = m; }  // कंस्ट्रक्टर
  boolean passed() { return marks >= 33; }
}
Student s = new Student("Asha", 60);

एक्सेप्शन और असर्शन

एक्सेप्शन रन-टाइम पर होने वाली गड़बड़ी है, जैसे पूर्णांक को शून्य से भाग या गायब फ़ाइल खोलना। उसे सँभालो ताकि प्रोग्राम न टूटे:

try { int r = a / b; }
catch (ArithmeticException e) { System.out.println("शून्य से भाग नहीं"); }
finally { System.out.println("Done"); }

चेक्ड एक्सेप्शन (जैसे IOException) पकड़ना या throws से घोषित करना ज़रूरी; अनचेक्ड (जैसे NullPointerException) प्रोग्रामिंग गलती से। throw से खुद भी फेंक सकते हो।

असर्शन टेस्टिंग में जाँचता है कि जो सच होना चाहिए वह सच है: assert marks >= 0 : "marks negative";। ये डिफ़ॉल्ट बंद रहते हैं, java -ea से चालू; उपयोगकर्ता इनपुट जाँचने में इनका उपयोग नहीं।

रैपर क्लास और थ्रेड

रैपर क्लास प्रिमिटिव को ऑब्जेक्ट में लपेटती हैं: int → Integer, double → Double, char → Character, boolean → Boolean। ArrayList<Integer> जैसे संग्रह को ऑब्जेक्ट चाहिए। जावा अपने आप बदलती है (ऑटोबॉक्सिंग, अनबॉक्सिंग)। उपयोगी: Integer.parseInt("42"), Double.parseDouble("2.5"), Character.isDigit(c)।

थ्रेड एक प्रोग्राम के अंदर काम का अलग रास्ता है, जैसे फ़ाइल डाउनलोड होती रहे और स्क्रीन भी चलती रहे। Thread को extend करो या Runnable implement करो, फिर start() (न कि run())। अवस्थाएँ: new → runnable → running → waiting/blocked → terminated। साझा डेटा पर synchronized एक समय में एक ही थ्रेड को बदलने देता है।

खुद करके देखो

3D में n = 6 करो और देखने से पहले arr[5] का अनुमान लगाओ (25)। फिर जावा वाले कंप्यूटर पर for लूप से 7 का पहाड़ा छापो, और break से 7 × 5 पर रोक दो।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. यह क्या छापेगा? int a = 17, b = 5; System.out.println(a / b + " " + a % b);

पूर्णांकों में a / b = 3 (दशमलव हटा) और a % b = 2। आउटपुट: 3 2।

2. 2 से 20 तक की सभी सम संख्याएँ जोड़ने वाला लूप लिखो।

int s = 0; for (int i = 2; i <= 20; i += 2) s += i; योग 2 + 4 + … + 20 = 110।

3. int[] m = {45, 88, 67, 91, 30} में सबसे बड़ा मान ढूँढो।

int max = m[0]; for (int i = 1; i < m.length; i++) if (m[i] > max) max = m[i]; क्रम: 45 → 88 → 88 → 91 → 91। उत्तर 91।

4. String s = "Java"; System.out.println(s.charAt(4)); से क्या होगा?

मान्य इंडेक्स 0 से 3 हैं, इसलिए charAt(4) रन-टाइम पर StringIndexOutOfBoundsException देगा।

5. BankAccount क्लास बनाओ: private balance, जमा करने और निकालने का मेथड, शून्य से नीचे नहीं।

class BankAccount { private double balance; void deposit(double x) { if (x > 0) balance += x; } boolean withdraw(double x) { if (x <= balance) { balance -= x; return true; } return false; } double getBalance() { return balance; } } private balance और जाँच = एनकैप्सुलेशन।

6. "250" को संख्या बनाकर 50 जोड़ो और छापो, गलत इनपुट सँभालो।

try { int n = Integer.parseInt("250"); System.out.println(n + 50); } catch (NumberFormatException e) { System.out.println("संख्या नहीं"); } आउटपुट 300।

आम गलतियाँ

अभ्यास क्विज़

1. जावा सोर्स कोड कंपाइल होकर बनता है:
2. true/false कौन-सा टाइप रखता है?
3. int[] a = new int[5] में आख़िरी इंडेक्स:
4. ऑब्जेक्ट बनाने का कीवर्ड:
5. Integer किसकी रैपर क्लास है?

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

क्या जावा शुरुआत करने वालों के लिए कठिन है?

Python से थोड़ा ज़्यादा लिखना पड़ता है, पर सख़्त टाइप और साफ़ ढाँचा अच्छी आदतें सिखाते हैं। वेरिएबल, if और लूप से शुरू करो, फिर क्लास।

JDK, JRE और JVM में क्या अंतर है?

JVM बाइटकोड चलाती है; JRE = JVM + मानक लाइब्रेरी; JDK = JRE + javac जैसे टूल जिनसे प्रोग्राम लिखे जाते हैं।

क्या जावा और जावास्क्रिप्ट एक ही हैं?

नहीं। नाम मिलते-जुलते हैं पर भाषाएँ अलग हैं। जावा बाइटकोड में कंपाइल होती है और सख़्त टाइप वाली है; जावास्क्रिप्ट मुख्यतः ब्राउज़र में चलती है।

यह कहाँ पढ़ाया जाता है

सीबीएसई (भारत)कक्षा 11जावा के मूल तत्व
सीबीएसई (भारत)कक्षा 12जावा प्रोग्रामिंग के मूल तत्व

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ