Java方法(二)重载、命令行传参、可变参数
Java方法(二)
方法的重载
-
什么是重载:
重载就是在一个类中,有相同的函数名称,但形参不同的函数
这里的不同包括数量不同、类型不同等等
-
重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同或类型不同或参数排列顺序不同等等)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载(只是返回类型不同的话编辑会报错)
-
重载在编辑器中如何运行:
当方法名称相同时,编辑器会根据方法的参数个数、参数类型、参数排列顺序等去逐个匹配,用来选择对应的方法。
如果找不到对应的方法,就会报错。
-
举例:
//在CDemo02里写上相同名字的重载方法 public class CDemo02 { public static int abc(int a){ return a*3; } //个数不同 public static int abc(int a,int b){ return a+b; } //和上面的类型不同 public static int abc(char a,int b){ System.out.println(a); return b; } //和上面的顺序不同 public static int abc(int a,char b){ System.out.println(b); return a; } //个数和返回值不同(只有返回值不同不行) public static void abc(int a,int b,int c){ System.out.println("a="+a+",b="+b+",c="+c); } } //在CDemo01里使用CDemo02里的方法 public class CDemo01 { public static void main(String[] args) { int a=3,b=4,c=5; int x1=0,x2=1; //调用abc(int a)方法 System.out.println(CDemo02.abc(a)); //调用abc(int a,int b)方法 System.out.println(CDemo02.abc(a,b)); //调用abc(char a,int b)方法 x1=CDemo02.abc('s',a); System.out.println("x1="+x1); //调用abc(int a,char b)方法 x2=CDemo02.abc(b,'t'); System.out.println("x2="+x2); //调用abc(int a,int b,int c)方法 CDemo02.abc(a,b,c); } } //输出: 9 7 s x1=3 t x2=4 a=3,b=4,c=5
命令行传参
-
需要运行一个程序时再传递给它消息,需要传递命令行参数给main()函数实现
-
先在Demo01文件里写出以下代码
package com.sxw; public class Demo01 { public static void main(String[] args) { for(int i=0;i<args.length;i++){ System.out.println("args["+i+"]:"+args[i]); } } } -
在cmd下执行某个java文件:
- 在src文件夹下启动cmd,输入java com.sxw.Demo01(Demo01是文件名,com和sxp是所在包)(失败的话先用javac生成class文件)
- 之后输入字符串就能实现对main函数传参
可变参数
-
从 java1.5开始支持可变参数
-
在方法声明中,在指定参数类型后加一个省略号(...)
-
可变参数指可以往一个变量里输入多个(不限量)数据形成数组
-
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通参数都必须在它之前声明
-
举例一:
public class Demo02 { public static void main(String[] args) { Demo02 demo02 = new Demo02(); //因为i为可变数据,所以可以随意输入int类型的元素个数,最终都会存在i数组中 demo02.abc(1,2,3,4,5); demo02.abc(1,2); demo02.abc(1,1,1,1,1,1,1,1,1,1,1,1); } //将i定义为int的可变参数,则i中的数据为int数组,要通过数组的方式输出 public void abc(int ... i){ //由于每次输入的元素个数不同所以不知道每次i数组的长度(元素个数) //所以调用i数组的length()方法来得到i每次的长度,通过for循环输出i数组中的所有元素 for (int j=0;j<i.length;j++){ System.out.print(i[j]+" "); } System.out.println(""); } } //输出: 1 2 3 4 5 1 2 1 1 1 1 1 1 1 1 1 1 1 1举例二:
public class Demo03 { public static void main(String[] args) { Demo03 demo03 = new Demo03(); demo03.abc2('A',2,4,2,5); demo03.abc2('B',1,2,3,4); } //一个方法里可变参数只能有一个 //可变参数,它必须是方法的最后一个参数 //例如abc2方法的可变参数i必须放在最后,不能放在char a之前 public void abc2(char a,int ... i){ System.out.print(a+" "); for (int j=0;j<i.length;j++){ System.out.print(i[j]+" "); } System.out.println(""); } } //输出: A 2 4 2 5 B 1 2 3 4

浙公网安备 33010602011771号