1、第 1 页注意:开始用功了注意:开始用功了!第 2 页配合例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平基本数据类型与数组基本数据类型与数组 Java程序设计教学做一体化教程程序设计教学做一体化教程 第第2章章第 3 页 整型类型整型类型 字符类型字符类型 浮点类型浮点类型 逻辑类型逻辑类型 输出、输出数据输出、输出数据 数组数组主要内容主要内容第 4 页2.1 整数类型整数类型 2.1.1核心知识核心知识 1int 型型 常量:常量:123,6000(十进制),十进制),077(八进制),(八进制),0 x3ABC(十六进制)。十六进制)。变量:变量:使用关
2、键字使用关键字intint来声明来声明intint型变量,声明时也可以赋给初值,型变量,声明时也可以赋给初值,例如:例如:int x=12,y=9898,z;intint型变量在内存占用型变量在内存占用4 4个字节,取值范围是:个字节,取值范围是:-231231-1。2byte 型型 常量:常量:Java中不存在中不存在byte型常量的表示法,但可以把一定范围内的型常量的表示法,但可以把一定范围内的int型常量型常量 赋值给赋值给byte型变量。型变量。变量:变量:使用关键字使用关键字bytebyte来声明来声明byte byte 型变量型变量 例如:例如:byte x=-12,tom=28,
3、handsome=98;bytebyte型变量在内存占用型变量在内存占用1 1个字节。取值范围是:个字节。取值范围是:-2727-1。3 3 short short 型型 常量:常量:和和bytebyte型类似,型类似,Java中也不存在中也不存在short型常量的表示法,但可以把一定型常量的表示法,但可以把一定 范围内的范围内的int型常量赋值给型常量赋值给short型变量。型变量。变量:变量:使用关键字使用关键字shortshort来声明来声明shortshort型变量型变量 例如:例如:short x=12,y=1234;shortshort型变量在内存占用型变量在内存占用2 2个字节。
4、取值范围是:个字节。取值范围是:-2-215152 21515-1-1。4.long 4.long 型型 常量:常量:longlong型常量用后缀型常量用后缀L L来表示,例如来表示,例如108108L(L(十进制十进制)、0712307123L(L(八进制八进制)、0 x3ABCL(十六进制十六进制)。变量:变量:使用关键字使用关键字longlong来声明来声明longlong型变量,型变量,例如:例如:long width=12L,height=2005L,length;longlong型变量在内存占用型变量在内存占用8 8个字节。取值范围是:个字节。取值范围是:-2-263632 263
5、63-1-1。第 5 页 2.1.2 能力目标能力目标 声明整型变量,并赋予初值,了解声明整型变量,并赋予初值,了解byte,short,int和和long型变量的取值范围。型变量的取值范围。第 6 页 2.1.3 任务驱动 Application2_1.java代码。代码。程序运行效果如图程序运行效果如图2.1。第 7 页 任务小结任务小结 Byte.MAX_VALUE和和Byte.MIN_VALUE分别表示分别表示byte型变量型变量的最大值的最大值127和最小值和最小值-128。Java没有无符号的没有无符号的byte,short,int和和long,因此,因此,unsigned int
6、 m;是错误的变量声明。是错误的变量声明。第 8 页2.22.2字符类型字符类型 2.2.1 核心知识核心知识 _11.Unicode字符集字符集 Unicode字符集最多可以识别字符集最多可以识别65536个字符。个字符。Unicode字符集的前字符集的前128个字符刚好是个字符刚好是ASCII码表中的字符。码表中的字符。va语言中用到的字母不仅包括通常的拉丁字母语言中用到的字母不仅包括通常的拉丁字母a、b、c等,也等,也包括汉语中的汉字、日文的片假名和平假名、朝鲜文、俄文、包括汉语中的汉字、日文的片假名和平假名、朝鲜文、俄文、希腊字母以及其它许多语言中的文字。希腊字母以及其它许多语言中的文
7、字。2.2.标识符标识符 用来标识类名、变量名、方法名、类型名、数组名、文件名用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。简单地说,标识符就是一个名的有效字符序列称为标识符。简单地说,标识符就是一个名字。字。以下是以下是Java关于标识符的语法规则。关于标识符的语法规则。标识符由字母、下划线、美元符号和数字组成,长度不受限制标识符由字母、下划线、美元符号和数字组成,长度不受限制。标识符的第一个字符不能是数字字符。标识符的第一个字符不能是数字字符。标识符不能是关键字。标识符不能是关键字。标识符不能是标识符不能是true、false和和null(尽管(尽管true
8、、false和和null不是不是Java关键字)。关键字)。第 9 页 2.2.1 核心知识核心知识 _23.关键字关键字 关键字就是关键字就是Java语言中已经被赋予特定意义的一些单词。不语言中已经被赋予特定意义的一些单词。不可以把关键字做为标识符来用。可以把关键字做为标识符来用。4 4charchar型数据型数据常量:常量:A,b,?,!,9,好,t,等,即用单引号(需在英文输入法状态下输入单引号)扩起的Unicode表中的一个字符。变量:变量:使用关键字char来声明char型变量,例如:char ch=A,home=家,handsome=酷;char型变量在内存占用2个字节,取值范围是
9、065535。第 10 页 2.2.2 能力目标能力目标 使用char声明变量,使用转义字符,观察字符在Unicode表中的索引位置。第 11 页 2.2.3 任务驱动任务的主要内容任务的主要内容 在主类的在主类的main方法中使用方法中使用char声明变量。声明变量。使用赋值语句重新给变量赋值。使用赋值语句重新给变量赋值。按字符和索引位置输出变量的值。按字符和索引位置输出变量的值。输出某些特殊的转义字符,比如双引号转义字符。输出某些特殊的转义字符,比如双引号转义字符。将下列将下列Application2_2.java中的中的【代码代码】替换为程序代码。替换为程序代码。程序运行效果如图程序运行
10、效果如图2.22.2。第 12 页 任务任务 小结小结(1)Java中的中的char型数据一定是无符号的,而且不允许使用型数据一定是无符号的,而且不允许使用unsigned来修饰所声明的来修饰所声明的char型变量。型变量。(2)在在Java中,可以用字符在中,可以用字符在Unicode表中排序位置的十六进制表中排序位置的十六进制转义(需要用转义(需要用u做前缀)来表示该字符,其一般格式为做前缀)来表示该字符,其一般格式为u*,例如,例如,u0041表示字符表示字符A,u0061表示字符表示字符a。第 13 页2.3 2.3 浮点类型浮点类型 2.3.1 核心知识核心知识 浮点型分为float
11、(单精度)和double型(双精度)。1.float型型 常量:常量:453.5439453.5439f f,21379.987F21379.987F,231.0f231.0f(小数表示法),小数表示法),2 2e40fe40f(2 2乘乘1010的的4040次方,指数表示法)。需要特别注意的是常量后面必须要次方,指数表示法)。需要特别注意的是常量后面必须要有后缀有后缀“f”f”或或“F”F”。变量:变量:使用关键字使用关键字float来声明来声明float型变量,型变量,例如:例如:float x=22.76f,tom=1234.987f,weight=1e-12F;精度精度:float变量
12、在存储变量在存储float型数据时保留型数据时保留8位有效数字。位有效数字。对于对于floatfloat型变量,内存分配给型变量,内存分配给4 4个字节,占个字节,占3232位。位。2.double 型型 常量:常量:2389.5392389.539d d,2318908.9872318908.987,0.050.05(小数表示法),小数表示法),1 1e-90e-90(1 1乘乘1010的的-90-90次方,指数表示法)。对于次方,指数表示法)。对于doubledouble常量,后面可以有后常量,后面可以有后缀缀“d”d”或或“D”D”,但允许省略该后缀。但允许省略该后缀。变量:变量:使用关
13、键字使用关键字doubledouble来声明来声明doubledouble型变量,型变量,例如:例如:double height=23.345,width=34.56D,length=1e12;对于对于doubledouble型变量,内存分配给型变量,内存分配给8 8个字节,占个字节,占6464位位 。精度精度:double变量在存储变量在存储double型数据时保留型数据时保留16位有效数字。位有效数字。第 14 页 2.3.2 能力目标能力目标 能区分float常量和double常量,掌握float和double型变量的精度 第 15 页 2.3.3 任务驱动任务的主要内容任务的主要内容
14、分别用分别用float和和double变量模拟计量工具计算出一枚戒指的变量模拟计量工具计算出一枚戒指的价值,即用价值,即用float和和double变量的值代表所计量出的物体质量。变量的值代表所计量出的物体质量。将下列将下列Application2_3.java中的中的【代码代码】替换为程序代码。替换为程序代码。程序运行效果如图程序运行效果如图2.32.3。第 16 页 任务任务 小结小结(1)比较比较float型数据与型数据与double型数据时必须注意数据的实际精度型数据时必须注意数据的实际精度。(2)%f按小数表示法输出按小数表示法输出float和和double型数据型数据,默认输出默认
15、输出6位小数。位小数。第 17 页2.4 2.4 逻辑类型逻辑类型 2.4.1 核心知识核心知识 可以使用逻辑类型变量存储可以使用逻辑类型变量存储“真真”、“假假”数据数据 常量:常量:true,false。变量:变量:使用关键字使用关键字boolean来声明逻辑变量,声明时也可以来声明逻辑变量,声明时也可以赋给初值,例如:赋给初值,例如:boolean male=true,on=true,off=false,isTriangle;第 18 页 2.4.2 能力目标能力目标 使用boolean声明变量,并用boolean变量存储true或false。第 19 页 2.4.3 任务驱动任务的主要
16、内容任务的主要内容判断判断3个整数代表的长度能否构成三角形的三边个整数代表的长度能否构成三角形的三边。将下列将下列Application2_4.java中的中的【代码代码】替换为程序代码。替换为程序代码。程序运行效果如图程序运行效果如图2.42.4。第 20 页 任务任务 小结小结(1)不可以把整型数据赋值给不可以把整型数据赋值给boolean变量。变量。(2)可以使用可以使用%b输出输出boolean型数据型数据。第 21 页2.5 2.5 类型转换运算类型转换运算 2.5.1 核心知识核心知识 当把一种基本数据类型变量的值赋给另一种基本类型变量时就涉当把一种基本数据类型变量的值赋给另一种基
17、本类型变量时就涉及到数据转换。及到数据转换。下列基本类型会涉及数据转换(不包括逻辑类型)。将这些类型下列基本类型会涉及数据转换(不包括逻辑类型)。将这些类型按精度从低到高排列按精度从低到高排列 byte short char int long float double(1)低到高的自动转换低到高的自动转换 当把级别低的变量的值赋给级别高的变量时,系统自动完成当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。数据类型的转换。(2)高到低的转换运算高到低的转换运算 当把级别高的变量的值赋给级别低的变量时,必须使用类型当把级别高的变量的值赋给级别低的变量时,必须使用类型转换运算,格
18、式如下:转换运算,格式如下:(类型名类型名)要转换的值要转换的值;例如:例如:int x=(int)34.89;如果输出x的值 将是34 第 22 页 2.5.2 能力目标能力目标 掌握基本类型数据的精度,能使用转换运算符将级别高的数据转换为级别低的数据。第 23 页 2.5.3 任务驱动用火车在托运行李时以公斤为单位计算费用(用火车在托运行李时以公斤为单位计算费用(12.6元元/kg),),忽略重量中的小数部分,即忽略不足一公斤之部分。忽略重量中的小数部分,即忽略不足一公斤之部分。用汽车在托运行李时以公斤为单位计算费用(用汽车在托运行李时以公斤为单位计算费用(22.5元元/kg),),将重量
19、中的小数部分进行四舍五入,即将不足一公斤之部分进行将重量中的小数部分进行四舍五入,即将不足一公斤之部分进行四舍五入。四舍五入。将下列将下列Application2_5.java中的中的【代码代码】替换为程序代码。替换为程序代码。程序运行效果如图程序运行效果如图2.52.5。第 24 页 任务任务 小结小结(1)为了四舍五入,可以将浮点数据加上为了四舍五入,可以将浮点数据加上0.5,再进行,再进行int型转换型转换运算。例如,运算。例如,(int)(15.9+0.5)的结果是的结果是16。(2)当把一个当把一个int型常量赋值给一个型常量赋值给一个byte、short和和char型变量时,型变量
20、时,不可超出这些变量的取值范围,否则必须进行类型转换运算不可超出这些变量的取值范围,否则必须进行类型转换运算。(3)一个常见的错误是在把一个一个常见的错误是在把一个double型常量赋值给型常量赋值给float型变量型变量时没有进行类型转换运算时没有进行类型转换运算 第 25 页2.6 2.6 输入、输出数据输入、输出数据 2.6.1 核心知识核心知识 1输入数据输入数据 从键盘为基本型变量输入值的主要步骤:从键盘为基本型变量输入值的主要步骤:使用使用Scanner类创建一个对象类创建一个对象 Scanner reader=new Scanner(System.in);reader对象调用下列
21、方法,读取用户在命令行输入的各种基本类型数据:对象调用下列方法,读取用户在命令行输入的各种基本类型数据:nextBoolean(),nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble()。程序执行上述方法,执行时将等待用户在命令行输入数据回车确认。程序执行上述方法,执行时将等待用户在命令行输入数据回车确认。2输出数据输出数据 (1)println()System.out.println()或或System.out.print()可输出串值、表达式的值,二者的可输出串值、表达式的值,二者的区别是前者输出数据后换行,
22、后者不换行。区别是前者输出数据后换行,后者不换行。(2)printf()printf输出数据的格式如下:输出数据的格式如下:System.out.printf(格式控制部分格式控制部分,表达式,表达式1,表达式,表达式2,表达式表达式n)格式控制部分由格式控制符号:格式控制部分由格式控制符号:%b、%d、%c、%f、%s和普通的字符组成,和普通的字符组成,普通字符原样输出。格式符号用来输出表达式的值。普通字符原样输出。格式符号用来输出表达式的值。第 26 页 2.6.2 能力目标能力目标 能从键盘为基本型变量输入值,能分别使用print()和printf()输出值。第 27 页 2.6.3 任
23、务驱动从键盘输入从键盘输入double型变量的值,输出型变量的值,输出double型变量的值。型变量的值。将下列将下列Application2_6.java中的中的【代码代码】替换为程序代码。替换为程序代码。程序运行效果如图程序运行效果如图2.62.6。第 28 页 任务任务 小结小结需要特别注意的是,在使用需要特别注意的是,在使用System.out.println()或或System.out.print()输出字符串常量时,不可以出现输出字符串常量时,不可以出现“回车回车”,如,如果需要输出的字符串的长度较长,可以将字符串分解成几部分,果需要输出的字符串的长度较长,可以将字符串分解成几部分
24、,然后使用并置符号:然后使用并置符号:“+”将它们首尾相接,将它们首尾相接,第 29 页2.7 2.7 数组数组 2.7.1 核心知识核心知识_11数组的结构数组的结构 数组是数组是相同类型相同类型的的变量变量按按顺序顺序组成的组成的一种复合数据类型一种复合数据类型,称,称这些相同类型这些相同类型 的的变量变量为数组的为数组的元素元素或或单元单元。数组。数组通过通过数组名加数组名加索引索引来来使用使用数组的数组的元素元素。2声明声明与与创建创建数组数组 声明声明数组数组包括包括数组数组变量变量的的名字名字(简称数组名)、数组的(简称数组名)、数组的类型类型。声明声明一维数组有一维数组有下列两种
25、格式下列两种格式:数组的数组的元素类型元素类型 数组名数组名;数组的数组的元素类型元素类型 数组名数组名;例如:例如:float boy;或或 float boy;声明数组后,就可以创建该数组,即给数组分配元素。为数组分配元素的声明数组后,就可以创建该数组,即给数组分配元素。为数组分配元素的格式如下:格式如下:数组名数组名=new 数组元素的类型数组元素的类型数组元素的个数数组元素的个数;例如:例如:boy=new float4;第 30 页 2.7.1 核心知识核心知识_23数组的使用数组的使用 一维数组通过索引符访问自己的元素,如一维数组通过索引符访问自己的元素,如boy0,boy1等。需
26、要注意的是等。需要注意的是索引从索引从0开始开始。4length的使用的使用 数组的元素的个数称作数组的长度。对于一维数组,数组的元素的个数称作数组的长度。对于一维数组,“数组名数组名.length”的值的值就是数组中元素的个数;例如,对于就是数组中元素的个数;例如,对于float a=new float12;a.length的值的值12。5数组的初始化数组的初始化 创建数组后,系统会给数组的每个元素一个默认的值,如,创建数组后,系统会给数组的每个元素一个默认的值,如,float型是型是0.0。在声明数组的同时也可以给数组的元素一个初始值,如:在声明数组的同时也可以给数组的元素一个初始值,如:
27、int a=100,200,300;第 31 页 2.7.1 核心知识核心知识_36数组的引用数组的引用 数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。例如,对于们就有完全相同的元素。例如,对于 int a=1,2,3,b =4,5;如果使用了如果使用了a=b;那么,那么,a中存放的引用和中存放的引用和b的相同,这时系统将释放最初的相同,这时系统将释放最初分配给数组分配给数组a的元素,使得的元素,使得a的元素和的元素和b的元素相同。的元素相同。第 32 页 2.7.2 能力目标能力目标 能声
28、明数组、创建一维数组,能使用length输出一维数组的长度。能输出数组的引用,以及将一个数组的引用赋值给另一个数组。第 33 页 2.7.3 任务驱动使用数组。使用数组。将下列将下列Application2_7.java中的中的【代码代码】替换为程序代码。替换为程序代码。程序运行效果如图程序运行效果如图2.102.10。第 34 页 任务任务 小结小结(1)可以一次声明多个数组,可以一次声明多个数组,int a,b;等价的声明是:等价的声明是:int a,b;(2)两个相同类型的数组如果具有相同的引用,它们就有完全相两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。同的元素。(3)
29、二维数组和一维数组一样,在声明之后必须用二维数组和一维数组一样,在声明之后必须用new运算符为运算符为数组分配元素,例如:数组分配元素,例如:int b;b=new int 36;或或 int b=new int36;(4)一个二维数组是由若干个一维数组构成的,例如,上述创建一个二维数组是由若干个一维数组构成的,例如,上述创建的二维数组的二维数组b就是由就是由3个长度为个长度为6的一维数组:的一维数组:b0、b1和和b2构构成的成的.(5)对于二维数组对于二维数组“数组名数组名.length”的值是它含有的一维数组的个的值是它含有的一维数组的个数。例如,对于上述二维数组数。例如,对于上述二维数
30、组b,b.length的值是的值是3(b0.length,b1.length和和b2.length的值都是的值都是6)。)。第 35 页2.8 2.8 小结小结 1.标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符2.Java语言有8种基本数据类型:boolean、byte、short、char、int、long、float、double。3.Java的关系和逻辑运算符和C语言的相同,需要注意的是其运算结果是boolean型数据true或flase(不是数字1或0)。4.数组是相同类型的数据元素按顺序组成的一种复合数据类型,数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。“本节结束咯本节结束咯偶都会了偶都会了太葱明了太葱明了”第 36 页