class A { int i;// right i为属性,系统会默认该值为0 void f() { System.out.printf("%d\n", i); } void g() { int i;//error 这是一个局部变量,系统分配的是辣鸡值,会认为没有初始化,c语言会认为没有错 System.out.printf("%d\n", i);//error 这是一个局部变量,系统分配的是辣鸡值,会认为没有初始化,c语言会认为没有错,若只定义i不出错,但是当要引用的时候就会出错 } void k (int i) { this.i=i; System.out.printf("%d\n", i); }

}

public class Test {

public static void main(String[] args) {
	int i;//right
	A aa=new A();
	aa.f();
	System.out.printf("%d\n", i);//eror同样会认为引用的时候i没有赋值
}

}