Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java में वाइडनिंग कास्टिंग (इम्प्लिसिट) और नैरोइंग कास्टिंग (एक्सप्लिसिट) में क्या अंतर है?


जावा में टाइप कास्टिंग का उपयोग एक प्रकार के ऑब्जेक्ट्स या वेरिएबल्स को दूसरे प्रकार में कन्वर्ट करने के लिए किया जाता है। जब हम एक डेटा टाइप को दूसरे में कन्वर्ट या असाइन कर रहे होते हैं तो वे कम्पेटिबल नहीं हो सकते। यदि यह उपयुक्त है तो यह सुचारू रूप से होगा अन्यथा डेटा लॉस की संभावना है।

Java में टाइप कास्टिंग के प्रकार

Java टाइप कास्टिंग को दो प्रकारों में वर्गीकृत किया गया है।

  • वाइडनिंग कास्टिंग (इम्प्लिसिट) - ऑटोमेटिक टाइप कन्वर्जन
  • नैरोइंग कास्टिंग (एक्सप्लिसिट) - एक्सप्लिसिट कन्वर्जन की आवश्यकता

वाइडनिंग कास्टिंग (छोटे से बड़े प्रकार)

वाइडनिंग टाइप कन्वर्जन तब हो सकता है जब दोनों प्रकार कम्पेटिबल हों और टारगेट प्रकार स्रोत प्रकार से बड़ा हो। वाइडनिंग कास्टिंग तब होती है जब दो प्रकार कम्पेटिबल हों और टारगेट प्रकार स्रोत प्रकार से बड़ा हो।

उदाहरण 1

public class ImplicitCastingExample {
    public static void main(String args[]) {
        byte i = 40;
        // नीचे दिए गए कन्वर्जन के लिए कास्टिंग की आवश्यकता नहीं
        short j = i;
        int k = j;
        long l = k;
        float m = l;
        double n = m;
        System.out.println("byte value : "+i);
        System.out.println("short value : "+j);
        System.out.println("int value : "+k);
        System.out.println("long value : "+l);
        System.out.println("float value : "+m);
        System.out.println("double value : "+n);
    }
}

आउटपुट

byte value : 40
short value : 40
int value : 40
long value : 40
float value : 40.0
double value : 40.0

क्लास टाइप की वाइडनिंग कास्टिंग

नीचे दिए गए उदाहरण में, Child क्लास छोटा प्रकार है जिसे हम Parent क्लास टाइप को असाइन कर रहे हैं जो एक बड़ा प्रकार है इसलिए कास्टिंग की आवश्यकता नहीं है।

उदाहरण 2

class Parent {
    public void display() {
        System.out.println("Parent class display() called");
    }
}
public class Child extends Parent {
    public static void main(String args[]) {
        Parent p = new Child();
        p.display();
    }
}

आउटपुट

Parent class display() method called

नैरोइंग कास्टिंग (बड़े से छोटे प्रकार)

जब हम एक बड़े प्रकार को छोटे प्रकार में असाइन कर रहे होते हैं, तो एक्सप्लिसिट कास्टिंग आवश्यक होती है।

उदाहरण 1

public class ExplicitCastingExample {
    public static void main(String args[]) {
        double d = 30.0;
        // नीचे दिए गए कन्वर्जन के लिए एक्सप्लिसिट कास्टिंग आवश्यक है
        float f = (float) d;
        long l = (long) f;
        int i = (int) l;
        short s = (short) i;
        byte b = (byte) s;
        System.out.println("double value : "+d);
        System.out.println("float value : "+f);
        System.out.println("long value : "+l);
        System.out.println("int value : "+i);
        System.out.println("short value : "+s);
        System.out.println("byte value : "+b);
    }
}

आउटपुट

double value : 30.0
float value : 30.0
long value : 30
int value : 30
short value : 30
byte value : 30

क्लास टाइप की नैरोइंग

जब हम बड़े प्रकार को छोटे प्रकार में असाइन कर रहे होते हैं, तो हमें इसे एक्सप्लिसिटली टाइपकास्ट करने की आवश्यकता होती है।

उदाहरण 2

class Parent {
    public void display() {
        System.out.println("Parent class display() method called");
    }
}
public class Child extends Parent {
    public void display() {
        System.out.println("Child class display() method called");
    }
    public static void main(String args[]) {
        Parent p = new Child();
        Child c = (Child) p;
        c.display();
    }
}

आउटपुट

Child class display() method called

  1. Java में JTextField और JTextArea में क्या अंतर है? Java में JTextField और JTextArea में क्या अंतर है?

    Java में JTextField और JTextArea के बीच मुख्य अंतर यह है कि एक JTextField GUI एप्लिकेशन में टेक्स्ट की सिंगल लाइन एंटर करने की अनुमति देता है जबकि JTextArea GUI एप्लिकेशन में टेक्स्ट की मल्टीपल लाइन्स एंटर करने की अनुमति देता है। JTextField एक JTextField सबसे महत्वपूर्ण कंपोनेंट्स में से एक है जो

  1. Java में JFrame और JDialog में क्या अंतर है? Java में JFrame और JDialog में क्या अंतर है?

    JFrame फ्रेम में जोड़े गए कंपोनेंट्स को इसकी सामग्री कहा जाता है, इन्हें contentPane द्वारा प्रबंधित किया जाता है। JFrame में कंपोनेंट जोड़ने के लिए, हमें इसके contentPane का उपयोग करना चाहिए। एक JFrame में टाइटल, बॉर्डर, (वैकल्पिक) मेनू बार और यूज़र-स्पेसिफाइड कंपोनेंट्स के साथ एक विंडो होती है। ए

  1. Java में GridLayout और GridBagLayout में क्या अंतर है? Java में GridLayout और GridBagLayout में क्या अंतर है?

    एक GridLayout सभी कंपोनेंट्स को एक आयताकार ग्रिड में रखता है और इसे समान आकार के आयतों में विभाजित करता है और प्रत्येक कंपोनेंट को एक आयत के अंदर रखा जाता है जबकि GridBagLayout एक लचीला लेआउट मैनेजर है जो कंपोनेंट्स को वर्टिकली और हॉरिजॉन्टली संरेखित करता है बिना यह आवश्यकता के कि कंपोनेंट्स समान आक