null是空对象,没有地址,可以赋值给任何对象;
""是空字符串,有地址,但是里面的内容是空的,只能赋值给字符串对象。
如:
String s; //分配了一个内存空间,没存入任何对象 ;
String s1=null; //定义了一个对象实例s1,但未将该实例指向任何内存空间;
String s2=""; //定义了一个对象实例s2,指向了一个空串,分配了一个内存空间,存了一个字符串对象;
其中s第一个是没有初始化的引用;s1为空引用;s2是在字符串池里写入一个空串"",然后用s2指向它。
s1不能直接进行使用,不能调用String类的方法,否则会报空指针异常。
例如:s1.equals("aa")肯定会报错的,如果我们不知道某一个字符串是否是null,而又要使用它,请先进行非空判断!