Java Tutorial in Hindi
जावा टाइप कास्टिंग और कन्वर्शन (Java Type Casting and Conversion in Hindi)
Table of Contents
- परिचय
- जावा में टाइप कास्टिंग क्या है? (Type Casting in Java in Hindi)
- जावा टाइप कास्टिंग सिंटैक्स
- जावा में टाइप कास्टिंग का उदाहरण
- जावा में टाइप कास्टिंग के प्रकार
- जावा टाइप कास्टिंग: वीडियो
- जावा में टाइप कन्वर्शन (Type Conversion in Java in Hindi)
- जावा में टाइप कास्टिंग vs टाइप कन्वर्शन के बीच अंतर
जावा टाइप कास्टिंग: वीडियो
जावा टाइपकास्ट से संबंधित अक्सर पूछे जाने वाले प्रश्न
हमें उन स्थितियों को संभालने के लिए जावा में टाइप कास्टिंग की आवश्यकता होती है जहां एक प्रकार के डेटा का उपयोग करने या किसी भिन्न प्रकार के वेरिएबल को असाइन करने की आवश्यकता होती है। टाइप कास्टिंग हमें यह सुनिश्चित करने की अनुमति देती है कि डेटा ठीक से परिवर्तित हो गया है और इच्छित ऑपरेशन के लिए अनुकूल है।
Implicit type casting, जिसे व्यापक कन्वर्शन के रूप में भी जाना जाता है, तब होता है जब जावा स्वचालित रूप से explicit कास्टिंग की आवश्यकता के बिना एक छोटे डेटा प्रकार को बड़े डेटा प्रकार में परिवर्तित करता है। यह सुरक्षित है क्योंकि इसमें डेटा लोस का कोई रिस्क नहीं है।
explicit type की कास्टिंग, जिसे narrowing conversion के रूप में भी जाना जाता है, तब होता है जब हम parentheses में लक्ष्य डेटा प्रकार का उपयोग करके मैन्युअल रूप से एक बड़े डेटा प्रकार को छोटे डेटा प्रकार में परिवर्तित करते हैं। इससे डेटा लोस हो सकती है, इसलिए जावा को इस conversion के लिए स्पष्ट विनिर्देश की आवश्यकता है।
अपकास्टिंग रिफरेन्स टाइप कास्टिंग का एक रूप है जहां आप एक सबक्लास के ऑब्जेक्ट को उसके सुपरक्लास के reference variable में निर्दिष्ट करते हैं। चूंकि सबक्लास इसके सुपरक्लास की विशेषज्ञता है, इसलिए अपकास्टिंग implicit और सुरक्षित है।
डाउनकास्टिंग reference type कास्टिंग का एक रूप है जहां आप सुपरक्लास के ऑब्जेक्ट को उसके सबक्लास के reference variable में परिवर्तित करते हैं। इसके लिए explicit कास्टिंग की आवश्यकता होती है और यदि referred ऑब्जेक्ट सबक्लास का उदाहरण नहीं है तो संभावित रूप से रनटाइम एरर का कारण बन सकता है।
जावा में टाइप कास्टिंग का मुख्य जोखिम डेटा लोस की संभावना है। बड़े डेटा प्रकार से छोटे डेटा प्रकार में कनवर्ट करते समय, वैल्यू छोटा हो सकता है या सटीकता खो सकता है। इसके अतिरिक्त, यदि referenced object target subclass का उदाहरण नहीं है, तो डाउनकास्टिंग से क्लासकास्टएक्सेप्शन हो सकता है।
नहीं, टाइप कास्टिंग केवल उन क्लासेज के बीच संभव है जिनका वैलिड संबंध है, जैसे inheritance (सबक्लास और सुपरक्लास) या इंटरफ़ेस इम्प्लीमेंटेशन।
हाँ, आप जावा में इंटरफ़ेस के कास्ट ऑब्जेक्ट टाइप कर सकते हैं। चूंकि एक क्लास कई इंटरफेस लागू कर सकता है, आप किसी ऑब्जेक्ट को एक विशिष्ट इंटरफ़ेस प्रकार के रूप में referred करने के लिए टाइप कास्टिंग का उपयोग कर सकते हैं, जिससे इंटरफ़ेस-विशिष्ट तरीकों तक एक्सेस सक्षम हो सके।
यदि टाइप कास्टिंग सही ढंग से नहीं की जाती है, तो इससे compilation errors या रनटाइम errors हो सकती हैं। प्रिमिटिव टाइप कास्टिंग के मामले में, incorrect conversions के परिणामस्वरूप unexpected results या डेटा लोस हो सकती है।
संदर्भ प्रकार की कास्टिंग के लिए, यदि कास्ट की गई object target type की नहीं है, तो ClassCastException हो सकती है। टाइप कास्टिंग करने से पहले डेटा प्रकारों की अनुकूलता सुनिश्चित करना आवश्यक है।
नहीं, टाइप कास्टिंग जावा में सभी डेटा प्रकारों पर लागू नहीं है। इसका उपयोग मुख्य रूप से प्रिमिटिव डेटा प्रकारों के बीच परिवर्तित करने और संबंधित क्लासेज (inheritance or interface implementation) की ऑब्जेक्ट को अपकास्टिंग और डाउनकास्टिंग करने के लिए किया जाता है।
एक स्ट्रिंग को इंट या इसके विपरीत में परिवर्तित करने के लिए टाइप कास्टिंग के बजाय parsing methods का उपयोग करने की आवश्यकता होती है। उदाहरण के लिए, एक स्ट्रिंग को इंट में बदलने के लिए, आप Integer.parseInt(String str) मेथड का उपयोग कर सकते हैं। किसी इंट को स्ट्रिंग में बदलने के लिए, आप String.valueOf(int num) का उपयोग कर सकते हैं या बस इंट को एक empty स्ट्रिंग के साथ जोड़ सकते हैं।
यदि आप जावा में incompatible type casting करने का प्रयास करते हैं, तो इसके परिणामस्वरूप compilation error होगी। कंपाइलर टाइप कास्टिंग की वैधता की जांच करता है और यह सुनिश्चित करता है कि यह इनहेरिटेंस और इंटरफ़ेस इम्प्लीमेंटेशन के नियमों का पालन करता है। यदि कास्टिंग की अनुमति नहीं है, तो कोड संकलित नहीं होगा।
डाउनकास्टिंग के दौरान संभावित ClassCastException को संभालने के लिए, आप instanceof कीवर्ड का उपयोग कर सकते हैं ताकि आप पूर्व-कास्टिंग से पहले ऑब्जेक्ट के टाइप की जाँच कर सकें। यह अच्छा प्रैक्टिस है कि आप डाउनकास्ट करने से पहले ऑब्जेक्ट को टारगेट क्लास या सबक्लास की एक इंस्टेंस है या नहीं, यह जाँच करें।
if (animalObj instanceof Dog) {
Dog dogObj = (Dog) animalObj;
// Now you can safely use dogObj
} else {
// Handle the case where animalObj is not a Dog
}
हां, आप Reference टाइप कास्टिंग के समान सिंटैक्स का उपयोग करके प्रिमिटिव डाटा टाइप्स के रैपर क्लासेज के बीच टाइप कास्टिंग कर सकते हैं।
Integer intValue = 42;
Double doubleValue = (Double) intValue; // Typecasting Integer to Double
जावा में arrays के साथ टाइप कास्टिंग में एक डेटा प्रकार की एक arrays को दूसरे डेटा प्रकार में परिवर्तित करना शामिल है। इसके लिए desired data type की एक नई arrays बनाने और मूल arrays से एलिमेंट की कॉपी बनाने की आवश्यकता होती है। यह प्रिमिटिव और reference types की तरह direct type की कास्टिंग नहीं है।
हाँ, टाइप कास्टिंग एक रनटाइम एक्सेप्शन का कारण बन सकती है जिसे ClassCastException कहा जाता है। यह डाउनकास्टिंग के दौरान होता है यदि संदर्भित ऑब्जेक्ट target subclass का उदाहरण नहीं है। इस एक्सेप्शन को रोकने के लिए, आपको डाउनकास्टिंग करने से पहले प्रकार की जांच करने के लिए इंस्टेंसऑफ़ कीवर्ड का उपयोग करना चाहिए।
Implicit type casting का उपयोग तब किया जाना चाहिए जब डेटा लॉस या exact problems का कोई जोखिम न हो। उदाहरण के लिए, एक इंट को लॉन्ग में या फ्लोट को डबल में परिवर्तित करना implicit कास्टिंग का उपयोग करके सुरक्षित रूप से किया जा सकता है।