Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串

上传人:w****i 文档编号:94451049 上传时间:2019-08-07 格式:PPT 页数:79 大小:876KB
返回 下载 相关 举报
Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串_第1页
第1页 / 共79页
Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串_第2页
第2页 / 共79页
Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串_第3页
第3页 / 共79页
Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串_第4页
第4页 / 共79页
Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串》由会员分享,可在线阅读,更多相关《Java语言程序设计 工业和信息化普通高等教育十二五 规划教材 教学课件 ppt 作者 相洁 呼克佑 第4章 数组与字符串(79页珍藏版)》请在金锄头文库上搜索。

1、第4章 数组与字符串,本章主要内容 数组的概念、声明、创建、初始化和使用方法; 数组编程方法; 字符串的概念; String类、StringBuffer类中的有关方法; 正则表达式与字符串的替换和分解。,4.1 数组,数组的主要特点如下: (1)一个数组中的元素应该是相同数据类型的。 (2)数组中的各个元素是有序的,它们在内存中是按照先后顺序连续存放在一起的。 (3)每个数组元素用其所在数组的名字和数组下标来确定。 (4)数组的下标是从0开始的,数组的长度是指其所包含的数组元素的个数。 除了基本数据类型外,Java还提供了数组类型,数组类型是一种引用数据类型,数组元素可以是简单数据类型,也可以

2、是对象数据类型。,4.1.1 一维数组 Java的数组数据类型是引用数据类型,要想使用数组,必须经过定义数组、创建数组和数组初始化等步骤。 1.一维数组的声明 声明数组包括数组的名字、数组包含的元素的数据类型。 声明一维数组的格式有如下两种: 数组元素类型 数组名;/格式1 数组元素类型 数组名;/格式2 例如:为方便计算4名同学的平均成绩,可以声明能够保存4个同学成绩的数组,该数组的声明可以任意采用如下两种方式之一: double score; double score ;,4.1 数组,数组元素既可以是简单数据类型,也可以是对象等引用数据类型。例如,可以定义一个3名学生的数组,每个元素均为

3、一个学生对象,其声明如下: Student student; Student student; 2.数组的创建 Java不同于以前基本数据类型变量的声明,声明一个数组时,并不在内存中给数组分配任何空间,仅仅创建了一个引用数组的存取地址。数组声明的目的只是告诉系统一个新的数组的名称和类型,数组本身不能存放任何数组元素,现阶段的数组值为null。因此,使用数组之前,需要先使用new关键字创建数组,为数组分配指定长度的内存空间。,4.1 数组,为数组分配内存空间的格式如下: 数组名 = new 数组元素的类型 数组的长度; 例如: score = new double 4; student = ne

4、w Student3; 这样,就给数组score分配了内存空间,用来保存4个double类型的数据,为student分配了内存空间,用来保存3个Student对象。 3.数组的初始化 数组创建后,不对其进行初始化,系统会根据其类型自动为元素赋值。如果数组的元素是基本类型的元素,数组中元素默认初始化的值是基本类型的默认值,如表4-1所示。如果数组元素是对象等引用数据类型,元素的默认初始化值是null。,4.1 数组,表4-1基本数据类型的数组元素的默认初值,4.1 数组,也可以在声明数组的同时给数组进行初始化,例如: double score = 98.8,85,78,100; 这个初始化语句相

5、当于以下语句: double score = new double 4; score0 = 98.8; score1 = 85; score2 = 78; score3 = 100; 数组元素是对象等引用数据类型时,数组初始化时需要创建对象,例如: student = new Student3; student0 = new Student(“zhang ”); student1 = new Student(“wang ”); student2 = new Student(“zhao ”);,4.1 数组,4.数组的使用 (1)数组的长度 所有的数组都有一个属性length(长度),它存储了数

6、组元素的个数。例如,score.length指明数组score的长度。 (2)数组元素的访问 使用数组时要注意下标值不要超出范围,数组元素的下标从0开始,直到数组元素个数减l为止,如果下标超出范围,则运行时会产生“数组访问越界异常”。在实际应用中,经常借助循环来控制对数组元素的访问,访问数组的下标随循环控制变量变化。,4.1 数组,【例4-1】逐个输入并计算10个学生的平均成绩和最好成绩。 源程序如下: import java.io.*; import javax.swing.JOptionPane; public class Ex4_1_StudentScore public static

