Java
中""
与null
的区别与总结
类型问题
在Java
中null
是一个关键字,null
本身代表一个不确定的对象(或空对象),但不属于java.lang.Object
类型,null
不能用于基本数据类型。(在C
语言中,NULL
指针是一个无类型指针,在ASCII
码的第一个字符是NULL
,它的数值是0,占用1字节,C语言把它作为字符串的最后一个字符,以表示字符串到此结束."\0"。)
在Java
中""
是一个长度为零的空字符串,是String
类的一个实例化对象。
内存分配问题
String s=null;
只是声明了一个String
对象的引用,但是这个引用未指乡任何内存空间;而String s="";
这个引用指向了一块空字符串的内存空间。
操作问题
NULL
代表声明了一个不确定的队形(或空对象),对空对象做任何操作都不非法的,当然除了=和
==。
""`是一个字符串了,该字符串没有内容,长度为零,对字符串的所有操作都适用于它。
测试实例
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//当提示输入一空行时,我们敲击回车:这时str存的因为一个空串
System.out.println("please input one line:");
String str = sc.nextLine();
System.out.println("line:"+str.length());
System.out.println(str.equals(""));
System.out.println(str.equals(null));
System.out.println(str==null);
System.out.println("------");
//null是对象吗? 属于Object类型吗?
if (null instanceof java.lang.Object) {
System.out.println("null属于java.lang.Object类型");
} else {
System.out.println("null不属于java.lang.Object类型");
}
System.out.println("------");
String mess = null
//System.out.println(mess.length());//改行报 java.lang.NullPointerException,即空指针异常。
System.out.println("The end of main thread.");
}