《Java语言3Java数组、语句和函数.ppt》由会员分享,可在线阅读,更多相关《Java语言3Java数组、语句和函数.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 Java数组、语句数组、语句和函数和函数数组的定义数组的定义数组数组是很重要的数据结构是很重要的数据结构,由同一类型相关的数由同一类型相关的数据结构组成,是静态实体,有链表据结构组成,是静态实体,有链表,队列队列,堆栈等堆栈等数据结构数据结构,JavaJava还提出了数组的类还提出了数组的类vectorvector。在在JavaJava中,数组是对象,数组类型是引用类型,中,数组是对象,数组类型是引用类型,数组变量实际上是对数组的引用。数组变量实际上是对数组的引用。JavaJava数组是动态分配的,并在分配过程中记录数数组是动态分配的,并在分配过程中记录数组的长度。组的长度。数组
2、下标从数组下标从0 0开始。开始。数组数组n 在函数中定义的一些在函数中定义的一些基本类型的变量和对象的引用变量基本类型的变量和对象的引用变量都在函都在函数的数的栈内存栈内存中分配。中分配。n 定义一个变量时,定义一个变量时,JavaJava就在就在栈中栈中为这个变量分配内存空间,当为这个变量分配内存空间,当超过变量的作用域后,超过变量的作用域后,JavaJava会会自动释放掉自动释放掉为该变量所分配的内存为该变量所分配的内存空间,该内存空间可以立即被另作他用。空间,该内存空间可以立即被另作他用。n 堆内存堆内存用来存放由用来存放由newnew创建的创建的对象和数组对象和数组。n 在堆中分配的
3、内存,由在堆中分配的内存,由JavaJava虚拟机的虚拟机的自动垃圾回收器自动垃圾回收器来管理。来管理。n 栈中数组或对象的栈中数组或对象的引用变量引用变量,取值等于数组或对象在堆内存中,取值等于数组或对象在堆内存中的的首地址首地址。可在程序中使用栈中的引用变量来访问堆中的数组或。可在程序中使用栈中的引用变量来访问堆中的数组或对象。对象。数组数组n堆内存和栈内存堆内存和栈内存nint x;int x;x=new int100;x=new int100;x=null;x=null;的内存状态变化情况的内存状态变化情况数组数组n 创建数组创建数组int ia=1,2,3,4;int ia=1,2,
4、3,4;int ia=new int3,4,5;int ia=new int3,4,5;int a5;int a5;/声明数组时,不能指定其长度,编译时声明数组时,不能指定其长度,编译时将出错。数组大小仅当对它赋值(或分配)时才能确定将出错。数组大小仅当对它赋值(或分配)时才能确定正确的方式如:正确的方式如:int a=new int5;int a=new int5;n 使用数组时要注意的问题使用数组时要注意的问题 空指针异常空指针异常 数组越界异常:访问超出数组边界的元素数组越界异常:访问超出数组边界的元素 如何得到数组长度如何得到数组长度 myArray.lengthmyArray.len
5、gth 应用实例:应用实例:书书P50P50数组的数组数组的数组n如何理解多维数组,类似如何理解多维数组,类似我们的棋盘。我们的棋盘。njava java 中并没有真正的多维中并没有真正的多维数组,只有数组的数组,数组,只有数组的数组,JavaJava中数组的数组不一定是中数组的数组不一定是规则矩阵形式。规则矩阵形式。n定义一个数组的数组定义一个数组的数组int xx;int xx;xx=new int3;xx=new int3;xx0=new int3;xx0=new int3;xx1=new int2;xx1=new int2;数组的数组数组的数组n 数组的数组中元素的引用方式,如:数组的
6、数组中元素的引用方式,如:x12x12。n 规则矩阵数组可以在一条语句中产生,如:规则矩阵数组可以在一条语句中产生,如:int xx=new int23;int xx=new int23;n 数组的数组的静态初始化数组的数组的静态初始化,如:,如:int xx=3,2,7,1,5,6;int xx=3,2,7,1,5,6;与数组相关函数与数组相关函数n使用使用System.arraycopy()函数拷贝数组函数拷贝数组 n用用Arrays.sort 来排序数组来排序数组数组的应用实例数组的应用实例n 用用Java输出杨辉三角形输出杨辉三角形 定义二维数组描述三角形元素:定义二维数组描述三角形元
7、素:aROW+1aROW+1分配每一行数组的列数分配每一行数组的列数final int ROW=8;final int ROW=8;int a=new intROW+1;int a=new intROW+1;forfor(int i=0;i=ROW;i+)(int i=0;i=ROW;i+)ai=new inti+1;ai=new inti+1;数组的应用实例数组的应用实例n 用用Java输出杨辉三角形输出杨辉三角形 for(int i=0;i=ROW;i+)for(int i=0;i=ROW;i+)for(int j=0;j=ai.length-1;j+)for(int j=0;j=b)?a
8、:b;switch语句的选择结构语句的选择结构Switch(表达式表达式)case 常量表达式常量表达式1:语句语句1;case 常量表达式常量表达式2:语句语句2;case 常量表达式常量表达式n:语句语句n;default:语句语句n;ndefaultdefault语句是可选的,它接受除上面接受值的其语句是可选的,它接受除上面接受值的其他值,通俗的讲,就是谁也不要的都归它。他值,通俗的讲,就是谁也不要的都归它。ncasecase后面可以跟多个语句,这些语句可以不用大括后面可以跟多个语句,这些语句可以不用大括号括起来。号括起来。switch语句的选择结构语句的选择结构nswitchswitc
9、h语句的判断条件,可接受语句的判断条件,可接受int,byte,char,int,byte,char,shortshort型型,不可以接受其他类型,不可以接受其他类型(为什么不能在为什么不能在switchswitch语句中对字符串进行检测?书语句中对字符串进行检测?书P61)P61)n一旦碰到第一次一旦碰到第一次casecase匹配,就会开始顺序执行以后匹配,就会开始顺序执行以后所有的程序代码,而不管后面的所有的程序代码,而不管后面的casecase条件是否匹配,条件是否匹配,后面后面casecase条件下的代码都会被执行,直到碰到条件下的代码都会被执行,直到碰到breakbreak语句为止。
10、我们可以利用这个特点来用同一段语句语句为止。我们可以利用这个特点来用同一段语句处理多个处理多个casecase条件条件 n编写程序计算某年某月有多少天?(书编写程序计算某年某月有多少天?(书P55P55)while循环语句循环语句While(表达式表达式)语句;语句;int x=1;while(x3)System.out.println(x=+x);x+;留心:留心:while表达式的括号后面一定不要加表达式的括号后面一定不要加“;”实例书实例书P59do-while循环语句循环语句do do 语句语句while(while(表达式表达式);/);/必然会执行一次必然会执行一次public c
11、lass TestDopublic class TestDo public static void main(String args)public static void main(String args)int x=3;int x=3;while(x=0)while(x=0)System.out.println(ok1);System.out.println(ok1);x+;x+;int y=3;int y=3;do do System.out.println(ok2);System.out.println(ok2);y+;y+;while(y=0);while(y=0);do-while循
12、环语句循环语句n编写一个程序,这个程序不断地读取从键盘上输入编写一个程序,这个程序不断地读取从键盘上输入的字符,直到读到字符的字符,直到读到字符q时,程序结束。时,程序结束。n提示:调用提示:调用System.in.read();可以读取到一个从可以读取到一个从键盘上输入字符对应的整数。体会在什么样的情况键盘上输入字符对应的整数。体会在什么样的情况下,用下,用do-while循环语句比循环语句比while循环语句方便。循环语句方便。do-while循环语句循环语句int x=0;do try x=System.in.read();catch(Exception e)System.out.pri
13、ntln(char)x);while(x!=q);考虑采用考虑采用While 语句,该程序如何编写语句,该程序如何编写?for循环语句循环语句for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3)语句语句for(int x=1;x10;x+)for(int x=1;x10;x+)System.out.println(x=+x);System.out.println(x=+x);等效于等效于int x=1;int x=1;for(;x10;x+)for(;x10;x+)System.out.println(x=+x);System.out.println(x=+x);等效于
14、等效于for循环语句循环语句int x=1;int x=1;for(;x10;)for(;x=10)if(x=10)break;break;System.out.println(x=+x);System.out.println(x=+x);x+;x+;实例:书实例:书P57P57 break语句语句breakbreak语句可以语句可以中止循环中的子语句和中止循环中的子语句和switchswitch语句,即跳出循语句,即跳出循环环。一个无标号的。一个无标号的breakbreak语句会把控制传给当前语句会把控制传给当前(最内最内)循环循环(whilewhile,dodoforfor或或Switch
15、)Switch)的下一条语句。如果有标号,的下一条语句。如果有标号,控制会被传递给当前方法中的带有这一标号的语句。如:控制会被传递给当前方法中的带有这一标号的语句。如:st:while(true)st:while(true)while(true)while(true)break st;break st;continue语句语句ncontinue语句只能出现在循环语句语句只能出现在循环语句(while,do,for)的子语句块中,无标号的的子语句块中,无标号的continue语句的作用语句的作用是跳过当前循环的剩余语句块,接着执行下一次循是跳过当前循环的剩余语句块,接着执行下一次循环。环。用用continue语句打印出语句打印出 0到到10之间的所有奇之间的所有奇数的程序例子。数的程序例子。for(int i=0;i10;i+)for(int i=0;i1,x1,x2,x2,x1的结果,用二进制(Integer.toBinaryString(x)、十进制和十六进制数(Integer.toHexString(x)的表示方法分别输出。5、编写程序,不断读取从键盘上输入的字符,直到读到字符q时,程序结束。分别用do-while语句和while语句两种方式实现。6、数组的应用。编写Java应用程序,输出杨辉三角形。
限制150内