变量汇总
所以,到底有哪些变量的概念呢?距今为止,目前已知的变量主要有
- 实例变量
- 全局变量
- 静态变量
- 类变量
- 局部变量
- 成员变量
- 常量
下面我们就采用各个击破的方式来认识每个概念
实例变量
实例变量又被称为Instance variables
。不使用 static
关键字定义,并且在任何方法、构造方法、块之外的变量都是实例变量
。实例变量都是基于特定实例的,实例变量不会在实例之间共享,也就是说,每一个对象的实例都有自己的一个实例变量。下面是实例变量的一个例子
class Fruits { public String fruitName; // 具有公共访问权限的 fruitName; private int fruitNum; // 具有私有访问权限的 fruitNum; }
你可以使用下面这种方式进行实例变量的调用
public class Fruits { public String fruitName; private int fruitNum; public static void main(String[] args) { Fruits fruits = new Fruits(); fruits.fruitName = "strawberry"; fruits.fruitNum = 100; } }
如何识别实例变量
那么我如何知道一个变量它是实例变量呢?下面是一些关于实例变量的定义规则
- 实例变量可以使用四种访问修饰符进行修饰:public、protected、default、private
- 实例变量可以使用
transient、final
关键字进行修饰 - 实例变量不可以使用
abstract、synchronized、strictfp、native、static
关键字进行修饰
实例变量带有默认值,也就是说,实例变量不用初始化就能使用。下面是常用实例变量的初始值
实例变量的特点
上面我们了解了实例变量的基本特征和如何区分实例变量,下面我们来讲一下实例变量的特点。
- 实例变量的只能在类中声明,但是在方法、构造函数或任何块之外。
- 当在为堆中对象分配空间时,将为每个实例变量分配一块区域。
- 实例变量只能通过创建对象来使用,当使用
new
关键字进行创建对象时,实例变量同时也被创建,当垃圾回收器回收对象时,实例变量也会被销毁。 - 实例变量可以使用访问
修饰符
来修饰 - 实例变量不用强制初始化,它有自己的默认值。
- 每个对象都有自己的一个实例变量的副本,因此在一个对象中修改变量不会对其他对象中的实例变量造成影响
- 实例变量只能通过创建对象引用来使用。
全局变量
全局变量又被称为Global variables
。如果你有其他语言的编程经验,比如 C、C++ 的话,你会接触到全局变量这个概念,你可以使用下面代码来创建全局变量
#include<stdio.h> // 全局变量 int A; int B; int Add() { return A + B; }
但是在 Java 中,是不存在全局变量的。因为 Java 是一门面向对象的编程语言,所有的内容都是属于类的一部分。Java 这么做的原因是为了防止数据和类成员被其他程序的其他部分有意或者无意的修改。所以在 Java 中,使用 静态变量
来起到全局访问的目的。
静态变量
静态变量又被称为Static variables
。静态变量的定义比较简单,静态变量是属于该类
的变量,它是由 static
关键字来修饰的。static 修饰的变量属于静态变量,它只能定义在类的内部、方法的外部。
静态变量的特点
- 静态变量只能使用 static 关键字进行修饰,它不能在方法中进行声明,不论是静态方法还是非静态方法。
- 静态变量会在程序运行前进行初始化,并且只初始化一次。静态变量会有一个初始化顺序,我们后面说。
- 静态变量的所有实例共享同一个副本。也就是说,静态变量只有一个,它不会随着对象实例的创建而进行副本拷贝
- 静态变量可以通过
类名.变量名
进行访问,并且不需要创建任何对象就能访问。
public class Fruits { public String fruitName; private int fruitNum; static String fruitType; public static void main(String[] args) { Fruits.fruitType = "apple"; // 类名.变量名 System.out.println(fruitType); } }
- 可以在
非静态方法
中使用静态变量
类变量
类变量又被称为 Class variables
在 Java 中,类变量就是静态变量,它们都用 static
关键字进行修饰,所以,如果你再听到说静态变量的时候,它也就是类变量。