खोज…


वाक्य - विन्यास

  • टारगेट टाइप लक्ष्य = (सोर्सटाइप) स्रोत;

गैर-संख्यात्मक आदिम कास्टिंग

boolean प्रकार को किसी अन्य आदिम प्रकार से / के लिए नहीं डाला जा सकता है।

यूनिकोड द्वारा निर्दिष्ट कोड-पॉइंट मैपिंग का उपयोग करके किसी भी संख्यात्मक प्रकार से / के लिए एक char डाला जा सकता है। एक char को एक अहस्ताक्षरित 16-बिट पूर्णांक मान (2 बाइट्स) के रूप में मेमोरी में दर्शाया जाता है, इसलिए byte (1 बाइट) के लिए कास्टिंग उन बिट्स में से 8 को गिरा देगा (यह ASCII वर्णों के लिए सुरक्षित है)। Character वर्ग की उपयोगिता विधियाँ कोड-पॉइंट मानों से / से स्थानांतरित करने के लिए int (4 बाइट्स) का उपयोग करती हैं, लेकिन एक short (2 बाइट्स) भी यूनिकोड कोड-पॉइंट को संग्रहीत करने के लिए पर्याप्त होगी।

int badInt   = (int)  true; // Compiler error: incompatible types

char char1   = (char)   65; // A
byte byte1   = (byte)  'A'; // 65
short short1 = (short) 'A'; // 65
int int1     = (int)   'A'; // 65

char char2   = (char) 8253; // ‽
byte byte2   = (byte)  '‽'; // 61 (truncated code-point into the ASCII range)
short short2 = (short) '‽'; // 8253
int int2     = (int)   '‽'; // 8253

न्यूमेरिक आदिम कास्टिंग

न्यूमेरिक प्रिमिटिव्स को दो तरह से कास्ट किया जा सकता है। इंप्लसिट कास्टिंग तब होती है जब स्रोत प्रकार में लक्ष्य प्रकार की तुलना में छोटी सीमा होती है।

//Implicit casting
byte byteVar = 42;
short shortVar = byteVar;
int intVar = shortVar;
long longVar = intvar;
float floatVar = longVar;
double doubleVar = floatVar;

जब स्रोत प्रकार में लक्ष्य प्रकार की तुलना में बड़ी सीमा होती है, तो स्पष्ट कास्टिंग करना पड़ता है।

//Explicit casting
double doubleVar = 42.0d;
float floatVar = (float) doubleVar;
long longVar = (long) floatVar;
int intVar = (int) longVar;
short shortVar = (short) intVar;
byte byteVar = (byte) shortVar;

जब फ़्लोटिंग पॉइंट प्राइमिटिव्स ( float , double ) को पूरी संख्या में प्राइमेटाइज़ करते हैं, तो संख्या को गोल किया जाता है

ऑब्जेक्ट कास्टिंग

आदिम के साथ के रूप में, वस्तुओं को स्पष्ट रूप से और अंतर्निहित रूप से डाला जा सकता है।

इंप्लिमेंट कास्टिंग तब होती है जब स्रोत प्रकार का विस्तार होता है या लक्ष्य प्रकार को लागू करता है (सुपरक्लास या इंटरफ़ेस पर कास्टिंग)।

जब स्रोत प्रकार बढ़ाया जाता है या लक्ष्य प्रकार (एक उपप्रकार के लिए कास्टिंग) द्वारा कार्यान्वित किया जाता है तो स्पष्ट कास्टिंग करना पड़ता है। यह रनटाइम अपवाद ( ClassCastException ) का उत्पादन कर सकता है जब डाली जा रही वस्तु लक्ष्य प्रकार (या लक्ष्य का उप योग) की नहीं है।

Float floatVar = new Float(42.0f);
Number n = floatVar;                //Implicit (Float implements Number)
Float floatVar2 = (Float) n;        //Explicit
Double doubleVar = (Double) n;      //Throws exception (the object is not Double)

बेसिक न्यूमेरिक प्रमोशन

 static void testNumericPromotion() {

    char char1 = 1, char2 = 2;
    short short1 = 1, short2 = 2;
    int int1 = 1, int2 = 2;
    float float1 = 1.0f, float2 = 2.0f;

    // char1 = char1 + char2;      // Error: Cannot convert from int to char;
    // short1 = short1 + short2;   // Error: Cannot convert from int to short;
    int1 = char1 + char2;          // char is promoted to int.
    int1 = short1 + short2;        // short is promoted to int.
    int1 = char1 + short2;         // both char and short promoted to int.
    float1 = short1 + float2;      // short is promoted to float.
    int1 = int1 + int2;            // int is unchanged.
}

अगर किसी वस्तु को उदाहरण के रूप में इस्तेमाल किया जा सकता है तो परीक्षण करना

यदि कोई वस्तु किसी विशेष प्रकार की है, या उस प्रकार का उपवर्ग है, तो परीक्षण करने के instanceof जावा instanceof ऑपरेटर प्रदान करता है। प्रोग्राम तब उस ऑब्जेक्ट को अपने अनुसार बनाने या न चुनने का विकल्प चुन सकता है।

Object obj = Calendar.getInstance();
long time = 0;

if(obj instanceof Calendar)
{
    time = ((Calendar)obj).getTime();
}
if(obj instanceof Date)
{
    time = ((Date)obj).getTime(); // This line will never be reached, obj is not a Date type.
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow