(string == null)和(string.length()== 0)之间的区别?

时间:2018-05-18 05:58:29

标签: java string

当我用这两种方式编程时,我得到了不同的模拟结果:

if (S == null) {
        return new LinkedList<>();
    }

int len = S.length();
if(len == 0) return new LinkedList<>();

第一个代码给了我[&#34;&#34;],它通过了测试。虽然第二个给了我[],但失败了。 我还注意到还有另一种方式:S.isEmpty()

有人请解释一下吗?非常感谢!

7 个答案:

答案 0 :(得分:3)

String == null检查对象是否为null(没有,甚至不是空字符串)和String#length() == 0(实际上,您应该使用String#isEmpty())检查字符串对象有0个字符。此外,如果对象为null,则无法访问任何方法,它将抛出NullPointerException(或简称NPE)。

答案 1 :(得分:2)

如果传入第二个字符串的字符串为null,则应该发生异常,因为.length()在空字符串上调用时会抛出异常。

答案 2 :(得分:2)

  

(string == null)和(string.length()== 0)之间的区别?

非常不同。

当您检查true时,它会检查字符串引用是否指向任何现有对象。如果它没有引用任何对象,它将返回string.length() == 0

.length()只检查现有的String对象的 内容 ,看看它的长度是否为0.如果调用时{?}当前变量中没有对象1}},你得到一个NullPointerException

答案 3 :(得分:2)

S是一个引用变量(你应该用小写字母写)。

S(或更确切地说是s)引用提供方法长度()的对象。

如果s实际上是对象的引用,则只能访问s引用的对象。如果s为null(s == null),则s不引用对象,因此,不能调用方法length()。如果你尝试,你将得到一个NullPointerException。

当s引用一个对象时,可以在该对象上调用length方法。在这种情况下,它是一个字符串对象。字符串对象可能不存在任何字符(空字符串或&#34;&#34;)。

  • String s; // just a reference, initial value is null
  • s = ""; // s now references an empty string and is no longer null
  • new String(""); // create a new object with an empty string

在Java中,你从未真正使用过对象。您只能使用对象的引用,但在大多数情况下,它看起来好像您直接使用对象。

请记住,引用变量和对象实际上是针对不同的东西。

答案 4 :(得分:1)

如果String实例为nullmyInstance.length() == 0将抛出NullPointerException,因为您调用未实例化实例的实例成员并使应用程序崩溃。

因此,如果您不确定您的String实例是否已实例化,请始终执行null - 检查,或者更好地使用Java 8或更高版本,使用Optional来避免null's 1}}。

答案 5 :(得分:1)

S == null意味着如果您尝试打印某些内容,则不会发生任何事情(或者可能是nullPointerEcxeption),因为null表示此变量中没有任何内容。

String.lenght(S) == 0表示您的字符串等于&#39;&#39;

例如:

String S1 = '';
String S2 = null;
try{
  System.out.println(S1.length() == 0) {
  System.out.println('S1 is not null');
}catch(nullPointerExeption e){
  System.out.println('S1 is null');
}
try{
  System.out.println(S2.length())//it will throw you a java.nullpointerexcption
  System.out.println('S2 is not null');
}catch(nullPointerExeption e){
  System.out.println('S2 is null');
}

系统将写入

0
S1 is not null

S2 is null

答案 6 :(得分:-2)

创建新对象时,对象的值最初为null 像

String s=new String();

在这种情况下

s=null //but not s="";