您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 从头认识java-48数组的初始化-可变参数列表
从头认识java-4.8数组的初始化(2)-可变参数列表接着上一节,我们这一章节来聊一下数组的另外一个应用:可变参数列表1.可变参数列表带来的改变在没有出现可变参数列表的时候,我们一般会使用数组来替代,但是有一个问题,每一次都需要先建立一个数组作为参数,不能动态的形成数组作为参数。[java]viewplaincopy1.packagecom.ray.ch04;2.3.publicclassTest{4.publicstaticvoidprintArray(Object[]objects){5.for(inti=0;iobjects.length;i++){6.System.out.println(objects[i]);7.}8.}9.10.publicstaticvoidmain(String[]args){11.Object[]objects={1,2,newInteger(3),newBook()};12.printArray(objects);13.}14.}15.16.classBook{17.}输出:123com.ray.ch04.Book@1f4689e我们把上面的代码改成可变参数列表的形式:[java]viewplaincopy1.packagecom.ray.ch04;2.3.publicclassTest{4.publicstaticvoidprintArray(Object...objects){5.for(inti=0;iobjects.length;i++){6.System.out.println(objects[i]);7.}8.}9.10.publicstaticvoidmain(String[]args){11.printArray(1,2,newInteger(3),newBook());12.}13.}14.15.classBook{16.}输出:123com.ray.ch04.Book@61de33上面的代码使得参数更加灵活,不用每次都先预定一个数组,可以动态的形成数组参数列表。而且,可变参数可以传空值进去。2.可以控制可变参数列表的类型[java]viewplaincopy1.packagecom.ray.ch04;2.3.publicclassTest{4.publicstaticvoidprintArray(Book...books){5.for(inti=0;ibooks.length;i++){6.System.out.println(books[i]);7.}8.}9.10.publicstaticvoidmain(String[]args){11.//printArray(1);//抛异常12.printArray(newBook());13.}14.}15.16.classBook{17.}上面的代码控制了输入参数的类别,因此,当我们输入1时,会抛异常。我们下面再举一个例子:[java]viewplaincopy1.packagecom.ray.ch04;2.3.publicclassTest{4.publicstaticvoidprintIntArray(int...ints){5.System.out.println(ints.getClass());6.for(inti=0;iints.length;i++){7.System.out.println(ints[i]);8.}9.}10.11.publicstaticvoidprintBookArray(Book...books){12.System.out.println(books.getClass());13.for(inti=0;ibooks.length;i++){14.System.out.println(books[i]);15.}16.}17.18.publicstaticvoidmain(String[]args){19.printIntArray(1,2,3);20.printBookArray(newBook(),newBook());21.}22.}23.24.classBook{25.}输出:class[I123class[Lcom.ray.ch04.Book;com.ray.ch04.Book@61de33com.ray.ch04.Book@14318bbclass[I代表int的数组类型,class[Lcom.ray.ch04.Book;代表是book的数组类型。3.基本类型的方法重载[java]viewplaincopy1.packagecom.ray.ch04;2.3.publicclassTest{4.publicstaticvoidprintIntArray(int...ints){5.System.out.println(ints.getClass());6.for(inti=0;iints.length;i++){7.System.out.println(ints[i]);8.}9.}10.11.publicstaticvoidprintIntArray(Integer...ints){12.System.out.println(ints.getClass());13.for(inti=0;iints.length;i++){14.System.out.println(ints[i]);15.}16.}17.18.publicstaticvoidmain(String[]args){19.//printIntArray(newInteger(1),newInteger(2),newInteger(3),20.//newInteger(4));21.//printIntArray(1,2,3);22.}23.}上面的代码注释部分如果打开,都会抛异常,主要是两个方法模棱两可。其实对于上面的两个方法,我们只需要取一个即可,因为可变参数列表与解包机制是和谐共处的。总结:这一章节我们讨论了可变参数的几个方面,大家需要注意的是1和2,第三点出现的比较少,因此可以忽略。这一章节就到这里,谢谢。-----------------------------------目录
本文标题:从头认识java-48数组的初始化-可变参数列表
链接地址:https://www.777doc.com/doc-2711960 .html