先看下面两段程序:
程序一: public class Variable { int i; void test() { int j=8; if(j==i) System.out.println("相等"); else System.out.println("不相等"); } public static void main(String[] args) { Variable v=new Variable(); v.test(); } }
程序二: public class Variable { void test() { int i; int j=8; if(j==i) System.out.println("相等"); else System.out.println("不相等"); } public static void main(String[] args) { Variable v=new Variable(); v.test(); } }
----------------------------------------------------------------------------------------------------------
第一个程序很正常,编译时不会出错。第二个程序编译时会提示如下错误:
D:\Program\java\test>javac Variable.java Variable.java:9: 可能尚未初始化变量 i if(j==i) ^ 1 错误
之所以会出现这样的错误是因为:成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值
===========================================================
类体分为两部分。变量定义部分所定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数都被称为局部变量
java中成员变量和局部变量的区别成员变量:作为类的成员而存在,直接存在于类中。
局部变量:作为方法或语句块的成员而存在,存在于方法的参数列表和方法定义中。
局部变量在使用前必须被程序员主动的初始化,和此形成对比,系统中的成员变量则会被系统提供一个默认的初始值。所以在语法上,类的成员变量能够定义后直接使用,而局部变量在定义后先要赋初值,然后才能使用。
所有类的成员变量可以通过this来引用。成员变量又分成俩中类型:实例变量和静态变量。静态变量在定义时要使用static关键字。