【Java基础一】String创建对象"" && null
当我们创建对象是,习惯用""去定义,比如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=""; 分配了一个内存空间,存入了一个字符串对象