कैसे जांच करें कि कोई इंट अशक्त है या नहीं


110

मुझे एक वस्तु कहा जाता है Person

इसमें कई विशेषताएं हैं;

int id;
String name;

मैं एक व्यक्ति की तरह सेट वस्तु Person p = new Person(1,"Joe");

1.) मुझे जाँचने की ज़रूरत है कि क्या वस्तु अशक्त नहीं है; निम्नलिखित अभिव्यक्ति सही है;

if (person == null){
}

Or


if(person.equals(null))

2.) मुझे पता होना चाहिए कि क्या आईडी में इंट शामिल है।

if(person.getId()==null){} 

लेकिन, जावा इसकी अनुमति नहीं देता है। मैं यह कैसे कर सकता हूं?


10
जावा ही नहीं। एक आदिम प्रकार कहीं भी अशक्त नहीं हो सकता है।
रोहित जैन

2
हाँ, एक का डिफ़ॉल्ट मूल्य intहै 0?
शेरोन हॉक

1
@sharon। हां, यह 0. है, इसलिए आप 0इसके बजाय चेक कर सकते हैं । यदि आप अशक्त जाँच करना चाहते हैं। उसके लिए इंटेगर रैपर का इस्तेमाल करें।
रोहित जैन

3
पहचान कोड का उपयोग करने के लिए इंट का उपयोग करना हमेशा एक अच्छा विचार नहीं है क्योंकि आप इसे एक सच्चे नंबर के रूप में उपयोग नहीं कर रहे हैं - आप इसके साथ कोई जोड़ या घटाव या अन्य गणित संचालन नहीं करते हैं। इसके बजाय एक स्ट्रिंग का उपयोग करने पर विचार करें।
होल्सक्राफ्ट

जवाबों:


184

एक intअशक्त नहीं है, यह हो सकता है 0यदि प्रारंभ में नहीं।

यदि आप चाहते हैं कि एक पूर्णांक अशक्त होने में सक्षम हो, तो आपको Integerइसके बजाय उपयोग करने की आवश्यकता है int

Integer id;
String name;

public Integer getId() { return id; }

इसके अलावा कथन if(person.equals(null))सत्य नहीं हो सकता, क्योंकि यदि personअशक्त है, तो NullPointerExceptionउसे फेंक दिया जाएगा। तो सही अभिव्यक्ति हैif (person == null)


@SharonHwk "व्यक्ति == अशक्त" बेहतर विकल्प होना चाहिए। यदि व्यक्ति अशक्त है, तो उसके पास "समान" विधि नहीं होगी, तो "person.equals (अशक्त)" फेंकता है।
कोडिंगफैनस्टेव

"एक इंट अशक्त नहीं है, यह 0 हो सकता है यदि इसे आरंभीकृत नहीं किया गया है।" यह 100% सही नहीं है, एक स्थानीय चर के रूप में एक int initialized नहीं किया जाएगा।
Emerica

बेशक, स्थानीय चर के लिए एकरुपयोग नहीं किया जा सकता है, यह अमान्य कोड है, जावा इसकी अनुमति नहीं देगा, जैसा कि इसके विनिर्देश में घोषित किया गया है।
एलेक्स

48

आदिमों के पास शून्य मूल्य नहीं है। डिफ़ॉल्ट एक इंट के लिए 0 है।

if(person.getId()==0){}

जावा में प्राथमिकताओं के लिए डिफ़ॉल्ट मान:

Data Type   Default Value (for fields)

byte                0
short               0
int                 0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
boolean         false

ऑब्जेक्ट्स में डिफ़ॉल्ट मान के रूप में रिक्त है।

स्ट्रिंग (या कोई भी वस्तु) ---> अशक्त

1.) मुझे जाँचने की ज़रूरत है कि क्या वस्तु अशक्त नहीं है; निम्नलिखित अभिव्यक्ति सही है;

if (person == null){
}

यदि व्यक्ति अशक्त है तो कोड के ऊपर का चेक। आपको करने की जरूरत है

if (person != null){ // checks if person is not null
}

तथा

if(person.equals(null))

जब व्यक्ति अशक्त होगा तो उपरोक्त कोड NullPointerException को फेंक देगा।


धन्यवाद, यह बहुत उपयोगी है।
शेरोन हॉक

14

एक आदिम intअशक्त नहीं हो सकता। यदि आपको अशक्त चाहिए, तो Integerइसके बजाय उपयोग करें ।


3

1.) मुझे जाँचने की ज़रूरत है कि क्या वस्तु अशक्त नहीं है; निम्नलिखित अभिव्यक्ति सही है;

अगर (व्यक्ति == अशक्त) {}

हाँ । यह है कि आप कैसे जाँच करें कि क्या वस्तु है null

2.) मुझे पता होना चाहिए कि क्या आईडी में इंट शामिल है।

अगर (person.getId () == नल) {}

नहीं, क्योंकि इसे idआदिम के रूप में परिभाषित किया गया है int, यह डिफ़ॉल्ट रूप से आरंभिक 0होगा और यह कभी नहीं होगा null। आदिम प्रकारों की जांच करने की आवश्यकता नहीं है, यदि वे अशक्त हैं। वे कभी भी अशक्त नहीं होंगे। यदि आप चाहते हैं, तो आप डिफ़ॉल्ट मान के खिलाफ तुलना कर सकते हैं 0के रूप में if(person.getId()==0){}


0

आपको अपनी कक्षा में पहुंचना होगा।

इसे प्राप्त करने के लिए, आपको यह करना होगा:

person.id
person.name

कहाँ पे

व्यक्ति

आपके वर्ग के व्यक्ति का एक उदाहरण है।

यह किया जा सकता है अगर अटूट पहुंच प्राप्त किया जा सकता है, यदि नहीं, तो आपको बसने वालों और गेटर्स का उपयोग करना चाहिए ...


@ रोहितजैन मैं यह नहीं कह रहा हूं कि, यह कहना कि व्यक्ति के लिए पूछना सही नहीं है == nul अगर वह जानना चाहता है कि क्या आईडी "null" है। इस तथ्य के कारण कि आईडी एक इंट है, वह उस तरीके से नहीं पूछ सकता जिस तरह से आप सुझाव दे रहे हैं ...
melli-182

0

आप उपयोग कर सकते हैं

if (person == null || String.valueOf(person.getId() == null)) 

नियमित दृष्टिकोण के अलावा

person.getId() == 0

0

जावा में आदिम डेटा प्रकारों के लिए शून्य मान नहीं है। यदि आपको आदिम प्रकार के बजाय नल उपयोग की आवश्यकता है। आपको डेटा प्रकार अंतर के बारे में चिंता करने की आवश्यकता नहीं है। Java int आदिम प्रकार के डेटा को Integer में परिवर्तित करता है। जब मेमोरी के बारे में कहा जाता है तो इंटीजर इंट की तुलना में अधिक मेमोरी लेता है। लेकिन स्मृति आवंटन का अंतर, कुछ भी नहीं माना जाना चाहिए।

इस मामले में आपको इंट के बजाय इंटर का उपयोग करना चाहिए

नीचे स्निपेट का प्रयास करें और अधिक जानकारी के लिए उदाहरण देखें,

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

if (val != null){
System.out.println("value is not null");
}

`

इसके अलावा, आप नीचे के रूप में नल असाइन कर सकते हैं,

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