java课程教案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例3通.1常一,维Ja数va组会的自使动用进(U行s数eIn组tA下rra标y)越界检查, 如果下标越界会产生数组下标越界异常。
例3.2 数组是引用类型(RefArray)
int intArray[]={18,-9,81,96,12};
int refArray[]; refArray=intArray;
注意!
河北软件职业技术学院
数组和方法
动态初始化:通过new为数组分配内存空间
格式1:
数组名=new 数组元素类型[数组元素个数];
例如:int intArray[];
//数组的声明
intArray=new int[10];
//内存空间的分配
格式2: 数组元素类型 数组名[]=new 数组元素类型[元素个数];
11 21 22 31 32 33
则:b[0]=a0; //数组b的第一行只包含一个元素,b[0].length=1
b[1]=a1; //第二行包含两个元素,b[1].length=2
b[2]=a2; //第三行包含三个元素,b[2].length=3
河北软件职业技术学院
数组和方法
二维数组元素的引用 格式:数组名[行下标][列下标] 例3.5 二维数组的使用。 int b[][]={{11},{21,22},{31,32,33}}; for(int i=0;i<b.length;i++) {
河北软件职业技术学院
数组和方法
3.2 Java语言的方法和方法重载
方法定义和使用的进一步说明
方法是动作发生的地方,方法定义了可以在对象上 进行的操作。 (1)数组作为方法的参数和返回值类型 例递3.数7 在数值J组和av作传a语为递言方地中法址方的法参间数参和数返的回传值递。通(A常rra有yS两or种t2方) 法:传 生成数组方法:static int[] creatIntArray(int n);
或 数组元素类型[] 数组名=new 数组元素类型[元素个数]; 例如:int intArray[]=new int[10];
河北软件职业技术学院
数组和方法
注意:用new为数组分配内存后,自动用数据类型的 默认值初始化所有的数组元素。各类数据类型的默认 值:整型为0,实型为0.0f或0.0d,字符型为‘\u0000’, 类对象(引用类型)初始化为null。
第3章 数组和方法
Java语言的数组 Java语言的方法和方法重载
河北软件职业技术学院
数组和方法
3.1 Java语言的数组
目标: 数组的概念 一维数组 二维数组
河北软件职业技术学院
数组和方法
数组的概念
在Java语言中,数组是一种复合数据类型,它是 一组相同类型的数据的有序集合。
递归出口:递归终止的条件
例:求fibonacci数列的第n项
fib(4)
long fib(int n)
fib(2)
{
if (n==0||n==1) return 1fi;b(0) fib(1) else return fib(n-1)+fib(n-2);
}
河北软件职业技术学院
fib(3)
fib(1) fib(2)
注意:Java中允许二维数组中每行的元素个数不同,即每 行的列数可以不同。
河北软件职业技术学院
数组和方法
例如: int b[][]=new int[3][];
那么,b.length=?
如果有如下定义:int a0[]={11}; int a1[]={21,22}; int a2[]={31,32,33};
{ 语句序列;
} main()方法不需要在程序中显示调用,而是通过Java虚 拟机自动调用。Java应用程序运行时,它是Java程序执行的 入口,系统自动执行该方法中的语句序列。
河北软件职业技术学院
数组和方法
参数args是一个字符串数组,用来接受运行Java程序 时,从命令行输入的一个或多个字符串参数。
例如:double d[]=new double[5];
d[0]、d[1]、d[2]、d[3]、d[4]的取值都为0.0。
例3.3 定义整型数组并初始化该数组,将数组中的元素 由小到大排序输出。(冒泡排序算法ArraySort)
例3.4 对象数组的应用。(ObjArray)
河北软件职业技术学院
数组和方法
河北软件职业技术学院
数组和方法
二维数组动态初始化可采用如下两种方法: (1)直接为每一维分配空间。
例如:int a[][]=new int[2][3]; (2)从最高维开始(必须从最高维开始),分别为每
一维分配空间。 例如:int a[][]=new int[2][];
a[0]=new int[3]; a[1]=new int[3];
例如:运行一个Java应用程序A,并传入两个参数。
java A Java “How to learn java”
传递给args[0]
传递给args[1]因为该字符串包 含空格,所以需用“”括起 来
例3.11 编写应用程序,比较命令行中给出的两个字符串
是否相等,并输出比较的结果。(StringParameters)
数组和方法
(2)类对象作为方法的参数和返回值类型
类对象作为方法的参数时,在方法体中访问对象的变 量、调用对象方法的格式:
对象名.变量名
ຫໍສະໝຸດ Baidu
对象名.方法名()
例3.8 编写小程序,求1!+2!+……+20!,要求把1!, 2!,……的结果放到一个数组中,并按每行3各显示该数 组的各个元素。(FindFactSum)
fib(n)=fib(n-1)+fib(n-2);
main()方法
fibArray()方法
fib()方法
调用fibArray()方法
多次调用fib()方法
河北软件职业技术学院
数组和方法
(4)方法的递归调用
如果一个方法定义中直接或间接调用它本身,就是方法
的递归调用。
递归体:递归的方式
递归方法一般由两部分组成:
注意:自定义函数mypaint()。
例3.9 编写一个小程序,使用Student类对象作方法参数。
注意:方法public void inceaseScore(Student stud);
河北软件职业技术学院
数组和方法
(3)方法的嵌套调用 方法中不能再定义其它方法,但方法中可以调用类自身
的其它方法或别的类的方法。 例3.10 编写程序,求Fibonacci数列的前n项。 Fibonacci数列定义:fib(0)=fib(1)=1;
Student[] stu; String[] str;
注意:在Java语言中,数组是一种复合数据类型,声明一个 数组并没有为数组元素分配内存,因此也不能使用他们。数 组只有经过初始化,得到存放此种数据的内存后才能使用。
河北软件职业技术学院
数组和方法
静态初始化 数组元素类型 数组名[]={初值1,初值2,……}; 例如:byte byteArray[]={48,59,20,52,41};
注意:用该方法定义和初始化数组时不必预先给出数组 的大小,系统根据初值的个数确定数组的大小,自动分 配相应的内存空间。
在Java语言中,数组的大小可以通过数组的length 属性得到。例如,byteArray.length的值为5。
河北软件职业技术学院
数组和方法
数组元素的引用 格式:数组名[下标] 注意:下标不能越界,取值范围是0~length-1。
河北软件职业技术学院
数组和方法
方法的重载
Java语言允许在一个类中定义几个同名的方法,但要 求这些方法具有不同的参数特征,这种做法称为方法的 重载(overloaded)。
不同的参数特征包括:
参数个数 例如:int GetSort(int x);
参数类型
int GetSort(int x,int y);
注意:str1.equals(str2)和str1==str2不同。
河北软件职业技术学院
数组和方法
例3.12 编写应用程序从命令行输入任意多个整数,将这些 整数从大到小排序后输出。(IntParameters)
args数组中的元素是字符串类型,不能当整数使用,需使用 整数类中的方法:Integer.parseInt()将其转换位整数. 因此:double d1=Double.parseDouble(“12.3”); float f1=Float.parseFloat(“12.3f”); double d2=Double.valueOf(“12.3”).doubleValue(); float f2=Float.vlueOf(“12.3f”).floatValue();
fib(0) fib(1)
数组和方法
main()方法
Java应用程序中,必须有一个类(而且只能有一个类) 定义一个main()方法,当一个源程序文件中包含一个或多个 类时,程序文件名一定要与包含那main()方法的类名相同。
main()方法的格式:
public static void main(String args[])
打印数组元素:static void printIntArray(int intArray[]) 求各把变元实并素参不的引值的影和用就值响:数是赋实st据对a值参ti类 象c给。i型的n方这t作引f法时in为用定,dS参。义实um数此中参(i进时n的和t行,i行行n传实t参参A递参r。分ra时将y对别[],自行占) 参己参用数的的了的地改不
for(int j=0;j<b[i].length;j++) sum+=b[i][j];
}
河北软件职业技术学院
行、列下标 不能越界。
数组和方法
数组的赋值
在Java语言中,由于数组是一个对象,所以不能用赋值 运算符来拷贝一个数组。通过特殊的通用方法arraycopy()来 实现。它是System类中的静态方法。 arraycopy()方法的格式为:
二维数组
在Java语言中,二维数组被看作是数组的数组。 二维数组的定义 格式为:数据类型 数组名[][];
或
数据类型[][] 数组名;
二维数组的初始化
静态初始化: 在定义数组的同时 为数组分配空间
二维数组的初始化
动态初始化:
使用new运算符为 数组分配空间
例如:int intArray[][]={{1,2,3},{4,5,6}};
求最同大的值内:址存st传a空ti送c间i给n。t行f(in参基dM,本a即x数(i行n据t参i类n执t型A行r作ra实y为[]参参) 的数地进址行。传因递
按升时序,排是序此传:对值st行a传ti参c递v的)oi改d b变ub会bl影eS响ort实(in参t i。ntArray[])
河北软件职业技术学院
public static void arraycopy(src, src_pos,dst, dst_pos, count); 其中,src表示源数组名; dst表示目的数组名;
src_pos为整型,表示源数组的起始下标值; dst_pos为整型,表示目的数组的起始下标值; count为整型,表示要拷贝的数组元素的个数。
河北软件职业技术学院
数组和方法
arraycopy()功能:把源数组src中从下标值src_pos开始的元 素复制到从下标值dst_pos开始的目的数组dst中,复制的 元素个数为count。
例3.6 System.arraycopy()方法的使用。(CopyArray)
int x[]={78,89,92,76,95,87}; int y[]={0,0,0,0}; System.arraycopy(x,0,y,0,y.length);
例如:int GetSort(int x); int GetSort(double x); 参数次序
例如:int GetSort(int x,double y);
int GetSort(double x,int y);
河北软件职业技术学院
数组和方法
注意:
返回值类型不是重载的依据。 当类中有多个重载的方法,调用该类的某个重载方
注意:
数组元素
在一个数组中每个元素的数据类型都是相同的。
在一个数组中所有元素共用一个数组名,利用数 组名和下标就可唯一的标识每一个元素。
数组要经过定义、分配内存及赋值后才能使用。
河北软件职业技术学院
数组和方法
一维数组
定义 数组元素类型 数组名[];
或 数组元素类型[] 数组名; 例如:int intArray[];