变量详解

我们两清 提交于 2020-02-04 19:13:52
  • 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
	}
}

变量存储

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!