जावा में 'बूलियन' और 'बूलियन' का डिफ़ॉल्ट मान


260

जावा में boolean(आदिम) और Boolean(आदिम आवरण) के डिफ़ॉल्ट मान क्या हैं ?

जवाबों:



390

किसी भी का डिफ़ॉल्ट मान Object, जैसे Boolean, है null

एक के लिए डिफ़ॉल्ट मान booleanगलत है।

नोट: प्रत्येक आदिम में एक आवरण वर्ग होता है। हर रैपर एक संदर्भ का उपयोग करता है जिसका डिफ़ॉल्ट है null। प्राथमिकताओं के अलग-अलग डिफ़ॉल्ट मूल्य हैं:

boolean -> false

byte, char, short, int, long -> 0

float, double -> 0.0

नोट (2): void में एक रैपर होता है Voidजिसका डिफ़ॉल्ट भी होता है nullऔर यह केवल संभव मूल्य (हैक्स का उपयोग किए बिना) है।


2
मुझे लगता है कि कोई भी उल्लेख कर सकता Booleanहै Object, जो पहली पंक्ति का अर्थ स्पष्ट करेगा। यह बहुत बुनियादी लगता है, लेकिन किसी को इस तरह एक बुनियादी सवाल पूछने के लिए यह मदद कर सकता है।
सुमा

23

बूलियन या
हो सकता है । डिफ़ॉल्ट मान है ।truefalse
false

(स्रोत: जावा आदिम चर )

बूलियन
एक हो सकता है Booleanवस्तु का प्रतिनिधित्व करने trueया false, या हो सकता है null
डिफ़ॉल्ट मान है null


17

यदि आपको पूछने की आवश्यकता है, तो आपको अपने क्षेत्रों / चर को स्पष्ट रूप से आरंभ करने की आवश्यकता है, क्योंकि यदि आपको इसे देखना है, तो संभावना है कि किसी और को भी ऐसा करने की आवश्यकता है।

एक आदिम के लिए मूल्य booleanगलत है जैसा कि यहां देखा जा सकता है

जैसा कि दूसरों ने उल्लेख किया है कि Booleanडिफ़ॉल्ट रूप से वसीयत का मूल्य शून्य होगा।


आधिकारिक स्रोत के संदर्भ के लिए धन्यवाद। आरंभीकरण के रूप में, ज्ञान की कमी के लिए क्षतिपूर्ति करने की आवश्यकता नहीं है।
13

2
'ज्ञान की कमी' का अर्थ है कि तुलना करने के लिए कुछ अपेक्षित स्तर है। यदि यह न्यूनतम ज्ञान स्तर स्पष्ट है, तो मैं सहमत हूं। यदि नहीं, तो मुझे और अधिक स्पष्ट होने के लिए गलत समझ लेना चाहिए। इस सब में एक व्यक्तिगत / टीम निर्णय / राय है।
पीटर टिलेमैन्स

4
@ बीएलओ - मुझे लगता है कि ज्ञान की संभावित कमी की भरपाई करने में कुछ भी गलत नहीं है। आप नहीं जानते कि लाइन के नीचे आपका कोड कौन बनाए रखेगा। कुछ भी जो आपके कोड को आसानी से समझने और / या पढ़ने योग्य बनाता है, जबकि प्रदर्शन पर बहुत कम प्रभाव पड़ता है, केवल एक अच्छी बात हो सकती है।
फेरेकडोली

9

बूलियन एक वस्तु है। तो अगर यह एक इंस्टेंस वैरिएबल है तो यह शून्य हो जाएगा। यदि यह एक विधि के भीतर घोषित किया जाता है, तो आपको इसे प्रारंभ करना होगा, या एक कंपाइलर त्रुटि होगी।

यदि आप एक आदिम यानी बूलियन के रूप में घोषित करते हैं। यदि यह एक उदाहरण चर (या वर्ग चर) है तो मान डिफ़ॉल्ट रूप से गलत होगा। यदि यह एक विधि के भीतर घोषित किया जाता है, तो आपको अभी भी इसे सही या गलत के लिए शुरू करना होगा, या एक संकलक त्रुटि होगी।


6

एक अनधिकृत Booleanसदस्य (वास्तव में एक प्रकार की वस्तु का संदर्भ Boolean) का डिफ़ॉल्ट मान होगा null

