Java | 空字符串与NULL的区别

空字符串

  • 类型: "" 是一个空字符串,长度为0,在内存中分配一个空间,可以使用 Object 对象中的方法。例如"".toString()
  • 内存分配Stirng str = "":表明声明一个字符串类型的引用,其值""为空字符串,这个 str 引用指向的是空字符串 "" 的内存空间

null

  • 类型:null 表明一个对象的值,不是一个字符串,并没有分配内存,比如String str = null
  • 内存分配String str = null:表明声明一个字符串对象的引用,但其指向一个null,也就是说没有指向任何内存空间
String str1 = ""     // str对应一个空串,声明对象的引用
String str2 = null   // str2引用为空
String str3 = new String()      //str3指向具体的String实例, 默认为""

**注意**:str1和str3都被实例化,都指向了内存中的空间,虽然str1和str2指向的地址不一样,但是值是一样的,都是"",而str2没有被实例化
复制代码

比较

由于 null 不是对象,"" 是对象,所以比较的方式是

str1.equals("")     //对象用equals方法来比较
str2 == null        //null用==来比较
复制代码

总结

  1. Java中有两种比较大小的方式:==equals方法,前者是根据地址来比较,只有地址和值都相等,则两者才相等;后者则是根据变量的值比较大小,只要值相等,两者便相等。
  2. 在Java中变量和变量引用都是存在栈 (stack) 中,而对象 (new出来的)都是存放在堆 (heap) 中的,例如: String a = new Stirng("ABC") //a存放在栈中,而ABC这个值存放在堆中,a指向ABC在堆中的地址

转载于:https://juejin.im/post/5a3613b7f265da430a50a870

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值