在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。
在 java 实际开发中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。
变量
变量代表程序的状态。程序通过改变变量的值来改变整个程序的状态,或者说得更大一些,也就是实现程序的功能逻辑。为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名。例如在 2D 游戏程序中,需要代表人物的位置,则需要 2 个变量,一个是 x 坐标,一个是 y 坐标,在程序运行过程中,这两个变量的值会发生改变。由于 Java 语言是一种强类型的语言,所以变量在使用以前必须首先声明,在程序中声明变量的语法格式如下:
数据类型 变量名称;
例如: int x ;
在该语法格式中,数据类型可以是 Java 语言中任意的类型,包括前面介绍到的基本数据类型以及后续将要介绍的复合数据类型。变量名称是该变量的标识符,需要符合标识符的命名规则,在实际使用中,该名称一般和变量的用途对应,这样便于程序的阅读。数据类型和变量名称之间使用空格进行间隔,空格的个数不限,但是至少需要 1 个。语句使用“;”作为结束。
也可以在声明变量的同时,设定该变量的值,语法格式如下:
数据类型 变量名称 = 值;
例如: int x = 10 ;
在该语法格式中,前面的语法和上面介绍的内容一致,后续的“=”代表赋值,其中的“值”代表具体的数据,注意区别“==”代表为判断是否相等。在该语法格式中,要求值的类型需要和声明变量的数据类型一致。
在程序中,变量的值代表程序的状态,在程序中可以通过变量名称来引用变量中存储的值,也可以为变量重新赋值。例如:
int n = 5 ;
n = 10 ;
在实际开发过程中,需要声明什么类型的变量,需要声明多少个变量,需要为变量赋什么数值,都根据程序逻辑决定,这里列举的只是表达的格式而已。
常量
常量的作用
常量代表程序运行过程中不能改变的值。常量在程序运行过程中主要有 2 个作用:
1. 代表常数,便于程序的修改(例如:圆周率的值)
2. 增强程序的可读性(例如:常量 UP 、 DOWN 、 LEFT 和 RIGHT 分辨代表上下左右,其数值分别是 1 、 2 、 3 和 4 )
常量的语法格式
常量的语法格式和变量类型只需要在变量的语法格式前面添加关键字 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 ;
Final :
final 用于声明属性(常量),方法和类, final 这个关键字的含义是“这是无法改变的”或者“终态的”;
那么为什么要阻止改变呢?
java 语言的发明者可能由于两个目的而阻止改变:
1).效率问题:
jdk 中的某些类的某些方法,是不允许被用户覆盖的,设计者可能认为,所用方法已经是最好的方法,用户私自覆盖,或是由于疏忽而覆盖,就会影响 JVM 或是系统的系能;
2). 设计所需:
众所周知,有些情况必须使用 final 关键字,比如方法中的匿名内部类的参数传递
[修饰变量] :
final 成员变量表示常量,只能被赋值一次,赋值后值不再改变。
[修饰方法] :
final 方法不能被子类方法覆盖,但可以被继承。
[修饰类] :
final 类不能被继承,没有子类, final 类中所有方法都是 final 的。(如 String 类)