2.1 标识符和关键字
2.1.1 标识符
标识符的语法规则:
- 标识符由字母、下划线、美元符号和数字组成,长度不受限制。
- 标识符的第一个字符不能是数字字符。
- 标识符不能是关键字
- 标识符不能是true、false和null(尽管true、false和null不是Java关键字)
例如,以下都是标识符:
Hello_java、Hello_12$、$23Boy。
需要特别注意的是,标识符中的字母是区分大小写的,hello和Hello是不同的标识符。
2.1.2 关键字
Java中50个关键字:
2.2 基本数据类型
八种基本数据类型:
对于int型变量,内存分配给4个字节(byte).int型变量的取值范围是:-2^31~2^31-1
对于byte型变量,内存分配给1个字节,占8位,因此byte型变量的取值范围是 -128~127
对于short型变量,内存分配给2个字节,占8位,因此short型变量的取值范围 -2^15~ 2^15-1
long型常量用后缀L来表示,例如108L(十进制)、07123L(八进制)、0x3ABCL(十六进制)
对于long型变量,内存分配给8个字节,占64位,因此long型变量的取值范围是 -2^63~2^63-1。
Java中不存在byte和short型常量的表示法,但可以把byte或short范围内的int型常量赋值给byte或short型变量。
对于char型变量,内存分配给2个字节,占16位,最高位不是符号位,没有负数的char。char型变量的取值范围是0~65535。
float 型常量后面必须要有后缀f或F内存分配给4个字节,占32位,float型变量的取值范围是1.4E-45~3.4028235E38和-3.4028235E38~-1.4E-45。
float变量在存储float型数据时保留8位有效数字,实际精度取决于具体数值。
double 型内存分配给8个字节,占64位,double型变量的取值范围是4.9E-324~1.7976931348623157E308和-1.7976931348623157E308~-4.9E-324
double变量在存储double型数据时保留16位有效数字,实际精度取决于具体数值。
基本数据类型的转换
按精度从低到高排列:
byte short char int long float double
当把级别低的值赋给级别高的变量时,系统自动完成数据类型的转换。
当把级别高的变量的值赋给级别低的变量时,必须要使用显式类型转换(强制转换)运算,例如:
对于
int x = 1;
byte y ;
y = (byte)x;
是正确的,而y = x;是错误的。编译器不检查变量x的值是多少,只检查x的类型。
2.3 数组
2.3.1 声明数组
数组的元素类型 数组名字[ ];
数组的元素类型 [ ] 数组名字;
或
数组的元素类型 数组名字[][];
数组的元素类型 [] [] 数组名字;
例如:
float boy[ ];
char cat[ ][ ];
与C/C++不同,Java不允许在声明数组中的方括号内指定数组元素的个数。若声明:
int a[12];
或
int [12] a;
将导致语法错误。
2.3.2 创建数组
为数组分配内存空间的格式如下:
数组名字 = new 数组元素的类型[数组元素的个数];
例如:
boy= new float[4];
为数组分配内存空间后,数组boy获得4个用来存放float类型数据的内存空间(称为数组的元素或单元)
数组变量boy中存放着这些内存单元的首地址,该地址称作数组的引用,这样数组就可以通过索引操作这些内存单元。数组属于引用型变量,数组变量中存放着数组的首元素的地址,通过数组名加索引使用数组的元素,如boy[0] = 1.3F;
2.3.3 length的使用
对于一维数组,“数组名字.length”的值就是数组中元素的个数;对于二维数组“数组名字.length”的值是它含有的一维数组的个数。例如,对于
float a[] = new float[12];
int b[][] = new int[3][6];
a.length的值12;而b.length的值是3。
2.3.4 数组的初始化
声明数组时同时也可以给数组的元素一个初始值,如:
float boy[] = { 21.3f,23.89f,2.0f,23f,778.98f};
上述语句相当于:
float boy[] = new float[5];
然后
boy[0] = 21.3f; boy[1 ] = 23.89f; boy[2] = 2.0f;
boy[3 ] = 23f; boy[4] = 778.98f;
可以直接用若干个一维数组初始化一个二维数组,这些一维数组的长度不尽相同,例如:
int a[][ ]= { {1},
{1,1},
{1,2,1},
{1,3,3,1},
{1,4,6,4,1}
};
2.3.5 数组的引用
两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。例如,对于
int a[] = {1,2,3},b[ ] = {4,5};
内存模型如下图所示。
如果使用了下列赋值语句(a和b的类型必须相同):
a = b;
那么,a中存放的引用和b的相同,这时系统将释放最初分配给数组a的元素,使得a的元素和b的元素相同,a、b的内存模型变成如下图所示意。
2.4 枚举类型
使用关键字enum声明枚举类型,语法格式如下:
enum 枚举名
{ 常量列表
}
例如:
enum Season
{ spring,summer,autumn,winter
}
声明了名字为Season的枚举类型,该枚举类型有4个常量。
可以用枚举类型的枚举名声明一个枚举变量,例如:
Season x;
声明了一个枚举变量x。枚举变量x只能取值枚举类型中的常量,通过使用枚举名和“.”运算符获得枚举类型中的常量,例如:
x = Season.spring;