《Java程序设计及应用》课件

上传人:我*** 文档编号:145246589 上传时间:2020-09-18 格式:PPT 页数:23 大小:2.84MB
返回 下载 相关 举报
《Java程序设计及应用》课件_第1页
第1页 / 共23页
《Java程序设计及应用》课件_第2页
第2页 / 共23页
《Java程序设计及应用》课件_第3页
第3页 / 共23页
《Java程序设计及应用》课件_第4页
第4页 / 共23页
《Java程序设计及应用》课件_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《《Java程序设计及应用》课件》由会员分享,可在线阅读,更多相关《《Java程序设计及应用》课件(23页珍藏版)》请在金锄头文库上搜索。

1、第3讲:Java语言基础(2),内容提要,基本类型的类型转换 强制类型转换 自动类型转换 数组 使用数组的基本步骤 步骤组合 多维数组 数组处理工具 数组的优缺点,教学要求,1.正确理解类型转换机制并能够熟练编程处理。 2.理解数组的原理,并能够熟练使用数组进行编程。,1 基本类型的类型转换,类型转换的必要性 在实际编程过程中经常需要把一种类型的数据赋给另一种类型的变量,或者对不同类型的数据进行运算,这时就需要进行类型的转换 。 强制类型转换 也称为显式类型转换,当被转换数据的类型取值范围大于目标类型的取值范围时,就需要进行强制类型转换,其语法格式如下: (目标类型) 被转换的数据 举例: i

2、nt k=3; byte b=(byte)k;,强制类型转换注意事项,强制类型转换是从高类型向低类型转换,转换后的结果可能会出现两个问题: (1)精度损失。浮点型整型,则小数丢失,例如 int b=(int)12.12。 (2)溢出问题。当被转换数据超出了目标类型的取值范围时会发生溢出问题,例如 byte b=(byte)123456789.12。,自动类型转换,自动类型转换也称为隐式类型转换,在8个基本类型中只有数值型的数据能够进行自动类型转换,且源数据的类型取值范围小于目标类型的取值范围,即 byte short int long float double (*) char int lon

3、g float double (*)按照从左到右的顺序能够进行自动转换。,类型转换注意事项,(1)无论是自动转换还是强制转换,转换的只是变量或者表达式的“读出值”,而变量或者表达式自身的类型和值都未被改变。 (2)自动类型转换顺序(*)中注意short和char虽然都占用16bits,但地位不是对等的,例如: 1 byte a=97; 2 short s=a; /该行正确,发生了类型自动转换 3 char c=97; /该行正确,变量c的值是字符a 4 c=a; /该行编译不通过,原因可能是损失精度 5 c=s;,注意事项(续),(3)int类型转换为float,当有效数字个数超过8个;或者将

4、long类型转换为double,当有效数字个数超过18个,就会发生精度损失,例如: int i=1234567890; float f=i;/此时 f=1.23456794E9,而不是 1234567890.0 (4)由float向double类型转换时,如果使用了关键字strictfp,则精度不会有损失,否则精度可能有损失。,2 数组,数组的概念 数组是一种集合数据类型,它是由类型相同的数据组成的有序数据集合,在Java中数组是对象,继承了Object类并实现了Cloneable、java.io.Serializable接口,从而Object中的方法可被继承到数组中使用。 数组的变成步骤 声

5、明 分配空间 初始化,2.1 声明数组,语法格式为: datatype varName; datatype varName ; /也可以把 放在 varName 的后面 注: 的前后可以有零个、一个或多个空格。其中的datatype可以是基本数据类型(8个),也可以是引用类型(包括类、抽象类、接口)。例如: int a; int b; String c; Object d ; 方括号在数组变量名的前后都可以,建议采用在变量名前的方式。,2.2 分配空间,语法格式为: 变量名=new 类型数组长度; 例如: a=new int3; /分配了3个内存空间 b=new int 4; c=new St

