NULL和" "的区别

本文详细解释了null与空字符串的区别,包括它们在内存中的表现形式、如何进行正确的比较操作,以及在Java中使用时可能遇到的空指针异常等问题。

  • 两者的区别与 “数字0和没有不是同一种概念”是一个道理。

             null是空对象,

             ""是空字符串

  • null可以赋值给任何对象,而""就不行了,只能赋值给字符串对象
            如:
                   String s=null;//定义了一个对象实例s,但未将该实例指向任何内存空间

                   String s="";//定义了一个对象实例s,指向了一个空串

                 /**

                   *分析null和“”的区别,从内存,比较方法==和equals(),空指针异常来分析

                   *

                   */

 
  • String str1 = null; str引用为空


String str2 = ""; str引用一个空串

  • 也就是null没有分配空间,""分配了空间,因为str1还不是一个实例化的对象,而str2已经实例化。


因为null不是对象,""是对象。
        所以比较的时候必须是 if(str1==null){...}和if(str2.equals("")){...}。

对象用equals比较,null用等号比较。因此,如果str1=null;
    下面的写法错误: 
if(str1.equals("")||str1==null){
               }
正确的写法是 
              if(str1==null||str1.equals("")){ }
              //先判断是不是对象,如果是,再判断是不是空字符       

  • null代表堆内存中根本没有这个东西,而空字符串就完全不同了,空字符串也是字符串,他是有内存空间的,你可以这样尝试一下:

String aaa = null;

String bbb = "";

然后调用String的方法比如说

aaa.indexOf("a");

bbb.indexOf("a");

这样的话,字符串aaa在调用indexOf的时候会报空指针异常,而bbb则不会。因为aaa在堆内存中不存在,无法调用方 法,而bbb是存在的。

  • 1,就像一个残疾人,虽然他是残疾的,

但是他还是可以调用他的方法,他可以吃饭,

但是如果这个人都不存在了,吃饭更无法执行了。  

         2,打个比方:一个空玻璃杯,不能说它里面什么都没有,因为里面有空气,当然也可以把它弄成真空,null与" "的区别就象真空与空气一样。


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱若手握流沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值