-
Java变量有且仅有成员变量和局部变量
-
类中定义成员变量:类变量(有static)、实例变量(无static)
-
方法中定义局部变量:形参、普通局部变量、代码块的局部变量
-
判断变量:先看位置,然后看static
一、局部变量
局部变量:必须由程序员显示指定初始值,然后才能使用,否则编译报错–可能未初始化变量**。
- 代码块的作用于很小:离开了代码块,代码块中的局部变量就失效
- 局部变量的作用域很小,只在方法里有效;离开了方法,局部变量立即失效。
二、成员变量
成员变量:可以不需要显示指定初始值,系统可以自动分配初始值;初始值规则与数组元素的初始值规则完全相同。
程序中,类本身只有一个,程序一定先有类,再有对象(实例)!
- 类变量:类变量属于类本身,当系统初始化类时,就会为类分别分配空间,并执行初始化。
- 实例变量:实例变量属于对象本身,系统每次创建对象时,都需要为该对象的实例变量分配空间,并执行初始化。
严格来说:类变量应该由类本身进行访问;实例变量应该由对象进行访问。但Java语法允许通过对象访问类变量----唯一的作用是出考题。但实际上,Java依然会将对象替换成对象所属的类。
建议:遇到用类调用类变量、类方法。如果遇到对象调用类变量、类方法的情况,第一件事先把对象换成类。
public class Computer
{
String color; //实例变量
int price; //实例变量
static int test; //类变量
}
public class ComputerTest
{
public static void main(String[] args)
{
System.out.println(Computer.test);//0
//c1是局部变量
Computer c1 = new Coputer();
System.out.println(c1.color);//null
System.out.println(c1.price);//0
c1.color = "银色";
c1.price = 4500;
System.out.println(c1.color);//银色
System.out.println(c1.price);//4500
//c2是局部变量
Computer c2 = new Coputer();
System.out.println(c2.color);//null
//遇到对象调用类变量、类方法的情况,第一件事先把对象换成类
//相当于Computer.test
System.out.println(c1.test);//0
System.out.println(c2.test);//0
c2.test = 20;
System.out.println(c1.test);//20
System.out.println(c2.test);//20
}
}