एक अनधिकृत boolean(आदिम) सदस्य का डिफ़ॉल्ट मान होगा false


4

के लिए कोई डिफ़ॉल्ट नहीं है BooleanBooleanएक booleanया एक के साथ निर्माण किया जाना चाहिए String। यदि वस्तु अनधिकृत है, तो यह इंगित करेगा null

आदिम booleanका डिफ़ॉल्ट मान है false

http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypet.html


मुझे लगता है कि वे 3 डाउनवोट हैं क्योंकि आप कहते हैं कि "कोई डिफ़ॉल्ट नहीं है" जो कि काफी अस्पष्ट कथन है। जैसा कि आप कहते हैं, एक uninitialized ऑब्जेक्ट संदर्भ बिंदु nullnullडिफ़ॉल्ट है, इसलिए मुझे यकीन नहीं है कि जब आप कहते हैं कि आप एक नहीं हैं। (क्या आपका मतलब कुछ ऐसा है जैसे " Booleanन तो है trueऔर न ही falseडिफ़ॉल्ट रूप से"?)
रेडियोडफ

हां, आप जो डालते हैं वह अधिक सटीक है। पहले से ही एक स्वीकृत उत्तर है जो अधिक संक्षिप्त है। मुझे यकीन नहीं है कि किसी पोस्ट को डाउनवोट करने और उसे संपादित करने से दोनों को क्या हासिल होता है।
चुपके रब्बी

1
स्पष्ट करने के लिए, मैं नीचे नहीं गया और मेरा संपादन पूरी तरह से मेरी टिप्पणी से संबंधित नहीं था। यदि आप उस सुझाई गई चेतावनियों का अनुमोदन करते हैं, तो मैं उत्तर को संपादित करने की सलाह दूंगा और फिर हम अपनी टिप्पणियों को साफ करने के लिए हटा सकते हैं।
रेडियोडफ

1
class BooleanTester
{
    boolean primitive;
    Boolean object;

    public static void main(String[] args) {
        BooleanTester booleanTester = new BooleanTester();
        System.out.println("primitive: " + booleanTester.getPrimitive());
        System.out.println("object: " + booleanTester.getObject());
}

    public boolean getPrimitive() {
        return primitive;
    }

    public Boolean getObject() {
        return object;
    }
}

उत्पादन:

primitive: false
object: null

यह स्पष्ट प्रतीत होता है, लेकिन मेरे पास एक ऐसी स्थिति थी जहां जैक्सन ने जेन्सन के लिए एक वस्तु को क्रमबद्ध करते हुए, एक गेटवे को कॉल करने के बाद एक एनपीई फेंक रहा था, बस इस तरह, कि एक आदिम बूलियन लौटाता है जिसे असाइन नहीं किया गया था। इसने मुझे विश्वास दिलाया कि जैक्सन एक अशक्त प्राप्त कर रहा था और इस पर एक विधि को कॉल करने की कोशिश कर रहा था, इसलिए एनपीई। मैं गलत था।

कहानी की नैतिकता यह है कि जब जावा एक आदिम के लिए मेमोरी आवंटित करता है, तो उस मेमोरी का एक मूल्य होता है भले ही वह आरंभीकृत न हो, जो जावा बूलियन के लिए झूठे के बराबर हो। इसके विपरीत, जब एक बूलियन की तरह एक असंगठित जटिल वस्तु के लिए स्मृति आवंटित करते हैं, तो यह केवल उस वस्तु के संदर्भ के लिए स्थान आवंटित करता है, न कि वस्तु ही - संदर्भित करने के लिए स्मृति में कोई वस्तु नहीं है - इसलिए अशक्त में उस संदर्भ परिणाम को हल करना।

मुझे लगता है कि सख्ती से बोलना, "झूठ के लिए चूक" निशान से थोड़ा दूर है। मुझे लगता है कि जावा मेमोरी को आवंटित नहीं करता है और इसे तब तक गलत मान देता है जब तक कि यह स्पष्ट रूप से सेट न हो; मुझे लगता है कि जावा मेमोरी को आवंटित करता है और जो भी मेमोरी होती है वह 'असत्य' के मान के समान होती है। लेकिन व्यावहारिक उद्देश्य के लिए वे एक ही चीज हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.