请教大家一个关于java的基本问题:
String s; 和
String s=null; 及
String s=new String();
三者有什么区别,特别是第二种用法用在哪里,起什么作用?
String s 是声明变量s的类型是String
String s=null;是在声明的同时先赋值。应该跟第一种声明的效果相同:s=null;
String s = new String();此时的s="";
String s定义一个String变量
String s=null; 定义一个String变量给它初值为Null
String s=new String(); 定义了一个String对象给它分配了地址空间
null其实也是一种类型的数据……这种类型具体就是什么也不是……
String s; 是定义一个指向String类型对象的类型变量,也可以理解为一个指针,如果这样没有写在一个类的构造器内的话,s的值是一个不确定的值,如果是写在一个类的构造器内的话s的值自动为null;
String s=null; 是定义一个对象变量之后初始化这个变量为null,也就是不指向任何对象;
String s=new String(); 是定义了一个对象变量,并且定义了一个String对象,对象变量s指向这个String对象,这样写的话就在堆中实际建立了String对象。
将s赋值为null的用途
如下代码,如果没有将s赋值,则编译不通过
String s;
//String s = null;
if (s == null)
{
s = "aaa";
}
test(s);
在java中没有赋初值的变量是不允许使用的,除非能够确定在使用前已经被赋值了,或变量是全局变量。否则肯定报编译错误。