最新Java实用教程第4讲方法与数组(共22张PPT课件).pptx
第4讲 方法(fngf)和数组4.1 数组4.2 方法4.3本讲小结(xioji)讲后练习第一页,共二十二页。第4讲 方法(fngf)和数组4.1 数组Java中的数组是具有相同(xin tn)类型的、用一个标示符名称封装到一起的一个基本数据类型序列或对象序列。4.1.1 一维数组(1) 数组的声明数组通过方括号下标操作符 来定义和使用,要声明一个数组可以使用下面的两种方式:把方括号放在类型的后面:int a;或者把方括号放在变量的后面:int a ;第二页,共二十二页。(2) 数组的初始化1)直接赋初值如:int a=1,2,3,4,5,6;在声明数组时直接赋值。/ ArrayInitOne.javapublic class ArrayInitOne public static void main(String args) int a = 1,2,3,4,5,6;决不能把上面(shng min)的语句分开使用,这样编译器会报错:int a;a = 1,2,3,4,5,6;第三页,共二十二页。2)使用关键字new创建(chungjin)数组如:int a = new int10;使用new创建数组时必须指定数组的长度,然后对数组中的元素逐一赋值。逐一赋值前,数组中的元素值全部为“0”;/ ArrayInitTwo.javapublic class ArrayInitTwo public static void main(String args) int a = new int10;for (int i = 0;i a.length;i+)ai = i + 5;a.length代表数组a的长度,即数组中元素的个数,如果在创建数组时,并不知道数组要存储的元素个数,那该怎么呢?第四页,共二十二页。Java允许创建数组时使用变量表示数组的长度,但这个变量必须先被初始化。/ ArrayInitThree.javaimport java.util.Scanner;public class ArrayInitThree public static void main(String args) Scanner scan = new Scanner(System.in);System.out.println(请输入数组的长度:);int x=scan.nextInt();int a = new intx;for (int i = 0;i a.length;i+)ai = i + 5; /scanner类是个扫描(somio)类,其对象可以从键盘上获得输入第五页,共二十二页。(3)使用关键字new时直接赋初值如:int a = new int 1,2,3,4,5,;/ ArrayInitFour.javapublic class ArrayInitFour public static void main(String args) int a = new int1,2,3,4,5,;对比:这种初始化的方式比第一种初始化的方式要灵活,因为第一种方式只能在声明数组的时候进行。而第三种方式可以把数组在创建并赋值时当做(dngzu)参数传递出去,如下面程序所示:第六页,共二十二页。/ ArrayInitFive.javapublic class ArrayInitFive public static void printArray(int a)for (int i = 0;i a.length;i+)System.out.print(ai+ );public static void main(String args) printArray(new int1,2,3,4,5,);第七页,共二十二页。可以继续修改上面的程序,把创建数组的部分去掉,继而演变为可变长参数列表(li bio),当然printArray方法的形式要稍加改变。/ VariableParameter.javapublic class VariableParameter public static void printArray(int. a)/可变参数列表:java类型后跟三个点for (int i = 0;i a.length;i+)System.out.print(ai+ );System.out.println();public static void main(String args) printArray(1,2,3);printArray(1,2,3,4,5);printArray(1,2,3,4,5,6,7);第八页,共二十二页。(3)数组的遍历1)使用循环遍历数组中元素(yun s);2)使用foreach遍历数组中元素;3)使用Arrays类中的toString方法遍历数组中元素。第九页,共二十二页。下面程序展示了常用的遍历(bin l)数组的方法:/ ArrayTraversal.javaimport java.util.Arrays;public class ArrayTraversal public static void main(String args) int b = 1,2,3,4,5,6,7,8,9,10,;/ 使用for循环遍历数组bfor (int i = 0;i b.length;i+)System.out.print(bi + );第十页,共二十二页。 System.out.println();/ 使用(shyng)foreach遍历数组bfor (int x:b)System.out.print(x + );System.out.println(); / 使用Arrays中的toString方法遍历数组bSystem.out.println(Arrays.toString(b); 第十一页,共二十二页。4.1.2 二维数组(1)数组的声明:如:int a;int a ;(2)数组的初始化(将在下面的程序中体现)1)直接赋初值2)使用关键字new创建(chungjin)数组3)使用关键字new时直接赋初值(3)数组的遍历第十二页,共二十二页。二维数组的初始化也有三种方式,下面程序展示了这三种初始化数组的方式:/ DyadicArrayInit.javapublic class DyadicArrayInit public static void main(String args) /声明数组时赋值int a = 1,2,3,4,5,6,7,8,9;/使用(shyng)关键字new创建数组,然后逐一赋值int b = new int23;for (int i = 0;i b.length;i+)for (int j = 0;j bi.length;j+)bij = i + j;/使用关键字new创建数组时赋值int c = new int10,20,30,40,50,60;第十三页,共二十二页。/打印三个数组,对数组进行(jnxng)循环遍历for (int i = 0;i a.length;i+)for (int j = 0;j ai.length;j+)System.out.print(aij + );System.out.println();for (int i = 0;i b.length;i+)for (int j = 0;j bi.length;j+)System.out.print(bij + );System.out.println();for (int i = 0;i c.length;i+)for (int j = 0;j ci.length;j+)System.out.print(cij + );System.out.println(); 第十四页,共二十二页。4.2 方法(fngf)Java中习惯把“函数”称作“方法(fngf)”,其基本组成包括:修饰符、返回值、方法(fngf)名、参数和方法(fngf)体。如:public static int getCount( int i, int j) / 方法体第十五页,共二十二页。4.2.1 方法的调用方法的调用方法可以有返回值,如getCount方法。也可以没有返回值,这是其返回类型为void,如:public static void showCount( int i, int j) / 方法体调用有返回值的方法时,有两种方式,第一种方式是把其赋值给一个变量,如:int count = getCount(3,4);第二种方式是直接输出其返回值,如:System.out.println(getCount(3,4);如果(rgu)方法的返回值为void,那么对其调用就只能是在main方法或其它方法中直接列出这个方法的名字了。如:public static void main(String args) showCount(3,4);第十六页,共二十二页。4.2.2 变量的作用域变量的作用域在Java中,作用域是由花括号“”的位置决定.在方法体中声明的变量或方法的参数称为(chn wi)局部变量,局部变量是有作用域的,其作用域从声明变量的地方开始,直到包含该变量的块结束为止。如:public class ScopeTest public void scope(int n)/此处只有n可用int i = 1;/此处只有i和n可用int j = 10;/此处i、n和j都可用/此处只有i和n可用/此处i、n和j都不可用第十七页,共二十二页。4.2.3 参数的传递Java包含两种类型的参数,基本数据类型的参数和复合数据类型的参数。(1)基本数据类型的参数传递:传数值。基本数据类型有八个,分别(fnbi)是:boolean、char、byte、short、int、long、float和double。基本数据类型作为参数时,传递的是数值(2)复合数据类型的参数传递:传地址值。复合数据类型包括类型性、接口类型、数组类型等。复合数据类型作为参数时,传递的是地址。第十八页,共二十二页。4.2.4 方法重载在一个类中可以定义多个同名的方法,这称为方法重载。只能通过参数的不同来区分这些同名的方法,参数的不同包括参数的个数不同和参数的类型不同。如果(rgu)试图通过方法返回类型的不同来区分重载方法,编译器会报错。如:/ FunctionOverloading.javapublic class FunctionOverloading public static void methodOne(int i) public static void methodOne(double i) public static void methodOne(int i,int j) public static int methodOne(int i)return i;/编译错误public static void main(String args) 第十九页,共二十二页。4.3本讲小结(xioji)本讲第一节主要讲述了数组的相关(xinggun)内容,包括一维数组的声明、初始化、元素的遍历、元素的操作,二维数组的声明、初始化等。第二节主要讲述了方法的相关(xinggun)内容,包括方法的定义、方法的调用、方法的参数传递及方法重载第二十页,共二十二页。讲后练习(linx) 1、编写程序:实现十进制数和十六进制数之间的相互(xingh)转换。 2、编写程序:打印1000以内的所有回文素数。如131、313、757。 3、编写程序:打印1000以内的所有反素数。如17是素数、71也是素数,称17和71是一对反素数。第二十一页,共二十二页。内容(nirng)总结第4讲 方法(fngf)和数组。i a.length。for (int x:b)。j ai.length。i c.length。j ci.length。int count = getCount(3,4)。public static void main(String args)。public void scope(int n)。3、编写程序:打印1000以内的所有反素数第二十二页,共二十二页。