Java中String类的isEmpty()方法、“ “以及null的区别

内存分配

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中String类的isEmpty()方法、" "以及null的区别

今天在做一道题的时候遇到了这么一个问题,“如果用户输入空字符串而不是名字,程序应在屏幕上显示数据并终止运行。”(最后有说明解决办法)

刚开始的时候我是这么判断的if(name.isEmpty()) break;,结果显示报错。然后再次使用if(name.equals(" ")) break;, 依旧结果显示报错且差不多相同。再用if(name = null) break;,显然输入名字后和不输入名字都可以显示,只是null的时候显示空而已,但是不会报错。

按照上述只用其中一种办法是不能完成该题的要求的,然后在别人的博客上看到了这样的结论:

isEmpty()分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空)
" "分配了内存空间,值为空字符串,是相对的空,是一种有值(值 = 空字串)
null是未分配内存空间,无值,是一种无值(值不存在)

对于此结果,我验证了一下:

 package su;

public class text {
    public static void main(String[] args) {
        String a = new String();
        String b = "";
        String c = null;
        if (a.isEmpty()) {
            System.out.println("String a = new String");
        }

        if (b.isEmpty()) {
            System.out.println("String b = \"\"");
        }

        if (c == null) {
            System.out.println("String c =null");
        }

        if (null == a) {
            System.out.println("String a =null");
        }

        if (a == "") {
            System.out.println("a = ''");
        }
        if (a.equals("")){
            System.out.println("a = ''");
        }
    }
}

结果显示:

String a = new String
String b = ""
String c =null
a = ''
验证结果:上述结论正确,但还需要注意a.equals(" ")与a.isEmpty( )结果一致(除了内存地址不一样),而且isEmpty( )不能用来判断null,会报空指针异常
对于开头说的那个题目要求,最后是这样完成的
if (name ==null || name.isEmpty()) break;

或者

if (name ==null || name.equals()) break;

(ps:目前处于学习阶段,如有错误或见解望评论告知,谢谢惹!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值