第二章Java常量和变量
第2章 常量和变量
编写Java程序,通常要用到标识符、关键字和数据类型。本章便来讲解标识符的
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
、关键字的概念和Java数据类型。
2.1 标 识 符
1(标识符的概念
用来标识类名、变量名、常量名、接口名、包名、方法名、数据类型名、数组名和文件名的字符串称为标识符,即标识符就是一个名称。
2(Java语言对标识符的规范
Java语言规定:
(1)标识符必须以大小写字母、数字、下划线和美金符号$组成。
(2)不可以用数字开头。
例如:liu、_zhao、$wang等等都是合法的标识符;而33ning,you#,@meng都不是合法的标识符。
(3)Java语言严格区分大小写。例如:Love和love是两个完全不同的标识符。
(4)标识符的长度没有限制,但是不宜过长。
以上是Java对定义标识符的基本规定,在实际使用中,我们还人为制定了一些规则:
(1)标识符由完整的单词或者一组单词组成,尽可能清楚的表达标识符所代表的含义。
(2)变量名以小写字母开头。
(3)类名的首个字母要大写。
这些人为制定的规则是否遵守并不会影响Java编译器的工作,但是养成良好的标识符定义习惯可以使程序易于阅读和理解。
3(标识符的字符集
Java语言使用的Unicode标准字符集,该字符集最多可以标识65536个字符,Unicode标准字符集中的前128个字符刚好构成ASCII字母表。每个国家的字母表都是Unicode标准字符集的一个子集。
2.2 关 键 字
关键字是Java语言专门使用的一些单词,程序员不能使用这些单词给类名、变量名、常量名、接口名、包名、方法名、数据类型名、数组名和文件名命名。Java语言的关键字主要包括:implements、import、instanceof、int、interface、long、nativenew、null、package、private、public、return、short、static、super、swith、synchronized、this、throw、true、try、void、while 、abstract、boolean、break、byte、case、catch、char、continue、do、double、else extends、false、find、finally、float、for等。
2.3 常量、变量和数据类型
所谓变量名就是指内存中一块存储空间的名称,我们称这种空间为变量,给这种空间起的名字就是变量名。我们可以把一个数据放进这种空间,也可以从这种空间中取走一个数据。内存中可以有许多个这样的小块空间。变量中的数据可以是编程者赋予的,也可以是程序运行过程中,临时存储进去的运算结果。一个存储空间在同一时间只只能保存一个数据。
常量名也是指内存中的一块存储空间的名称,这种存储空间中的数据在程序运行过程中一直都不会发生改变,我们称这种空间为常量,给这种空间起的名字就是常量名。常量名和变量名都是给存储空间起的名字。
Java语言将数据分为两大类型,即基本数据类型和引用数据类型。基本数据类型分成整数型、浮点型、字符型、字符串型等等;引用数据类型是指系统定义的类或程序员自定义的类。
常量和变量根据所存储的数据类型不同,也分成整数型、浮点型、字符型、字符串型等等。常量名和变量名所代表的存储空间都是用来存储数据的,因此,在使用常量和变量保存数据以前,都要给常量和变量进行数据类型定义,即,说明常量和变量保存的数据类型。定义后的常量或变量,可以通过赋值语句给常量或变量赋予数据,常量只能赋值一次值,变量可以多次赋值。
2.3.1 Java基本数据类型
基本数据类型包括逻辑类型、整数类型、字符类型和浮点类型。下面分别说明4种基本数据类型的常量表示方式、变量定义格式。
1(逻辑类型(boolean)
(1)逻辑常量
16
逻辑常量只有两个值:true、false。
(2)逻辑变量的定义
使用关键字boolean来定义逻辑变量。如定义逻辑变量a1、a2、a3的格式如下: boolean a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
boolean a1=true, a2=false, a3; 2(整型类型
整型常量:例如,356(十进制,首位不能为0)、1000(十进制)、0567(首位为0,代表
八进制数)、0x9ABCD(首位是0x,代表十六进制数)。
整型变量又分为4种:
(1)int型变量
使用关键字int来定义int型变量。如定义int型变量a1、a2、a3的格式如下: int a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
int a1=33, a2=-155, a3;
(2)byte型变量
使用关键字byte来定义byte型变量。如定义byte型变量a1、a2、a3的格式如下: byte a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
byte a1=63, a2=-12, a3=77;
(3)short型变量
使用关键字short来定义short型变量。如定义short型变量a1、a2、a3的格式如下: short a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
short a1=12, a2=-174, a3=999;
(4)long型变量
使用关键字long来定义long型变量。如定义long型变量a1、a2、a3的格式如下: long a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
long a1=18, a2=777, a3=6655;
17
3(字符类型(char)
(1)字符型常量
一个字符常量用单引号括起,如'A'、'b'、'c'、'!'、'7'、'爱' 等都是字符型常量。Unicode
字符集可以表示65536个字符型常量。
(2)字符型变量定义
使用关键字char来定义char型变量。如定义char型变量a1、a2、a3的格式如下: char a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
char a1='?', a2='12', a3='来';
char型常量在内存中占2个节的存储空间,以正整数的方式保存,因此,最高位不是
用来表示符号的。
(3)转义字符
一些控制字符不能显示出来,它代表某种含义。表2-1表示了这些控制字符的含义。
表 2-1 控制字符的含义
控制字符 描述
换行,将光标移到下一行的开始位置 ‘\n’
将光标移到下一个制表符的位置 ‘\t’
回车,将光标移到当前行的开始,不是移到下一行 ‘\r’
输出一个反斜杠 ‘\\’
输出一个单引号 ‘\’ ’
输出一个双引号 ‘\”’
(4)字符型数据在内存中的表示
字符型数据在内存中以int型数据表示。如,字符常量'd'在内存中的值是100( int型
数据)
要想知道一个字符在内存中保存的数字大小,使用int数据类型显式转换,将字符型数
据转换成int型数据。如,System.out.println(int)'h')语句,就能把字符'h'对应的数字输出来。 【例2.1】查找某个字符在Unicode表中的位置。
程序名:charLocation.java
【程序源代码】
public class charLocation {
public static void main(String args[]){
char word1='爱',word2='J';
int a=2009;
System.out.println("爱字在Unicode中的位置是:"+(int)word1);
System.out.println("字母J在Unicode中的位置是:"+(int)word2);
18
System.out.println("Unicode表中2009位置上的字符是:"+(char)a);
}
}
【程序运行结果】
爱字在Unicode中的位置是:29233
字母J在Unicode中的位置是:74
Unicode表中2009位置上的字符是:?
4(浮点类型
浮点型数据分为单精度型(float)和双精度型(double)。
(1)单精度型(float)
? 常量:例如,567.539f、7889.3f、987.2f、777.00f。书写单精度常量数据时,在数据最后必须加f。否则,表示的常量是双精度数据。如,888.0表示的是双精度数据。
? 变量定义:使用关键字float来定义float型变量。如定义float型变量a1、a2、a3的格式如下:
float a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
float a1=13.78f, a2=-99.7f, a3;
(2)双精度型(double)
?常量:例如,5678.577d(d可以省略)、908.55、4567.000d。都是双精度常量。
?变量定义:使用关键字double来定义double型变量。如定义double型变量a1、a2、a3的格式如下:
double a1, a2, a3; //定义时没有给变量赋值
定义时给变量赋初值的格式如下:
double a1=113.8567, a2=-12.78d, a3=8901.66;
5(java基本数据类型总结
Java的基本数据类型总结如下表2-2所示:
表2-2 java基本数据类型说明
数据类型 描述 例子 boolean 布尔类型,变量在内存所占空间是1个字节长度。 boolean e = true; char 变量在内存所占空间是2个字节长度。范围为'\u0000','\uffff' char c = 'A' byte 变量在内存所占空间是1个字节长度。范围为-128,127 int i = 80;
19
short 变量在内存所占空间是2个字节长度。范围为-32768,32767 int i = 9999;
31变量在内存所占空间是4个字节长度。int型变量的取值范围是-2,int int i =700000; 312-1。
6.363变量在内存所占空间是8个字节长度。范围为-2,2-1。 long long k = 338880;
变量在内存所占空间是4个字节长度。float型变量的取值范围大约是
-383838-38float float f = 10.01f; 10,10和-10,-10。
变量在内存所占空间是4个字节长度。double型变量的取值范围大约double -308308308-308double 是10,10和-10,-10。 d=55.7876;
2.3.2 基本数据类型转换
有时需要将不同类型的数据混合起来运算,或者将一种基本类型的数据赋给另一种类型的变量,就要用到数据类型转换。
数据类型的转换有两种形式。
, 自动转换:从低精度向高精度转换,系统自动进行,不需要程序员干预。
, 强制转换:程序员必须使用类型转换符进行转换。强制转换运算可能导致精度的
损失。
1(数据类型精度排序
数据类型按精度从低到高的排列顺序如下:
byte short int long float double
低 高
2(从低精度向高精度转换
从低精度向高精度转换属于自动转换。
(1)赋值语句中的转换
例如:
float xx=500; //把整数500转换为浮点数
这里将整数500赋给浮点型变量xx,是从低精度向高精度转换,系统自动进行。如果输出xx的值,结果将是500.0。
20
(2)表达式中的数据转换
例如:
int h=73;
float y1=27.6f;
double f=h+y1;
混合数据类型表达式h+y1包含两个不同类型的数据,即整数h和单精度型数据y1。在计算表达式以前,系统自动将低精度的数据h转换为高精度的float型数据,转换后将两个数据进行求和,最后将结果数据(float型)转换为更高精度的double型数据并赋给变量f。
3(从高精度向低精度转换
从高精度向低精度转换属于强制转换,需要通过数据类型实现。强制转换的语句格式如下:
(type)data
data为需要转换的变量或常量。type取值为byte、short、int、long、float、double。此语句将数据从data数据类型转换为type数据类型。
(1)赋值语句中的转换
例如:
int x=(int)600.78f;
这里将float型数据600.78f赋给整型变量x,是从高精度向低精度转换,需要在被转换的数据前使用目标类型转换符(int)。如果输出x的值,结果将是600。
(2)表达式中的数据转换
例如:
int m=23;
float f1=27.6f;
int k=m+(int)f1;
混合数据类型表达式m+(int)f1包含两个不同类型的数据,即整数m和单精度型数据f1。在计算表达式以前,先将单精度型数据f1通过类型转换符(int)转换为整型数据。如果输出k的值,结果将是50。
【例2.2】将一种数据类型转换成另外一种数据类型。
程序名:typeConver.java
【程序源代码】
public class typeConvert {
public static void main(String args[]){
int x;
double y;
y=2009.04; x=(int)y; y=x;
21
System.out.println("转换后x的值是:"+x);
System.out.println("转换后y的值是:"+y);
}
}
【程序注释】
语句x=(int)y;将导致精度的丢失。
【程序运行结果】
转换后x的值是:2009
转换后y的值是:2009.0
2.3.3 Java引用数据类型
引用类型包括类和接口,将在第4章中讲解相关内容。
2.4 本 章 小 结
Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。
Java语言将数据分为两大类型,即基本数据类型和引用类型。基本数据类型包括逻辑类型、整数类型、字符类型和浮点类型。
常量和变量都属于某种数据类型。在使用变量前,先要声明其所属数据类型;常量则是以其书写形式来规定其数据类型的。
2.5 习 题
1(上机运行下列程序,输出的结果是什么?
public class Test
{
public static void main(String args[]
{ for (int I=1;I<20;I++) System.out.println((char)I);
System.out.println(I/5);
}
}
2.编写程序计算圆柱的体积。读入半径和高,用下列公式计算体积: 面积=半径*半径*3.14,
体积=面积*高。
22
3.编写程序,用大块字母表示“Welcome to Java!”,每个字母由与它表示的同样的字母组成,占7行。例如W表示如下:
w w
w w
w w w
w w w w
w w w w
w w
4. 编写程序,读入10到1000的一个整数并将其各位数字之和赋给一个整数。如,整数932,各位数字之和为14。
(提示:利用%运算符分解数字,并用/运算符去除分解出来的数字。如932%10=2,932/10=93.
5. 编写程序,读入double型数,并检验该数是否在1到100之间。如果输入5,则输出如下:
The number 5 between 1 and 100 is true. 若输入120,则输出如下:
The number 120 between 1 and 1000 is false. 6.解释关键字的概念。关键字与标识符有什么区别,
23