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