Avatar ·

जावा में कंपाउंड असाइनमेंट ऑपरेटर्स (+=, -=, *=) को टाइप कास्टिंग की आवश्यकता क्यों नहीं होती?

सभी को नमस्कार! मैंने अभी-अभी जावा सीखना शुरू किया है और मुझे एक अजीब व्यवहार का सामना करना पड़ा। जब मैं सामान्य असाइनमेंट लिखता हूं, उदाहरण के लिए: int a = 5; a = a + 3.5; // कंपाइलेशन एरर: प्रिसिजन लॉस तो कंपाइलर शिकायत करता है कि बिना स्पष्ट कास्टिंग के double को int में असाइन नहीं किया जा सकता। यह तार्किक है। लेकिन अगर मैं कंपाउंड ऑपरेटर += का उपयोग करता हूं: int a = 5; a += 3.5; // काम करता है! परिणाम 8 यहां मैं उलझन में हूं। दूसरे मामले में कंपाइलर कास्ट की मांग क्यों नहीं करता? आखिरकार, int और double के जोड़ का परिणाम double है, और हम इसे int में असाइन करते समय खो रहे हैं। सिद्धांत रूप में, पहले उदाहरण की तरह एरर होनी चाहिए। ऐसा क्यों है? क्या यह भाषा की विशेषता है या मैं कुछ भूल रहा हूं? ऐसे ऑपरेटरों का उपयोग करते समय क्या नुकसान हैं? उदाहरण के लिए, अगर मैं लिखूं: short s = 1; s += 1; // क्या यह काम करेगा? या: byte b = 127; b += 1; // यहां क्या होगा? विस्तृत स्पष्टीकरण के लिए आभारी रहूंगा, अधिमानतः उदाहरणों के साथ। पहले से धन्यवाद! <<>>

भाषा की विशेषता: अंतर्निहित कास्टिंग