मैं जावा में नल के खिलाफ एक स्ट्रिंग की जांच कैसे कर सकता हूं? मै इस्तेमाल कर रहा हूँ
stringname.equalsignorecase(null)
लेकिन यह काम नहीं कर रहा है।
मैं जावा में नल के खिलाफ एक स्ट्रिंग की जांच कैसे कर सकता हूं? मै इस्तेमाल कर रहा हूँ
stringname.equalsignorecase(null)
लेकिन यह काम नहीं कर रहा है।
जवाबों:
string == null
तुलना करता है यदि वस्तु अशक्त है। string.equals("foo")
उस वस्तु के अंदर के मूल्य की तुलना करता है। string == "foo"
हमेशा काम नहीं करता है, क्योंकि आप यह देखने की कोशिश कर रहे हैं कि ऑब्जेक्ट समान हैं, न कि वे मान जो वे प्रतिनिधित्व करते हैं।
दीर्घ उत्तर:
यदि आप यह कोशिश करते हैं, तो यह काम नहीं करेगा, जैसा कि आपने पाया है:
String foo = null;
if (foo.equals(null)) {
// That fails every time.
}
इसका कारण यह है कि फू शून्य है, इसलिए यह नहीं पता कि असमानता क्या है; असमानों से बुलाने के लिए कोई वस्तु नहीं है।
जो आप शायद चाहते थे:
String foo = null;
if (foo == null) {
// That will work.
}
स्ट्रिंग्स के साथ काम करते समय एक अशक्त के खिलाफ खुद को बचाने का विशिष्ट तरीका है:
String foo = null;
String bar = "Some string";
...
if (foo != null && foo.equals(bar)) {
// Do something here.
}
इस तरह, अगर फू शून्य था, तो यह सशर्त की दूसरी छमाही का मूल्यांकन नहीं करता है, और चीजें ठीक हैं।
यदि आप एक स्ट्रिंग शाब्दिक (एक चर के बजाय) का उपयोग कर रहे हैं, तो आसान तरीका है:
String foo = null;
...
if ("some String".equals(foo)) {
// Do something here.
}
यदि आप उस के आसपास काम करना चाहते हैं, तो Apache Commons में एक वर्ग है - StringUtils - जो अशक्त-सुरक्षित संचालन प्रदान करता है।
if (StringUtils.equals(foo, bar)) {
// Do something here.
}
एक अन्य प्रतिक्रिया मजाक कर रही थी, और कहा कि आपको यह करना चाहिए:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
कृपया ऐसा मत करो। आपको केवल उन त्रुटियों के लिए अपवाद फेंकना चाहिए जो असाधारण हैं; यदि आप अशक्त होने की उम्मीद कर रहे हैं, तो आपको समय से पहले इसकी जांच करनी चाहिए, और अपवाद को फेंकने नहीं देना चाहिए।
मेरे सिर में, इसके दो कारण हैं। पहले, अपवाद धीमे हैं; अशक्त के खिलाफ जाँच तेज है, लेकिन जब जेवीएम एक अपवाद फेंकता है, तो इसमें बहुत समय लगता है। दूसरा, कोड को पढ़ना और बनाए रखना बहुत आसान है यदि आप समय से पहले केवल नल पॉइंटर की जांच करते हैं।
s == null
काम नहीं करेगा?
equals()
करना होगा यदि आप मूल्यों की तुलना करना चाहते हैं । लेकिन अगर आप यह जांचना चाहते हैं कि एक चर है null
, तो आप उपयोग करते हैं ==
।
ज़रूर काम करता है। आपको कोड का एक महत्वपूर्ण हिस्सा याद आ रहा है। आपको बस इस तरह की आवश्यकता है:
boolean isNull = false;
try {
stringname.equalsIgnoreCase(null);
} catch (NullPointerException npe) {
isNull = true;
}
;)
Android में काम कर रहे हैं, तो TextUtils विधि का प्रयोग करें।
TextUtils.isEmpty (str) : स्ट्रिंग के शून्य या 0-लंबाई होने पर वापस लौटाता है। पैरामीटर: स्ट्रिंग की जांच की जाने वाली वापसी: सच है अगर str शून्य या शून्य लंबाई है
if(TextUtils.isEmpty(str)) {
// str is null or lenght is 0
}
नीचे इस पद्धति का स्रोत कोड है। आप direclty का उपयोग कर सकते हैं।
/**
* Returns true if the string is null or 0-length.
* @param str the string to be examined
* @return true if str is null or zero length
*/
public static boolean isEmpty(CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
यदि हम इक्वलाइंसकोर विधि के कार्यान्वयन को देखते हैं, तो हमें यह भाग मिलता है:
if (string == null || count != string.count) {
return false;
}
false
यदि यह तर्क है तो यह हमेशा वापस आ जाएगा null
। और यह स्पष्ट रूप से सही है, क्योंकि एकमात्र मामला जहां इसे वापस लौटना चाहिए true
जब equalsIgnoreCase को एक null String
, लेकिन एक पर लागू किया गया था
String nullString = null;
nullString.equalsIgnoreCase(null);
निश्चित रूप से एक NullPointerException में परिणाम होगा।
तो समान विधियों का परीक्षण करने के लिए डिज़ाइन नहीं किया गया है कि क्या कोई वस्तु अशक्त है, सिर्फ इसलिए कि आप उन पर आक्रमण नहीं कर सकते null
।
यह थोड़ा अजीब लगता है, लेकिन ...
stringName == null || "".equals(stringName)
कभी भी इस तरह से कोई समस्या नहीं थी, इसके अलावा संभावित अशक्त बिंदु अपवादों से बचने के लिए यह एक सुरक्षित तरीका है।
मुझे यकीन नहीं है कि MYYN के जवाब में क्या गलत था।
if (yourString != null) {
//do fun stuff with yourString here
}
उपरोक्त अशक्त जाँच काफी ठीक है।
यदि आप जांचने की कोशिश कर रहे हैं कि क्या स्ट्रिंग संदर्भ समान है (मामले को अनदेखा कर रहा है) जो आपको पता है कि यह एक शून्य संदर्भ नहीं है, तो कुछ इस तरह से करें:
String x = "this is not a null reference"
if (x.equalsIgnoreCase(yourStringReferenceThatMightBeNull) ) {
//do fun stuff
}
यदि आपके द्वारा तुलना की जा रही दोनों स्ट्रिंग्स के लिए आपके पास अशक्त संदर्भ हैं या नहीं, इस बारे में कोई संदेह है, तो आपको NullPointerException की संभावना से बचने के लिए उनमें से कम से कम एक पर एक अशक्त संदर्भ की जांच करनी होगी।
यदि आपके स्ट्रिंग में "अशक्त" मान है, तो आप उपयोग कर सकते हैं
if(null == stringName){
[code]
}
else
[Error Msg]
इसे अपनी कक्षा में आयात करें
import org.apache.commons.lang.StringUtils;
फिर इसका उपयोग करें, वे दोनों सच वापस आ जाएंगे
System.out.println(StringUtils.isEmpty(""));
System.out.println(StringUtils.isEmpty(null));
बेशक user351809, stringname.equalsignorecase(null)
NullPointerException को फेंक देगा।
देखें, आपके पास एक स्ट्रिंग ऑब्जेक्ट है stringname
, जो 2 संभावित स्थितियों का अनुसरण करता है: -
stringname
कुछ गैर-शून्य स्ट्रिंग मान है ("कंप्यूटर" कहें): "computer".equalsignorecase(null)
false
।stringname
एक null
मान है: null.equalsignorecase(null)
true
, null
एक ऐसा equalsignorecase()
तरीका नहीं है जो विधि को निष्पादित कर सकता है ।इसलिए, आपको मामले के कारण अपवाद मिलता है। 2.
मैं आपको जो सुझाव देता हूं वह बस उपयोग करना हैstringname == null
सरल विधि:
public static boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
यदि value
लौटाया गया अशक्त है, तो उपयोग करें:
if(value.isEmpty());
कुछ समय के लिए अशक्त, if(value == null)
जावा में, यह सच भी नहीं दे सकता है स्ट्रिंग भी अशक्त है।
if(value.isEmpty())
देता है NullPointerException
। इस मामले में बेहतर उपयोग कर रहा हैif(value == null)
जावा 7 के साथ आप उपयोग कर सकते हैं
if (Objects.equals(foo, null)) {
...
}
true
यदि दोनों पैरामीटर हैं तो वापस आ जाएंगे null
।
मुझे लगता है कि यह एक लंबे समय से पहले उत्तर दिया गया था, लेकिन मैंने इस पोस्ट को नहीं देखा है, इसलिए मैंने सोचा कि मैं जो करता हूं उसे साझा करूंगा। यह कोड पठनीयता के लिए विशेष रूप से अच्छा नहीं है, लेकिन यदि आप अशक्त चेक की एक श्रृंखला कर रहे हैं, तो मुझे उपयोग करना पसंद है:
String someString = someObject.getProperty() == null ? "" : someObject.getProperty().trim();
इस उदाहरण में, ट्रिम को स्ट्रिंग पर कहा जाता है, जो स्ट्रिंग या अशक्त होने पर NPE को फेंक देता है, लेकिन उसी पंक्ति में, आप नल या रिक्त की जांच कर सकते हैं ताकि आप एक टन के साथ समाप्त न हों (अधिक ) अगर ब्लॉक करने के लिए प्रारूपण करना मुश्किल है।
अगर मैं सही तरीके से समझूं, तो यह करना चाहिए:
if(!stringname.isEmpty())
// an if to check if stringname is not null
if(stringname.isEmpy())
// an if to check if stringname is null
खैर, पिछली बार किसी ने यह मूर्खतापूर्ण सवाल पूछा था, जवाब था:
someString.equals("null")
यह "फिक्स" केवल पहली जगह में कैसे null
हो जाता है की बड़ी समस्या को छुपाता है "null"
।
इसे करने के दो तरीके हैं। Say String == null या string.equals () ।।
public class IfElse {
public int ifElseTesting(String a){
//return null;
return (a== null)? 0: a.length();
}
}
public class ShortCutifElseTesting {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("enter the string please:");
String a=scanner.nextLine();
/*
if (a.equals(null)){
System.out.println("you are not correct");
}
else if(a.equals("bangladesh")){
System.out.println("you are right");
}
else
System.out.println("succesful tested");
*/
IfElse ie=new IfElse();
int result=ie.ifElseTesting(a);
System.out.println(result);
}
}
इस उदाहरण की जांच करें..यदि इरेस के शॉर्टकट संस्करण का एक और उदाहरण है।