来源:http://blog.csdn.net/bbyyo/article/details/38091089
public class Person {
public int age;
public String name;
}
//上面是一个Person类
//下面是一个Student类
public class Student {
public static void swap(Person p){
int temp = p.age; //没有提示p变量尚未初始化
p.age=26;
p.name="ajax";
}
public static void main(String[] args){
Person per;
int tmp=per.age; //提示per变量未初始化
per.name="ajax"; //提示per变量未初始化
per.age=26; //提示per变量未初始化
}
}
问题来了:
在main方法中,我还没调用swap方法,也就是没有传入一个实例对象给swap方法中的p,为什么
int temp = p.age;不会提示尚未初始化,毕竟参数Person p也只是定义一个Person类型的变量而已;
同样的,在swap中,p变量可以给Person类中的属性赋值;而main方法却提示未初始化。
在main方法中,同样的定义一个Person类型的变量per,同样的操作却提示per尚未初始化。
-
1为什么int temp = p.age;不会提示尚未初始化
这句话不会报错,因为p是做为参数类型传入的,编译器并不知道你到底有没有初始化p,他会当作以创建对象处理。
-
而main方法却提示未初始化
在main方法中你定义了一个Person per;但没有进行初始化,就直接使用per里的属性是不可以的,因为变量没有进行初始化是不能够使用的。