String类的isEmpty()、null和“”的区别

String类的isEmpty()、null和“”都有的含义,但三者是不同的。

demo代码:

为了更清晰的看三者的区别,可以写一个demo,如下:

要注意如果string为null,不能对其调用isEmpty方法和equals方法,会报错:
在这里插入图片描述

package Tests;

/**
 * @author zhangjie
 * @date 2020/9/13
 */
public class StringEmptyDemo {
    public static void main(String[] args){
        String a = new String();
        String b = "";
        String c = null;
        testString(a);
        testString(b);
        testString(c);
        String d = "a";
        testString(d.substring(0,0));
        System.out.println(null+"abc");
        System.out.println(c);
    }
    public static void testString(String string){
        if(string == null){
            System.out.println("null");
        }
        if(string != null && string.isEmpty()){
            System.out.println("is empty");
        }
        if(string != null && string.equals("")){
            System.out.println("\"\"");
        }
        System.out.println("————————————————————");
    }
}

运行结果:

is empty
""
————————————————————
is empty
""
————————————————————
null
————————————————————
is empty
""
————————————————————
nullabc
null

结论:

  • String a = new String();
    字符串对象的引用a 是有效指针,字符串对象a 分配了内存空间,并且指向的内容为空字符串(在java没有指针的说法,但这样理解更好)
  • String b = "";
    字符串对象的引用b 是有效指针,字符串对象b 分配了内存空间,并且指向的内容为空字符串
  • String c = null;
    字符串对象的引用c 是空指针, 字符串对象c未分配内存空间

总结:

判断一个 String 变量是否是空对象:
使用变量与 null 进行 == 比较,不能使用 equals()、isEmpty()、"" 等进行判断,因为空对象还未被实例化。
判断一个 String 变量是否是空值:
equals("") 方法比较对象的内容是否为空值;
length() == 0 来判断 String 的字符个数是否为0;
isEmpty() 方法来判断 String 对象的字符个数是否为0。
ps:isEmpty的实现原理其实是调用 length() == 0 。

substring后不会为null,而是""

对于 String 的 + 操作符来说,如果有一个操作数是 String,其他操作数会被转换成 String。特别注意,null 与字符串 “XXXX” + 操作会变成 “nullXXXX”。

Java String 的 isEmpty() 与 null 与 “” 区别解析
Java String类的isEmpty(),null的区别

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值