第2章 标识符、关键字和数据类型
2.1 标识符和关键字
2.2 Java语言的基本数据类型
2.3 Java的数组
2.1 标识符和关键字
用来标识类名、变量名、方法名、类型名、
数组名、文件名的有效字符序列称为标识符。
简单地说,标识符就是一个名字。
Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符。使用 Unicode字符集。
关键字就是 Java语言中已经被赋予特定意义的一些单词。不可以把这类词作为名字来用。
如,break,case,super,this等等
2.2 Java语言的基本数据类型
基本数据类型也称作简单数据类型。 Java语言有
8种简单数据类型,分别是:
boolean,byte,short,int,long,float、
double,char。
这 8种数据类型习惯上可分为 4大类型:
逻辑类型,boolean
字符类型,char
整数类型,byte,short,int,long
浮点类型,float,double
1.逻辑类型
常量,true,false。
变量的定义
使用关键字 boolean来定义逻辑变量,定义时也可以赋给初值:
boolean x=true,tom=false,jiafei;
2.int 型
使用关键字 int来定义 int型整型变量,定义时也可以赋给初值:
int x= 12,tom=-1230,height=9898,number;
对于 int型变量,内存分配给 4个字节
( byte),一个字节由 8位( bit)组成,4
个字节占 32位。
int型变量的取值范围是,-231~231-1
3.byte 型
使用关键字 byte 来定义 byte 型整型变量,
可以一次定义几个,定义时也可以赋给初值:
byte m=-12,deep=28,speed=98;
对于 byte型变量,内存分配给 1个字节,占
8位,因此 byte型变量的取值范围是,-27~
27-1。
4.short 型
使用关键字 short来定义 short型整型变量,
可以一次定义几个,定义时也可以赋给初值:
short x=12,tom=1234,漂亮 =9876,jiafei;
对于 short型变量,内存分配给 2个字节,占
16位,因此 short型变量的取值范围是,-
215~ 215-1。
5,long 型
使用关键字 long来定义 long型整型变量,对于 long型变量,内存分配给 8个字节,long
型变量的取值范围是 -263~ 263-1。
6.Char型
常量 Java使用 unicode字符集,uincode表中的字符就是一个字符常量,字符常量需使用单引号扩起,例如,'A','b','?','!','9'、
'好 ','\t','き ','δ'
变量 使用关键字 char来定义字符变量,可以一次定义几个,定义时也可以赋给初值:
char x='A',tom='爽 ',jiafei;
char型变量,内存分配给 2个字节,占 16位,最高位不是符号位,没有负数的 char。 char型变量的取值范围是
0~65536。要观察一个字符在 unicode表中的顺序位置,
必须使用 int类型显式转换,不可以使用 short型转换,
因为 char的最高位不是符号位。同样,要得到一个
0~65536之间的数所代表的 Unicode表中相应位置上的字符也必须使用 char型显式转换。
下面的 例子 1中,分别用显式转换来显示一些字符在
Unicode表中的位置,以及某些位置上的字符。
例子 1(效果如图 2.1)
class Example2_1
{ public static void main (String args[ ])
{ char chinaWord='你 ',japanWord='ぁ ';
int p1=36328,p2=38358;
System.out.println("汉字 \'你 \'在 unicode表中的顺序位置,"+(int)chinaWord);
System.out.println("日语 \'ぁ \'在 unicode表中的顺序位置,"+(int)japanWord);
System.out.println("unicode表中第 "+p1+"位置上的字符是,"+(char)p1);
System.out.println("unicode表中第 "+p2+"位置上的字符是,"+(char)p2);
}
}
7.float 型
常量 123.5439f,12389.987F,123.0f,2e40f
( 2乘 10的 40次方,科学计数法)
变量使用关键字 float来定义 float型变量,可以一次定义几个,定义时也可以赋给初值:
float x= 12.76f,tom=1234.987f;
对于 float型变量,内存分配给 4个字节,占 32位,
其取值范围大约是 10-38— 1038和 -1038— -10-38.
8.double 型
常量 12389.5439d( d可以省略),
12389908.987,123.0,6e-140( 6乘 10的 -140
次方,科学计数法)
变量使用关键字 double来定义 double型变量,可以一次定义几个,定义时也可以赋给初值:
double x=12.76,tom=1234098.987;
double型变量,内存分配给 8个字节,占 64
位,double型变量的取值范围大约是 10-308~ 10308
和 -10308 ~ -10-308。
9.基本数据类型的转换当我们把一种基本数据类型变量的值赋给另一种基本类型变量时,就涉及到数据转换。基本类型数据的下列类型会涉及到数据转换,不包括逻辑类型和字符类型。我们将这些类型按精度从“底”到“高”排列了顺序。
byte short int long float double
当把在级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。例如,
float x=100;
如果输出 x的值,结果将是 100.0
例如
int x=50;
float y;
y=x;
如果输出 y的值,结果将是 50.0。
当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。显示转换的格式:
(类型名 )要转换的值 ;
例如:
int x=(int)23.89;
long y=(long)34.98F;
如果输出 x,y的值将是 23和 34,强制转换运算可能导致精度的损失例子 2 (效果如图 2.2)
public class Example2_2
{
public static void main (String args[ ])
{ int c=2200;
long d=8000;
float f;
double g=123456789.123456789;
c=(int)d;
f=(float)g; //导致精度的损失,
System.out.print("c= "+c);
System.out.println(" d= "+d);
System.out.println("f= "+f);
System.out.println("g= "+g);
}
}
2.5 数组数组是相同类型的数据按顺序组成的一种复合数据类型。通过数组名加数组下标来使用数组中的数据。下标从
0开始。
1.声明数组声明数组包括数组的名字、数组包含的元素的数据类型。
声明一维数组有下列两种格式:
数组元素类型 数组名字 [ ];
数组元素类型 [ ] 数组名字;
如,int a[]; 或 int[] a;
2.5 数组声明二维数组有下列两种格式:
数组元素类型 数组名字 [][];
数组元素类型 [] [] 数组名字;
2.创建数组声明数组仅仅是给出了数组名和元素的数据类型,要想使用数组还必须为它分配内存空间,即创建数组。在为数组分配内存空间时必须指明数组的长度。格式如下:
数组名字 = new 数组元素的类型 [数组元素的个数 ];
例如:
boy= new float[4];
2.5 数组
3.数组元素的使用一维数组通过下标符访问自己的元素,如 boy[0],
boy[1]等。需要注意的是下标从 0开始,因此,数组若是 7个元素,下标到 6为止,如果你将来使用下标超过 6
将会发生异常。
二维数组也通过下标符访问自己的元素,如
a[0][1],a[1][2]等 。下标也是从 0开始。
2.5 数组
4.数组的初始化创建数组后,系统会给每个数组元素一个默认的值,
如,float型是 0.0。
我们在声明数组时同时也还可以给数组的元素一个初始值,如:
float boy[]={ 21.3f,23.89f,2.0f,23f,778.98f};
下面让我们结合这个例子来看怎样使用数组。
返回例子 3 (效果如图 2.4)
public class Example2_3
{ public static void main(String args[])
{ int a[]={100,200,300};
int b[]={10,11,12,13,14,15,16};
b=a;
b[0]=123456;
System.out.println("数组 a:"+a[0]+","+a[1]+","+a[2]);
System.out.println("数组 b:"+b[0]+","+b[1]+","+b[2]);
System.out.println("数组 b的长度,"+b.length);
}
}