【java学习】方法的可变个数的参数(20)

文章目录

  • [1. 可变个数的形参的理解](#1. 可变个数的形参的理解)
  • [2. 从代码上理解](#2. 从代码上理解)
    • [2.1. 用数组的方式来传递可变个数的参数](#2.1. 用数组的方式来传递可变个数的参数)
    • [2.2. 用java特有的... 的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同](#2.2. 用java特有的... 的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同)

1. 可变个数的形参的理解

java 复制代码
// 下面采用 数组形参 来定义方法
public static void test(int a ,String[] books);
// 以 可变个数形参 来定义方法
public static void test(int a ,String...books);

说明:

  1. 可变参数:方法参数部分指定类型的参数个数是可变多个
  2. 声明方式:方法名(参数的类型名... 参数名)
  3. 可变参数方法的使用与方法参数部分使用数组是一致的
  4. 方法的参数部分有可变形参,需要放在形参声明的最后

2. 从代码上理解

2.1. 用数组的方式来传递可变个数的参数

创建一个Person3类

Person3.java

java 复制代码
package default_package;

public class Person3 {
	/**
     * 用数组的方式来传递可变个数的参数
     * 如果没有参数,就要定义一个空数组或者是null
     * @param args
     */
	public void printInfo(String[] args) { //问题:能够打印的信息都有来源于方法的参数也就是形参的传递
		//我现在可能给方法要传递的不同的参数?如果在这种情况下,我们不知道想要给方法传递多少个参数(姓名、性别、年龄;也可能身份证号码、家庭住址、手机号)
		for(int i = 0; i < args.length; i++) {
			System.out.println(args[i]);
		}
	}

}

编写调用代码Test5.java

java 复制代码
package default_package;

public class Test5 {
	public static void main(String[] args) {
		Person3 p3 = new Person3();
		String[] ss = new String[] {"zhangsan", "11"};
		p3.printInfo(ss);
		String[] ss1 = new String[] {"江苏省***", "13611112222","320323202310116666"};
		p3.printInfo(ss1);
	}

}

运行Test5.java,结果如下:

2.2. 用java特有的... 的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同

创建一个Person3类

Person3.java

java 复制代码
package default_package;

public class Person3 {
	/**
     * 用java特有的...的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同
     * 如果没有参数就可以不填.
     * 这种...代表可以传递0到多个参数
     * 如果一个方法有多个的形参,可变的形参(...这种的参数)一定要放在所有的参数最后
     * printInfo1(String s,int d,String... args)这样的放置参数的方式是对的
     * printInfo1(String s,String... args,int d)这样的放置参数的方式是不对的
     * printInfo1(String... args,String s,int d)这样的放置参数的方式是不对的
     * @param args
     */
	public void printInfo1(String... args) {
		for(int i = 0; i< args.length; i++) {
			System.out.println(args[i]);
		}
	}

}

编写调用代码Test5.java

java 复制代码
package default_package;

public class Test5 {
	public static void main(String[] args) {
		Person3 p3 = new Person3();
		
		p3.printInfo1("lisi", "男", "","");
		
		String[] ss2 = new String[] {"江苏省***", "13611112222", "320323202310116666"};
		p3.printInfo(ss2);
	}

}

运行Test5.java,结果如下:

相关推荐
坤坤子吖11 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
aifannihao11 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线
yuyuxun112 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
如夏倾城12 小时前
百度文心(容易被忽略的好用AI)使用方式
人工智能·python·百度·语言模型·dubbo
用户0190275816112 小时前
quotes 实时价和 klines 最新收盘价为什么对不上?
python
少司府13 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
文丑颜不良啊14 小时前
LeetCode2821~2840题目解析
java·leetcode
打工仔折腾 AI14 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
火云代理14 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
apcipot_rain14 小时前
C++转Java日记(10)
java·开发语言