null和""的区别

本文为转载文章,源地址->http://www.cnblogs.com/qiuting/p/5373571.html


1. 类型

null是一个对象的值,而不是一个字符创。
“”是一个长度为0的字符串。

2. 内存

String s = null在该定义中定义了一个String的对象,但对该对象没有具体实现,即只创建了在栈中的引用,而不创建对应的实例,因此在堆中不占用内存。
String s = ""是定义了一个String对象,并赋值为长度为0的字符串,该字符串在堆中占有内存空间。

示例程序:

public class Demo{
    public static void main(String[] args){
        String str1 = "";
        String str2 = new String();
        String str3 = null;

        System.out.println(str1 == str2); //比较str1和str2的内存地址,返回false
        System.out.println(str1.equals(str2)); //比较str1和str2的内容,返回true
        System.out.println(str1.equals(str3)); //比较str1和str3的内容,返回false
        System.out.println(str3.equals(str1)); //会引发空指针错误java.lang.NullPointerException 
    }
}

3. 比较字符串为空的几个方法

if(s == null || s.equals) // 这种比较方法要调用equals方法相对而言效率比较低
if(s == null || s.length ==0) //这种比较方法相对于上一种比较方法效率有所提升
if(s == null || s.isEmpty()) //这种方法在SE6.0出来后才开始使用
if(s == null || s == "") //这种方法最为简洁,效率也比较快

PS:s == null这个语句不可或缺,且必须在比较的第一位,否则将引发空指针错误(java.lang.NullPointerException)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值