7、void main(String args) throws IOException int k, count = 2;/ count为学生的个数 double score = new doublecount;/ 学生的成绩数组 double doubleSum = 0.0, doubleAver = 0.0,maxScore=0.0;,4.1 数组,/ 学生的总成绩、平均成绩和最高成绩 boolean contiGo = true; String str; BufferedReader buf = new BufferedReader( new InputStreamReader(System

8、.in); for (k = 0; k count; k+) while (contiGo) System.out.print(“请输入第“ + (k + 1) + “个学生的成绩:“); str = buf.readLine( ); try / 处理输入非数值数据或输入的数是0 scorek = Double.parseDouble(str);,4.1 数组,if (0 scorek | 100 maxScore) maxScore = scorek; ,4.1 数组,doubleAver = doubleSum / count;/平均成绩保留2位小数 System.out.println(

9、“这“ + count + “个同学的平均成绩是:“ + doubleAver); System.out.println(“这“ + count + “个同学的最好成绩是:“ + maxScore); (3)数组的复制 可以把一个数组的变量赋值给另外一个数组,但是两个变量引用的都是同一个内存空间,因此,这种情况下,改变一个数组的值,另一个数组变量也会改变。例如: int num =4,2,3,1,9,0; int numCopy = num; numCopy2=2;,4.1 数组,以上数组复制语句的执行过程如图4-1所示,执行以上语句之后,num2的值也由原来的3变为2。,图4-1 数组复制,

10、4.1 数组,如果确实需要将数组中的元素的值复制给另外一个元素,而又不想改变原数组的值,可以采用System类中的arrayCopy()方法,其格式如下: System.arraycopy(src, srcPos, dest, destPos, length) 该方法可以将src源数组中从srcPos开始的连续length个元素复制到dest数组的从destPos开始位置,且src和dest数组指向不同的内存空间。 【例4-2】逐个输入10个学生的成绩,并将其从大到小逆序输出。 源程序如下: import java.io.*; import javax.swing.JOptionPane; p

11、ublic class Ex4_2_StudentScore ,4.1 数组,public static void main(String args) throws IOException int k, count = 5;/ count为学生的个数 double score = new doublecount;/ 学生的成绩数组 boolean contiGo = true; String str; BufferedReader buf = new BufferedReader( new InputStreamReader(System.in); for (k = 0; k scorek |

12、 100 scorek) ,4.1 数组,JOptionPane.showMessageDialog(null, “成绩不应该0, 请重新输入。“, “提示信息“, JOptionPane.QUESTION_MESSAGE); else break; catch (Exception ne) JOptionPane.showMessageDialog( null, “输入的不是数据,不符合规定,请重新输入。“, “提示信息“, JOptionPane.QUESTION_MESSAGE); ,4.1 数组,/ 采用冒泡法,对成绩排序 double scoreCopy = new doubleco

13、unt+1; double temp = 0; System.arraycopy(score, 0, scoreCopy, 1, score.length); for (k = 1; k scoreCopym + 1) temp = scoreCopym; scoreCopym = scoreCopym + 1; scoreCopym + 1 = temp; ,4.1 数组,System.out.println(“这“ + score.length + “个同学的成绩如下:“); for (int j = 0; j score.length; j+) System.out.print(scor

14、ej + “t“); System.out.println(“n 这“ + score.length + “个同学的成绩从低到高排序如下:“); for (int j = 1; j scoreCopy.length; j+) System.out.print(scoreCopyj + “t“); 以上程序中使用了System.arraycopy方法,因此scoreCopy修改并不影响score元素的值。,4.1 数组,4.1.2 多维数组 Java语言将多维数组看作数组的数组,也就是说,Java允许定义数组的元素是一维数组或多维数组。例如,可将二维数组看成是一个特殊的一维数组,其每一个元素均是

15、一个一维数组;三维数组也可被看成是二维数组构成的数组;依次类推,n维数组的每个元素都是n-1维数组。 由于多维数组的元素也是数组,所以需要为数组元素分配相应的存储空间,分配空间可以在创建数组的同时进行,也可以用new运算符为数组元素分配内存。如果多维数组中每维数组的长度不同,那么就造成数组空间的分配不是连续的。当然,一维数组的空间仍然是连续分配的。 下面主要以二维数组为例,说明二维数组如何进行定义、创建和使用等,多维数组的情况与二维数组类似。,4.1 数组,1.二维数组的声明 声明二维数组有以下两种格式: 数组元素类型 数组名 ;/格式1 数组元素类型 数组名;/格式2 例如: double score ; 或 double score; 2.二维数组的初始化 二维数组的初始化可以通过new关键字初始化,或在声明的同时使用赋值语句初始化。 (1)用new初始化 对于已经声明的二维数组,可以使用new关键字对其进行初始化,格式如下: 数组名 = new 数组元素的类型 数组的行数数组的列数;,4.1 数组,例如: score = new double 43; 表明score是一个4行3列的数组,初始化时每个元素均为0.0。 二维数组的元素是一维数组,因此,初始化时也可允许各行单独进行。例如可以采用如下方式进行初始化: double score; score = new dou

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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