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

相关推荐
菩提树下的凡夫6 分钟前
Node.js+Vue的学习笔记
笔记·学习·node.js
温暖名字10 分钟前
调用qwen3-omni的api对本地文件生成视频文本描述(批量生成)
python·音视频·qwen·qa问答
太空程序猿19 分钟前
数据类型与变量
java·开发语言
雾岛听风眠26 分钟前
光耦学习笔记
笔记·学习
信仰_27399324335 分钟前
RocketMQ事务消息实现订单创建 + 扣减库存
java·rocketmq·java-rocketmq
百***581436 分钟前
Spring Boot 2.7.x 至 2.7.18 及更旧的版本,漏洞说明
java·spring boot·后端
一眼万里*e1 小时前
搭建个人知识库
python
q***64971 小时前
Spring BOOT 启动参数
java·spring boot·后端
百***78451 小时前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
你不是我我1 小时前
【Java 开发日记】SQL 语句左连接右连接内连接如何使用,区别是什么?
java·javascript·数据库