6、ring2; 只有创建Java对象时才使用new关键字,从这一点也可看出,数组是Java对象。,2.3 初始化,初始化就是为数组的成员赋初始值,一般采用for循环,例如: for (int i=0;ia.length;i+) /尽量不要采用 i3,应尽量采用 a.length ai=2; 注意 数组的索引(index)是从0开始的,索引的类型是int,故byte、short、char、int类型的变量可以作为索引变量使用。a.length是使用了数组对象的length属性,length的值是在分配空间阶段由系统根据分配空间的大小来自动赋值的。对数组的越界访问是不允许的,虽然编译代码没有问题,但

7、运行过程中Java会进行是否越界访问检查,一旦发现越界访问,则抛出ArrayIndexOutOfBoundsException异常,关于异常处理请详见第5章,数组使用的组合,上述三个步骤是使用数组编程的三个基本步骤,这三个步骤可以组合在一起,其组合方式有: 2.1+2.2 2.2+2.3 2.1+2.2+2.3,组合:2.1+2.2,语法为: 类型 变量名=new 类型数组长度; 类型 变量名=new 类型数组长度; /也可以这样 例如: int a=new int3; int b=new int4;,组合:2.2+2.3,语法为: 变量名=new 类型值1,值2,.,值n; 类型 变量名=值

8、1,值2,.,值n; 例如: a = new int1,2,3; /这称为动态创建数组 b = 1,2,4,3; /这称为静态创建数组,组合: 2.1+2.2+2.3,语法为: 类型 变量名=new 类型值1,值2,.,值n; 类型 变量名=值1,值2,.,值n; 例如: int a=new int1,2,3; int b=new int31,2,3; /错误 double d=1.1,2.1,3.0;,多维数组,Java并不存在真正的多维数组,所谓的多维数组是由多个一维数组嵌套合成的,即把多维数组看作是数组的数组,使用这种方法把多维数组逐一分解,直到分解成一维数组为止。 这种机制使得Java

9、多维数组具有很强的灵活性。 多维数组编程同样遵循前面介绍的三个基本步骤,其组合方式同样适用于多维数组。,多维数组例程,1 /*声明*/ 2 int a; 3 int b; 4 int c; 5 int d; 6 7 /*分配空间*/ 8 a=new int23; /2 行 3 列 9 10 /*下面代码只分配了 3 行,没有分配列,此时 b 是一维数组, 11 *其长度为 3 ,而 b 的每个元素又是一维数组,其空间还未分配。 12 */ 13 b=new int3; 14 /*下面代码为 b 的每个元素分配空间 */ 15 b0=new int3; /或 b0=new int 1,2,3,或

10、 b0=1,2,3 16 b1=new int2; 17 b2=new int1; 18,例程(续),19 /*初始化*/ 20 for(int i=0;ia.length;i+) 21 for(int j=0;jai.length;j+) 22 aij=i+j; 23 24 25 26 for(int i=0;ib.length;i+) 27 for(int j=0;jbi.length;j+) 28 bij=i+j; 29 30 31 32 /*静态初始化,分配空间与赋初值同时完成*/ 33 c=1,2,5; 34 35 /*动态分配空间与赋初值同时完成*/ 36 d=new int1,2

11、,0,3,4;,数组处理工具,java.util.Arrays类是专门用于操作数组的,提供了搜索、排序、复制等静态方法。Arrays类中常用的方法如下: equals():比较两个数组是否相等,所谓两个数组相等是指两个数组拥有相同的元素个数,且所有对应元素相等。 fill():将值填入数组中。 sort():用来对数组进行排序。 binarySearch():在排好序的数组中寻找元素。 另外一个工具是System.arraycopy(),用于对数组进行复制。,数组的优缺点,数组的优点是数据结构简单,能够进行随机访问,且访问的速度很快。其缺点有: (1)数组一旦分配了空间,其大小就不能再改变。 (2)数组中所有元素的数据类型都必须相同。 (3)不能对数组实施插入或者删除操作。 (4)无法判断数组中实际存在有多少元素,length只是告诉数组的容量。 若读者在编程时需要上述特征,则不能使用数组,而是使用Java Collection框架(Framework)类,详见第8章。,小结,基本类型的类型转换 强制类型转换 自动类型转换 数组 使用数组的基本步骤 步骤组合 多维数组 数组处理工具 数组的优缺点,作业,习题 2 7,9,10,11,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号