概要:Java中的变量定义,变量赋值,动态赋值,以及常量的定义,还有标识符的命名规范。
变量
变量是Java程序的一个基本存储单元。变量由一个标识符,类型及一个可选初始值的组合定义。此外,所有的变量都有一个作用域,定义变量的可见性,生存期。
int i;
声明一个变量
double money = 2.5;
声明变量并赋值
folat f1,f2;
一次声明多个变量
int x = 3, y, z = 5;
声明多个变量并赋值
赋值还可以这样,变量同时出现在 =
两边:
x = x + 1;
数学中, x = x + 1 是不符合实际的,在Java中,x = x + 1 是赋值操作。
2 = i
是不合法的,i+3=i
是不合法的。
变量类型
Java中存在的变量类型:
- 类变量:独立于方法之外的变量,用
static
修饰。 - 实例变量:独立于方法之外的变量,不过没有 static 修饰。
- 局部变量:方法中的变量。
public class VariableDemo {
static int i = 3; // 类变量
float f = 3.45f; // 实例变量
private char c = 'a'; // 私有类变量
public static void main(String[] args) {
double m = 3.5; // 局部变量
}
}
大多数其他计算机语言定义了两大类作用域:全局和局部。然而,这些传统型的作用域不适合Java的严格的面向对象的模型。当然将一个变量定义为全局变量是可行的,但这是例外而不是规则。
动态初始化
上面的例子都是使用确定的值初始化变量,Java也允许在变量声明时使用任何有效的表达式来动态地初始化变量。动态初始化又称为赋值表达式。
public static void main(String[] args) {
double radius = 3;
double perimeter = 2*3.14*radius;
System.out.println("圆的周长:"+perimeter);
}
这里,定义了两个局部变量 radius 、perimeter。第一个变量初始化为常量 3。然而圆形的周长使用动态初始化。
常量
变量在赋值以后可以被在此赋值(修改)。
int value = 3;
value = 5;
Java中提供了常量
来表示从不改变的数据。
语法格式:
final type CONSTANT_NAME = value;
常量必须在同一条语句中声明和赋值。
单词 final
是声明常量的 Java 关键字。
习惯上,常量中的所有字母都大写。
之前计算圆的周长,需要用到 π
,它是一个不变的值,就可以定义为常量。
public static void main(String[] args) {
final double PI = 3.14;
double radius = 3;
double perimeter = 2*PI*radius;
System.out.println("圆的周长:"+perimeter);
}
一般认为,定义常量有如下几个好处:
- 当一个值多次使用的时候,不必重复输入;
- 如果必须改常量值(例如,将PI 的值从 3.14 改为 3.14159),只需在源代码中的一个地方做改动
- 给常量赋一个描述性名字会提高程序易读性。
标识符
之前定义变量的时候,使用的都是简单的字母或单词。实际上变量标识符是有一定规则的,不能随便写。
Java规定,标识符identifier
需要满足一下规则:
- 由字母、数字、下划线
_
和美元符号$
组成 - 不能以数字开头
- 不能是关键字,参见 java中的关键字
- 不能用
true
、false
、null
- 长度任意
- 大小写敏感
规则很简单,但是起一个好的名字需要注意的非常多:
- 尽量见名知意,通过名称就能知道其含义
- 下划线
_
开头的变量在某些语言中被理解为私有,但是java中有private
关键字标识私有,所有尽量少用下划线开头命名 - 美元符号
$
一般在机器自动生成的代码中出现,所以尽量少用 - 缩写比全称更容易理解,允许的情况下,尽量用全称。例如,用
emp
定义一个员工变量就不如 用employee
。 - 尽量少用一个字母,之前为了演示方便,使用了 a、c、f、m 等单个字母,这并不是可取的。但是在之后的循环执行语句中,会常常见到一些代码片段中使用诸如
i
,j
,k
等变量名。
命名规范
给标识符起一个合适的名字,是代码专业性重要的一环。
在Java中,一般有如下的命名规范:
- 小写字母开头命名变量和方法名,如”area”、”money”、”save”
- 多个单词组合时,第一个单词的字母小写,而后面每个单词的首字母大写。这种规范被称为
驼峰命名法
[因为名字中的大写字符类似于骆驼的驼峰],如”dataType”、”nextLine” - 类名首字母大写,而后面每个单词的首字母大写,如”Student”、”StringBuffer”
- 常量中的所有字母大写,两个单词间用下划线连接,如”PI”、”MIN_VALUE”
- 变量名用名词,如”address”、”age”、”endTime”
- 方法名用动词开头,如”insert”、”test”、”getArea”
- 尽量不要使用类库中的类名定义自己的类,防止出现歧义,如”System”、”Object”