4_JavaSE_变量的类型

前面我们讲到变量根据他们的特点可以分为类变量实例变量局部变量。那么我们现在就来更细致的讲解。

类变量:在类中、方法之外、用 static 关键字修饰的变量。
实例变量:在类中、方法体之外、不用 static 关键字修饰的变量。
局部变量:在方法之中的变量。

那么他们有什么区别呢?
首先,是类变量。顾名思义,类变量属于类本身,也叫作静态变量,必须用 static 关键字修饰,并且不管创建了多少个对象,类变量都只有一份,有默认值,可以通过类名.类变量名 直接访问。
只需要记住一点,**类变量属于类本身,所以只有一份,所以可以直接用类名访问。**由于这个特性对于常量来说非常合适,因为对于常量,它的值是固定的,不管你创建多少个实例,都只需要相同的值就可以,例如(圆这个类维持了一个常量 π ,不管你创建了多少个圆实例,这个常量的值都是为 π,是不变的),因此常量经常被 static 修饰。所以我们修饰常量一般是这样的:

//java修饰常量
public static final String CONSTANT_A = "Hello";

注:由于常量本身并不私密,因此,它的可见性可以跨越包,所以用public 修饰;并且只需要一份即可,所以用 static 修饰,我们可以直接通过类名访问;由于常量不可以被修改,所以必须要用final修饰。总结特点就是:高可见、只有一份、不可修改。 这和现实中的常量的概念也是一致的(高可见:任何人都能直接使用常量;只有一份:任何人使用的某个常量实际上只需要一份即可;不可修改:常量当然不可以修改)。

**接着,是实例变量。**顾名思义,实例变量属于实例本身。也就是说,当我们创建一个类的实例的时候,就有了“一份”变量,并且实例变量也是有默认值的。当对象创建时,则实例变量跟着创建,对象销毁时跟着销毁。通过类名.实例变量名 来访问,可以被访问修饰符修饰,并且对类中的方法是可见的。

通常,实例变量都是被设计成被 private 关键字修饰,让其对其他类不可见,然后通过一类专门设计的方法对其值进行访问和修改,这类方法就是get/set方法。

最后是局部变量,前面说到,局部变量是在方法(包括方法、构造方法、语句块)中,因此它是在方法被执行时创建,方法执行结束时则销毁,因此只能在该方法中可见,不能用访问修饰符修饰局部变量(只能该方法可见,还要啥访问修饰符!是不是!),并且局部变量没有默认值,使用时必须先初始化(这是基于安全性和内存开销的考虑)。

以上就是关于三种类型的变量的讲解,下面是一个关于圆的例子。

//类:圆
public class Circular{
	//类变量:表示只有一份,名字就是“圆形”,一旦修改成其他,所有实例都会变成其他。
    static String name = "圆形";
    //实例变量,直径:每个实例都有属于自己的直径的值
    double diameter = 23.44;
    //方法
    public void show(){ 
        // 局部变量
        int i = 0;
    }
}

关于变量的分类就讲到这里,下一节讲修饰符

上一篇:C++——list的模拟实现


下一篇:[JavaSE] 第七章 多线程