当我们创建对象是,习惯用""去定义,比如String a="" 这样去定义一个空字符串,为何不用null去定义呢?
""和null有什么区别?看如下两个demo:
看demo1:
public static void main(String[] args) { String s = null; String s1 = "ab"; s = s + s1; if (s.equals(s1)) { System.out.println("s的值"+s); System.out.println(true); } else { System.out.println("s的值"+s); System.out.println(false); } }
public static void main(String[] args) { String s = ""; String s1 = "ab"; s = s + s1; if (s.equals(s1)) { System.out.println("s的值"+s); System.out.println(true); } else { System.out.println("s的值"+s); System.out.println(false); } }
看demo2:
public static void main(String[] args) { String s=""; s.trim(); }
public static void main(String[] args) { String s=null; s.trim(); }
为何会出现如上两种情况?demo1相加情况是不一样的,demo2为何""是空值,而null会抛异常? NULL代表声明了一个空对象,而不是一个字符串;对于对象而言,我们可以对其进行“=”或者“==”操作。
""代表声明了一个对象实例,它是一个长度为0的空字符串。
NULL和“”的关系其实和0与没有的关系是一样的,你说0和没有是一种概念吗?
String a=null; null是未分配堆内存空间
String a; 分配了一个内存空间,但没有存入对象
String a=""; 分配了一个内存空间,存入了一个字符串对象