首页 > 编程笔记 > Java笔记

什么是变量,Java变量详解(小白必看)

顾名思义,变量就是可以改变的量。比如我们有一个名字叫 a 的变量,就可以通过赋值来改变它的值。

变量的本质可以看成一个“可操作的内存空间”,这个内存空间的位置、类型、大小都是确定的,我们可以通过变量名来访问这个内存空间。通过下图来帮助大家理解变量。


图 1 内存空间

int height;这行代码声明了一个变量名为 height 的变量,该变量的数据类型为 int,由于我们没有指定它的值,因此它默认为 0。

类似地,int age = 30;则声明了一个 age 变量,该变量为 int 类型,该变量的值为 30。

由于 Java 是一门强类型编程语言,因此对于所有变量都必须指定数据类型。所有变量都必须先声明后才能使用,只有符合指定数据类型的值才能存放到变量中。

变量的声明与赋值

使用变量前要进行声明,下面我们看如何对变量进行声明,常见的声明语法有如下 4 种:
数据类型 变量名;
数据类型 变量名1,变量名2,...;
数据类型 变量名 = 初始值;
数据类型 变量名1 = 初始值1,变量名2 = 初始值2,...;
例如:
int a; //声明变量a
int a,b,c; //声明变量a、变量b、变量c
int a = 10; //声明变量a并赋值为10
int a = 10,b = 2,c = 5; //声明变量a、变量b、变量c并分别赋值为10、2、5
后两种方式在声明时同时进行了赋值操作,而前两种方式则仅声明而不进行赋值,在后面适合的时机才对其进行赋值。

注意,在类内部只有方法外的变量才能只声明而不显式地赋值,而在方法内的变量就必须要显式地赋值,否则编译时会产生错误。

Java三种变量

变量根据作用范围可以分为三类,分别为局部变量、成员变量以及静态变量。

1) 局部变量

在方法内部或者代码块中定义的变量被称为局部变量,局部变量的生命周期从声明的位置开始到方法或代码块结束的位置结束。

例如:
public class VariableLocalTest {
    public static void main(String[] args) {
        int a = 10;
        {
            int b = 11;
            System.out.println(a);
            System.out.println(b);
        }
        System.out.println(a);
        //System.out.println(b);//已超出变量b的作用范围,导致错误
    }
}
main 方法内部声明了变量 a 并赋值,接着的一对大括号内部声明了变量 b 并赋值,结果是在这对大括号范围内可以访问变量 a 和变量 b,但在这对大括号之外不能访问变量 b。

运行结果为:

10
11
10

2) 成员变量

成员变量也称为全局变量或者实例变量,它是在类内部且在方法外所声明的非静态变量。成员变量的生命周期从对象被创建开始到对象被销毁结束。

观察下面的代码:
public class VariableGlobalTest {
    int a = 10;

    public static void main(String[] args) {
        VariableGlobalTest vg = new VariableGlobalTest(); //创建VariableGlobalTest对象
        System.out.println(vg.a); //通过VariableGlobalTest对象访问成员变量a
        vg = null; //销毁VariableGlobalTest对象
        System.out.println(vg.a);
    }
}
我们在 VariableGlobalTest 类内部声明了一个成员变量,在 main() 方法中通过 new VariableGlobalTest() 创建了一个 VariableGlobalTest 对象,然后输出该对象的成员变量 a,接着通过“vg = null;”销毁该对象,此后便不能再访问该对象的成员变量 a 了。

3) 静态变量

静态变量也称为类变量,它是在类内部且在方法外所声明的属于类的变量。静态变量的生命周期从类被加载开始到类被卸载结束。

再分析一段代码:
public class VariableStaticTest {
    static int a = 10;

    public static void main(String[] args) {
        VariableStaticTest vs = new VariableStaticTest();//创建VariableStaticTest对象
        System.out.println(a);
        System.out.println(vs.a);//通过VariableStaticTest对象访问静态变量a
        System.out.println(VariableStaticTest.a);//通过VariableStaticTest类访问静态变量a
    }
}
在 VariableStaticTest 类中声明一个静态变量 a,然后在 main 方法中可以通过三种方式来访问静态变量 a。

声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。