2.4 变量
变量是数据占位符。Java是一种强类型的语言,因此,每个变量必须有一个声明的类型。Java中有两种数据类型:
引用类型一个引用类型的变量,提供对一个对象的引用。
基本类型一个基本类型的变量,保存一个基本类型。
Java如何存储整数值
你一定听说过计算机使用二进制数字,即只包含0和1的数字。本节对此提供了一个概要,当你学习操作符的时候可能用的上。
一个字节占8个位,这表示要分配8个位来存储一个字节。最左边的位是一个符号位。0表示正值,1表示负值。0000 0000是0的字节表示,0000 0001表示1,0000 00010表示2,0000 0011表示3,并且0111 1111表示127,127是byte所能保存的最大的正值。
那么,如何得到一个负数的二进制表示呢?很简单。先获取其对应的正数的二进制表示,然后将所有的位都取反,并且加上1。例如,要得到−3的二进制表示,首先从3开始,它是0000 0011。将所有的位都取反,得到
1111 1100
加1以后,得到
1111 1101
这就是−3的二进制表示。
对于int类型,规则是相同的。例如,最左边的是符号位。唯一的区别是,一个int类型占32位。要表示一个int类型中的−1的二进制形式,我们从1开始,它是
0000 0000 0000 0000 0000 0000 0000 0001
将所有的位都取反后,得到:
1111 1111 1111 1111 1111 1111 1111 1110
加1以后,得到了想要的数字(−1)。
1111 1111 1111 1111 1111 1111 1111 1111
除了数据类型,Java变量还有名称和标识符。在选择标识符的时候,有如下几条规则:
1.标识符是Java字母和数字的一个长度没有限制的序列。标识符必须以一个Java字母开头。
2.标识符必须不是Java关键字(表2.3中给出),不能是一个布尔字面值,也不能是空字面值。
3.标识符必须在其作用域内是唯一的。第4章将会介绍作用域。
Java字母和Java数字
Java字母包括大写的和小写的ASCII Latin字母A到Z(u0041-u005a,注意,u表示一个Unicode字符)和a到z(u0061-u007a),由于历史的原因,还包括ASCII下划线(_或u005f)和美元符号($或u0024)。$字符只能在机器生成的源代码中使用,极少数情况下,用来访问遗留系统中已经存在的名称。
Java数字包括ASCII数字0~9(u0030-u0039)。
以下是一些合法的标识符:
salary
x2
_x3
row_count
以下是一些不合法的标识符:
2x
java+variable
2x不合法,是因为它以数字开头;java+variable不合法,是因为它包含加号。
还要注意,标识符的名称是区分大小写的。x2和X2是两个不同的标识符。
你可以这样声明一个变量:先写类型,后面跟着名称加上一个分号。如下是变量声明的几个例子:
byte x;
int rowCount;
char c;
在上面的例子中,我们声明了3个变量:
- byte类型的变量x。
- int类型的变量rowCount。
- char类型的变量c。
- x、rowCount和c是变量名或标识符。
还可以在同一行声明具有相同类型的多个变量,两个变量之间用逗号隔开。例如:
int a, b;
这等同于:
int a;
int b;
然而,在同一行声明多个变量的做法,我们不推荐,因为这降低了程序的可读性。
最后,可以在声明一个变量的同时给变量赋一个值:
byte x = 12;
int rowCount = 1000;
char c = 'x';
变量的命名惯例
变量名应该简短而有含义。它们应该是混合大小写的且以小写字母开头。后续的单词都以一个大写的字母开头。变量名不应该使用下划线_或美元符号$开头。例如,如下是与Sun的编码惯例一致的几个变量名的例子:userName、count和firstTimeLogin。