【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,结果如下:

相关推荐
用户0332126663679 分钟前
使用 Python 复制 Excel 工作表
python
范什么特西15 分钟前
狂神报错页面设置
java·tomcat
JaydenAI22 分钟前
[LangChain之链]RunnableCallable——将“自由定义”的函数变成标准组件
python·langchain·ai编程
架构师沉默23 分钟前
AI 真的会取代程序员吗?
java·后端·架构
GinoWi25 分钟前
Chapter 3 - Python列表
python
姚生27 分钟前
Tushare全解析:金融量化分析的数据基石
大数据·python
天若有情67334 分钟前
循环条件隐藏陷阱:我发现了「同循环双条件竞态问题」
c++·学习·算法·编程范式·while循环··竞态
Hi2024021736 分钟前
如何从互联网上免费下载歌曲
python·自动化
2401_8980751243 分钟前
Python在金融科技(FinTech)中的应用
jvm·数据库·python
Memory_荒年1 小时前
ReentrantLock 线程安全揭秘:从“锁”到“重入”的魔法
java·后端·源码