零基础学Java第2版
上QQ阅读APP看书,第一时间看更新

3.3 变量

前面的代码使用了很多变量,那么究竟变量是什么呢?本节将介绍变量的基本概念,以及如何操作变量。

3.3.1 变量的声明

变量就是在程序的运行中可以变化的量,变量是程序设计中一个非常重要和关键的概念。在Java程序设计中,每个声明的变量都必须分配一个类型。声明一个变量时,应该先声明变量的类型,随后再声明变量的名字。下面演示了变量的声明方式。

01   ///这里salary,age,op都是变量名字
02   ///double,int,boolean是变量的类型
03   double salary;
04   int age;
05   boolean op;

每一行的第一项是变量类型,第二项是变量名。行尾的分号是必需的,这是Java语句的结束符号。如果没有这个分号,程序不会认为这是一句完整的Java语句。

同一类型的不同变量,可以声明在一行,也可以声明在不同行,如果要声明在同一行中,不同的变量之间用逗号分隔,例如下面的例子。

int studentNumber,people;

3.3.2 变量的含义

在程序设计中,经常会听到变量这个名词,到底什么是变量呢?它又有什么意义呢?

在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了操作方便,给这个空间取名,称为变量名,内存空间内的值就是变量值。所以,申请了内存空间,变量不一定有值,要想变量有值,就必须要放入值。

例如:“int x”,定义了变量但没有赋值,即申请了内存空间,但没有放入值。如果int x=5;说明不但申请了内存空间而且还放入了值,值为5。

3.3.3 变量的分类

变量的分类方式有多种多样,不可能单纯地将变量划分为几类,下面将以不同的分类方式来讨论变量的分类问题。

1. 从作用范围来分

根据作用范围来分,一般将变量分为全局变量和局部变量。从字面上理解很简单,全局变量就是在程序范围之内都有效的变量,而局部变量就是在程序中的一部分内有效的变量。

【实例3.9】从专业的角度来解释,全局变量就是在类的整个范围之内都有效的变量。而局部变量就是在类中某个方法函数内或某个子类内有效的变量,下面将从实际程序代码中慢慢地体会。

01   ///a,b都是全局变量
02   ///c是局部变量
03   public class var
04   {
05       int a=10;
06       int b=21;
07       public static void main(String[] args)
08       {
09            var v=new var();
10            System.out.println("这个是全局变量a="+ v.a);
11            v.print();
12       }
13       void print()
14       {
15            int c=20;
16            System.out.println("这个是局部变量c="+ c);
17       }
18   }

【代码说明】第5~6行定义了两个变量,它们在main()方法外,第10行调用这个变量。第15行在print()方法内定义了变量c,第16行在当前方法内输出此变量。

【运行效果】

这个是全局变量a=10
这个是局部变量c=20

【实例3.10】如果在main()中同样输出“c”的值,会出现什么样的结果呢?下面从实际代码段中仔细体会。

01   public class Math1
02   {
03       public static void main(String[] args)
04       {
05            Math1 v=new Math1();
06            System.out.println("这个是局部变量c="+ v.c);
07       }
08       void print()
09       {
10            int c=20;
11       }
12   }

【运行效果】以上代码在编译时,会出现错误,就是找不到变量“c”。这说明变量“c”只在方法“print()”中起作用,在方法外就无法再调用。

【代码说明】从上述代码中可以看出,如果一个变量在类中定义,那么这个变量就是全局变量,例如下面的代码段。

01   public class var
02   {
03       int a=10;
04       int b=21;
05   }

这里的变量“a”、“b”都是全局变量,而在类的方法、函数中定义的变量就是局部变量,例如下面的代码段。

01   public class var
02   {
03       void print()
04       {
05            int c=20;
06       }
07   }

这里的变量“c”就是局部变量。因为它不是在类中直接定义的,而是在类的方法中定义的。

2. 从类型来分

如果从类型来分,可以将变量分成基本类型变量和对象类型变量,而基本类型变量就是前面说的那8种基本数据类型的变量,如整型、浮点型、字符型、布尔型等。

说明

对象类型将在后面的章节中介绍,这里暂时不做具体的说明。

3. 以所属范围分

如果按所属范围来分,可以将变量分成类变量和成员变量,类变量就是用关键字“static”声明的全局变量,它是属于类的。而成员变量就是不用“static”声明的其他实例变量,它是随对象本身的。

其实类变量就是在类中直接定义的,并且不随类产生的对象变化而变化。当在一个类中声明了一个类变量时,无论创造出多少个对象,使用对象引用这个变量,都不会发生变化。成员变量就不同了,它随着对象不同而变化。即针对同一个类,新创建一个对象,使用此对象引用这个变量,每次引用的值都不一样。