Java程序设计基础-第4章数组.ppt
,主讲:高悟实,JAVA程序设计基础,第四章 数组与字符串,3,通过本章的学习,主要掌握以下知识点:数组的基本概念 数组元素的访问 栈内存和堆内存 字符串 本章的重点:数组的定义与访问本章的难点:栈内存和堆内存 多维数组的定义与应用,4,4.1 数组的基本概念,所谓数组就是相同数据类型的元素按一定顺序排列的集合。在Java中数组元素可以由简单数据类型的量组成,也可以由对象组成。数组中的每个元素都具有相同的数据类型,可以用一个统一的数组名和一个下标来惟一地确定数组中的元素。,5,数组主要有如下几个特点:数组是相同数据类型的元素的集合;数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起;数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a0表示名字为a的数组中的第一个元素,a1代表数组a的每二个元素,依次类推。,6,4.2.1 一维数组的定义,使用Java的数组一般要经过三个步骤:声明数组创建空间创建数组元素并赋值前两个步骤的语法:数据类型 数组名;/声明一维数组数组名=new 数据类型个数;/分配内存组数组,举例:int x;x=new int10;,4.2 一维数组,7,在声明数组时,也可以将两个语句合并成一行,格式如下:数据类型 数组名=new 数据类型个数;例如:int x=new int 10;,8,4.2.2一维数组元素的访问,数组元素的引用方式:数组名下标其中“下标”可以是整型数或表达式。如a3+i(i为整数)。Java数组的下标是从0开始的。如:int x=new int 10;其中x0代表数组中第1个元素,x1代表第2个元素,x9为第10个元素,也就是最后一个元素。,9,【例4.1】声明一个一维数组,其长度为5,利用循环对数组元素进行赋值,然后再利用另一个循环逆序输出数组元素的内容。程序代码如下:,10,/app4_1.java 一维数组public class app4_1 public static void main(String args)int i;int a;/声明一个数组a a=new int5;/分配内存空间供整型数组a使用,其元素个数为5for(i=0;i=0;i-)/逆序输出数组的内容System.out.print(“a”+i+”=”+ai+”,t”);System.out.println(“n数组a的长度是:”+a.length);,11,该程序的运行结果如下:a4=4,a3=3,a2=2,a1=1,a0=0数组a的长度是:5,12,4.2.3 一维数组的初始化及应用,数组初始化格式:数据类型 数组名=初值0,初值1,初值n;例如:int a=1,2,3,4,5;,13,【例4.2】设数组中有n个互不相同的数,不用排序求出其中的最大值和次最大值。/app4_2.java 比较数组元素值的大小public class app4_2 public static void main(String args)int i,Max,Sec;int a=8,50,20,7,81,55,76,93;/声明数组a,并赋初值 if(a0a1)Max=a0;/Max存放最大值 Sec=a1;/Sec存放次最大值 else Max=a1;Sec=a0;,14,System.out.print(“数组的各元素为:”+a0+”“+a1);for(i=2;iMax)/判断最大值 Sec=Max;/原最大值降为次最大值 Max=ai;/ai为新的最大值 else/即ai不是新的最大值,但若ai大于次最大值 if(aiSec)Sec=ai;/ai为新的次最大值 System.out.print(“n其中的最大值是:”+Max);System.out.println(“次最大值是:”+Sec);,15,该程序运行结果为:数组的各元素为:8 50 20 7 81 55 76 93其中的最大值是:93 次最大值是:81,16,5.3.1 二维数组,声明与分配内存的格式:数据类型 数组名;数组名=new 数据类型 行数 列数;,4.3 多维数组,17,数据类型 数组名=new 数据类型 行数列数;,用较为简洁的方式声明数组的格式:,18,Java的多维数组不一定是规则的矩阵形式,如图5.5所示。,如:int x;x=new int 3;,19,由于x0、x1和x2都是数组引用变量,必须对它们赋值,指向真正的数组对象,才可以引用这些数组中的元素。x0=new int 3;x1=new int2;由此可以看出,x0和x1的长度可以是不一样的,数组对象中也可以只有一个元素。程序运行到这之后的内存分配情况如图4.6所示。,20,21,直接在声明二维数组时给数组赋初值格式:数据类型 数组名=第1行初值,第2行初值,第n+1行初值;,22,【例4.4】计算并输出杨辉三角形。,/app4_4.java 维数组应用的例子:显示杨辉三角形public class app4_4 public static void main(String args)int i,j;int Level=7;int iaYong=new intLevel;System.out.println(“杨辉三角形”);for(i=0;iiaYong.length;i+)iaYongi=new int i+1;iaYong00=1;,23,for(i=1;iiaYong.length;i+)/计算杨辉三角形 iaYongi0=1;for(j=1;j iaYongi.length-1;j+)iaYongij=iaYongi-1j-1+iaYongi-1j;iaYongi iaYongi.length-1=1;for(i=0;i iaYong.length;i+)/显示出杨辉三角形 for(j=0;j iaYongi.length;j+)System.out.print(iaYongij+”);System.out.println();,24,该程序的运行结果为:杨辉三角形11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1,25,5.3.2 三维以上的多维数组,要想提高数组的维数,只要在声明数组的时候将下标与中括号再加一组即可,所以三维数组的声明为int a;,而四维数组为int a;,依次类推。,26,4.4.1字符串变量的创建,格式一:String;=new String(”字符串”);如:String s;/声明字符串型引用变量s,此时s的值为nulls=new String(”Hello”);/在堆内存中分配空间,并 将s指向该字符串首地址,4.4 字符串,27,格式二:String=new String(”字符串”);如:String s=new String(”Hello”);,28,格式三:String=”字符串”;如:String s=”Hello”,29,4.4.2 String类的常用方法,调用Java定义的格式:.;,30,表4.1 String类的常用方法,31,/app4_6.java 字符串应用:判断回文字符串import java.io.*;public class app4_6 public static void main(String args)throws IOExceptionBufferedReader buf;int i=0,length;String str;boolean yorn=true;buf=new BufferedReader(new InputStreamReader(System.in);System.out.print(请输入字符串n);str=buf.readLine();length=str.length();,【例4.6】判断回文字符串。,32,while(ilength/2)if(str.charAt(i)=str.charAt(length-1-i)i+;else yorn=false;break;if(yorn)System.out.println(str+是回文字符串);elseSystem.out.println(str+不是回文字符串);,Thank You!,