💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## Java编程那些事儿18——变量和常量 作者:陈跃峰 出自:[http://blog.csdn.net/mailbomb](http://blog.csdn.net/mailbomb) **3.6 变量和常量** 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。 在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。 **3.6.1 变量** 变量代表程序的状态。程序通过改变变量的值来改变整个程序的状态,或者说得更大一些,也就是实现程序的功能逻辑。 为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名。例如在2D游戏程序中,需要代表人物的位置,则需要2个变量,一个是x坐标,一个是y坐标,在程序运行过程中,这两个变量的值会发生改变。 由于Java语言是一种强类型的语言,所以变量在使用以前必须首先声明,在程序中声明变量的语法格式如下: 数据类型 变量名称; 例如:int x; 在该语法格式中,数据类型可以是Java语言中任意的类型,包括前面介绍到的基本数据类型以及后续将要介绍的复合数据类型。变量名称是该变量的标识符,需要符合标识符的命名规则,在实际使用中,该名称一般和变量的用途对应,这样便于程序的阅读。数据类型和变量名称之间使用空格进行间隔,空格的个数不限,但是至少需要1个。语句使用“;”作为结束。 也可以在声明变量的同时,设定该变量的值,语法格式如下: 数据类型 变量名称 = 值; 例如:int x = 10; 在该语法格式中,前面的语法和上面介绍的内容一致,后续的“=”代表赋值,其中的“值”代表具体的数据。在该语法格式中,要求值的类型需要和声明变量的数据类型一致。 也可以一次声明多个相同类型的变量,语法格式如下: 数据类型 变量名称1,变量名称2,…变量名称n; 例如:int x,y,z; 在该语法格式中,变量名之间使用“,”分隔,这里的变量名称可以有任意多个。 也可以在声明多个变量时对变量进行赋值,语法格式如下: 数据类型 变量名称1=值1,变量名称2=值2,…变量名称n=值n; 例如:int x = 10,y=20,z=40; 也可以在声明变量时,有选择的进行赋值,例如:int x,y=10,z; 以上语法格式中,如果同时声明多个变量,则要求这些变量的类型必须相同,如果声明的变量类型不同,则只需要分开声明即可,例如: int n = 3; boolean b = true; char c; 在程序中,变量的值代表程序的状态,在程序中可以通过变量名称来引用变量中存储的值,也可以为变量重新赋值。例如: int n = 5; n = 10; 在实际开发过程中,需要声明什么类型的变量,需要声明多少个变量,需要为变量赋什么数值,都根据程序逻辑决定,这里列举的只是表达的格式而已。 **3.6.2 常量** 常量代表程序运行过程中不能改变的值。 常量在程序运行过程中主要有2个作用: 1. 代表常数,便于程序的修改 2. 增强程序的可读性 常量的语法格式和变量类型,只需要在变量的语法格式前面添加关键字final即可。在Java编码规范中,要求常量名必须大写。 则常量的语法格式如下: final 数据类型 常量名称 = 值; final 数据类型常量名称1 = 值1, 常量名称2 = 值2,……常量名称n = 值n; 例如: final double PI = 3.14; final char MALE=’M’,FEMALE=’F’; 在Java语法中,常量也可以首先声明,然后再进行赋值,但是只能赋值一次,示例代码如下: final int UP; UP = 1; 常量的两种用途对应的示例代码分别如下: 1. 代表常数 final double PI = 3.14; int r =5; double l = 2 * PI * r; double s = PI * r * r; 在该示例代码中,常量PI代表数学上的∏值,也就是圆周率,这个是数学上的常数,后续的变量r代表半径,l代表圆的周长,s代表圆的面积。 则如果需要增加程序计算时的精度,则只需要修改PI的值3.14为3.1415926,重新编译程序,则后续的数值自动发生改变,这样使代码容易修改,便于维护。 2. 增强程序的可读性 int direction; final int UP = 1; final int DOWN = 2; final int LEFT = 3; final int RIGHT = 4; 在该示例代码中,变量direction代表方向的值,后续的四个常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其数值分别是1、2、3和4,这样在程序阅读时,可以提高程序的可读性。 **3.6.3 语句块** 在程序中,使用一对大括号{}包含的内容叫做语句块,语句块之间可以互相嵌套,嵌套的层次没有限制,例如: ~~~                    {                             int a;                    }          语句块的嵌套:                    {                             int b;                             {                                      char c;                             }                    } ~~~ 以上代码只是演示语法,没有什么逻辑意义。在后续的语法介绍中,还会有语句块的概念,就不再重复介绍了。 **3.6.4 变量的作用范围** 每个变量都有特定的作用范围,也叫做有效范围或作用域,只能在该范围内使用该变量,否则将提示语法错误。通常情况下,在一个作用范围内部,不能声明名称相同的变量。 变量的作用范围指从变量声明的位置开始,一直到变量声明所在的语句块结束的大括号为止。例如以下代码: ~~~                   {                            {                                      int a = 10;                                      a = 2;                             }                             char c;                    } ~~~ 在该代码中,变量a的作用范围即从第三行到第五行,变量c的作用范围即从第六行到第七行。 **3.6.5 常量的作用范围** 常量的作用范围和变量的作用范围规则完全一致。 **3.6.6 总结** 对于变量和常量的内容就介绍这么,下面是一个完整的代码,可以在JDK或Eclipse中进行编译和运行。代码文件名为VariableAndConst.java,示例代码如下: ~~~          public class VariableAndConst{                   public static void main(String[] args){                             int n = 0;                             char c = ‘A’;                             System.out.println(n);                             n = 10;                             System.out.println(n);                             System.out.println(c);                    }          } ~~~ 说明:在该代码中,System.out.println的功能是输出变量中存储的值。