java null empty_null和empty(“”)Java String之间的区别

问题

null和""(空字符串)有什么区别?

我写了一些简单的代码:

String a = "";

String b = null;

System.out.println(a==b); // false

System.out.println(a.equals(b)); // false

两个陈述都返回false。看来,我无法找到它们之间的实际区别。

#1 热门回答(186 赞)

""是一个实际的字符串,虽然是空字符串。

但是,null表示String变量指向任何内容。

a==b返回false,因为""和null不占用内存中的相同空间 - 换句话说,它们的变量不指向相同的对象。

a.equals(b)返回false,因为""显然不等于null。

不同之处在于,因为""是一个实际的字符串,你仍然可以调用它上面的方法或函数

a.length()``a.substring(0, 1)

等等。

如果String等于null,就像b一样,如果你尝试调用,Java会抛出aNullPointerException,比较说:

b.length()

如果你想知道的差异是==与等于,那就是:

==比较引用,就像我去了

String a = new String("");

String b = new String("");

System.out.println(a==b);

这会输出错误,因为我分配了两个不同的对象,而a和b指向不同的对象。

但请注意,Java确实有一个特殊的字符串。

String a = "abc";

String b = "abc";

System.out.println(a==b);

你会认为输出是false,因为它应该分配两个不同的字符串。实际上,Java willinternliteral Strings(在我们的例子中初始化为a和b的那些)。所以要小心,因为这可能会对==如何工作产生一些误报。

#2 热门回答(106 赞)

你也可以通过这种方式理解null和空字符串之间的区别:

914fb354-fd8c-468b-9ebc-dce14badb54b.jpg

#3 热门回答(13 赞)

String是一个Object,可以为null

null表示未实例化String对象

""是实例化的对象字符串的实际值,如"aaa"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值