class AA{
int i = 2;
public static void main(String[] args){
String ss ;
System.out.println(ss);
}
}
这样的话,编译出错:
AA.java:6: 可能尚未初始化变量 ss
System.out.println(ss);
^
1 错误修改成:
class AA{
int i = 2;
static String ss ;
public static void main(String[] args){
System.out.println(ss);
}
}
就可以编译通过了。这是为什么呢?
非常谢谢大家啊。
int i = 2;
public static void main(String[] args){
String ss ;
System.out.println(ss);
}
}
这样的话,编译出错:
AA.java:6: 可能尚未初始化变量 ss
System.out.println(ss);
^
1 错误修改成:
class AA{
int i = 2;
static String ss ;
public static void main(String[] args){
System.out.println(ss);
}
}
就可以编译通过了。这是为什么呢?
非常谢谢大家啊。
static String ss ;
static 的字符串默认初始化为NULL。
在java中 成员变量不用初始化,系统会默认给他初值
而定义的成员变量是必须赋初值的
static String ss ;
static 的字符串默认初始化为null。
所以能输出。
但是String 是定义的东西。。在if()等等的语句中是必须要初始化赋值的,,,,记住就行了。
static是静态,,,提前初始化 了。。所以就为默认值NULL了,,,
{
int i; //没有初始化成员变量;
String s; //没有初始化成员变量;
}
public class StaticTest
{
static String s1;//局部变量可以不初始化,但是必须声明为静态的
public static void main(String[] args)
{
A MyA=new A();
System.out.println(MyA.i);// 输出一个类对象的成员变量, 成员变量可以不初始化,不同类型的变量有不同的默认值,输出值为:0
System.out.println(MyA.s);//输出值为:null;
System.out.println(s1); //输出值为:null;
}
}随便写了一个测试类,凑活着看看吧,这就是我的理解!!!
{
int i;
String s;}
public class StaticTest
{
public static void main(String[] args)
{ final String s2="asd";//局部变量必须初始化,并且是final,类型的
A MyA=new A();
System.out.println(MyA.i);//成员变量可以不初始化,不同类型的变量有不同的默认值,输出值为:0
System.out.println(MyA.s);//输出值为:null;
System.out.println(s1); //输出值为:null;
}
}不好意思,上一个代码学错了啊,汗!!!补充一个!!!
对于静态的东西,JVM在加载类时,就在內存中开辟了这些静态的空间,指向了一块内存,因此就自动赋值了,不会产生错误。