1 变量与常量
1.1 变量
1.1.1 声明变量
在Java中,每个变量都有一个类型,在声明变量时,必须先指定变量的类型,然后是变量名。
可以在一行中声明多个同类型变量,但不提倡这种风格。
如下的命名都是合法的:
int num;
double salary;
long earthPopulation;
boolean done;
int i,j;
从上面可以看出,每个声明都以分号结束。
变量名的命名规范:
- 必须以字母或者下划线_开头(不能使用单下划线作为变量名),包括26个英文字母大小写,0~9数字,$美元符号,并且不能以Java中的关键字作为变量名,如:public, int, double等等;
- 变量名对大小写敏感,在对两个不同的变量命名尽量避免只有大小写的差异;
- 尽量保证见名知义,避免用a, b,c 这种没有意义的字母表示变量;
- 通常用小写字母表示变量名,但如果是由多个单词组合的,除了第一个单词外每个单词的首字母大写;
- 尽管$是一个合法字符,但不要用这个字符,他只用在Java编译器或其它工具生成的名字中。
1.1.2变量初始化
声明一个变量后,必须用赋值语句对变量,不能使用未初始化的变量值。如:
int num;
System.out.println(num); //ERROR--variable not initialized(变量未初始化)
要对变量进行赋值,就需要使用赋值表达式,如等号(=),对变量初始化的时候,既可以把变量的声明和初始化放在同一行,也可以放在不同行,如下的初始化都是合法的:
int nowadays;
nowadays = 15;
-----------------
int nowadays = 15;
在Java中,变量的声明尽可能靠近第一次使用的地方。
从Java 10开始,对于局部变量,如果可以从变量的初始值推断出它的类型,就不需要再声明类型,只需要使用关键字var而无需指定类型,不过这种方法一般只用于对象:
var i = 13; //var是一个int类型 var j = "name" //var是一个字符串
1.2 常量
在Java中用关键字final指示常量,关键字final表示这个变量只能被赋值一次,一旦赋值后就不能再更改了。在Java中经常希望某个常量可以在一个类的多个方法中使用,通常将这些常量称为类常量,可以用关键字static final设置一个类常量,类常量定义在main方法的外部如下:
public class JavaTest{
public static final double PPERHEIGHT = 15.1;//该常量可以被该包其他类下的方法使用
static final double PI = 3.14;//该常量可以被该类下的其他方法使用
public static void main(String[] args){
final double PAPERWIDTH = 8.5; //定义了一个常量,该常量只能在main方法下使用
int age = 18; //定义了一个变量age,该变量只能在main方法中使用
for (int i = 0; i < 10; i++) {
System.out.println(i); //定义了一个变量i,该变量只能在for循环使用
}
}
}
习惯上,常量名使用全大写。
一般来说,常量和变量作用范围仅在包含它的大括号中。
1.3 枚举类型
有时候,变量的取值就在一个有限的集合中。例如性别只有男或者女,我们可以设置为1或0,man或者woman,但是这种设置可能出错,如下:
String personSex = "man";
personSex = "HELLO";
很明显我们希望personSex的值是man或者woman,但可能因为错误的输入导致上述情况,很明显,HELLO是一个错误的值,但是编译器却无法发现这种问题,最终导致结果出错。针对这种情况,可以自定义枚举类型,枚举类型包括有限个命名的值,如:
enum Sex {man,woman};
Sex personSex = Sex.man;
Sex类型的变量只能储存这个类型声明给定的枚举值man或者woman,或者特殊值null,null表示这个变量没有设置任何值。