空和空(“)Java字符串的区别

空和空(“)Java字符串的区别

.之间的区别是什么?null""(空字符串)?

我写了一些简单的代码:

String a = "";String b = null;System.out.println(a == b); // falseSystem.out.println(a.equals(b)); // false

两个语句都返回false..看来,我找不到他们之间的实际区别。


蝴蝶刀刀
浏览 412回答 3
3回答

精慕HU

“是一个实际的字符串,尽管是空字符串。但是,NULL意味着字符串变量指向空。a==b返回false,因为“和NULL不占用内存中相同的空间-换句话说,它们的变量不指向相同的对象。a.equals(b)返回false,因为“显然不等于NULL。不同之处在于,由于“是一个实际的字符串,所以仍然可以在其上调用方法或函数,例如a.length()a.substring(0, 1)诸若此类。如果字符串等于NULL,就像b一样,Java将抛出一个NullPointerException如果您试图调用,请说:b.length()如果您想知道的区别是=与相等,则如下所示:=比较引用,就像我去String a = new String("");String b = new String("");System.out.println(a==b);这将输出false,因为我分配了两个不同的对象,而a和b指向不同的对象。然而,a.equals(b)在本例中,将返回true,因为equals因为Strings将返回true当且仅当参数字符串不是NULL并且表示相同的字符序列。但是,请注意,Java确实有字符串的特例。String a = "abc";String b = "abc";System.out.println(a==b);你会认为输出false,因为它应该分配两个不同的字符串。实际上,Java会实习生文字字符串(在我们的示例中初始化为a和b的字符串)。所以要小心,因为这可能会在=的工作方式上产生一些错误的结果。

蛊毒传说

你的陈述告诉你的只是“和NULL不一样-这是真的。“”为空字符串;NULL表示未分配任何值。也许更有启发性的是:System.out.println(a.length()); // 0 System.out.println(b.length()); // error; b is not an object“仍然是一个字符串,意味着您可以调用它的方法并获得有意义的信息。NULL是一个空变量-实际上什么都没有。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java