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

相关推荐
望获linux2 小时前
【Linux基础知识系列】第一百一十篇 - 使用Nmap进行网络安全扫描
java·linux·开发语言·前端·数据库·信息可视化·php
乘乘凉2 小时前
Python中函数的闭包和装饰器
前端·数据库·python
最初的↘那颗心6 小时前
Java泛型深度解析:从基础语法到高级应用
java·面向对象·泛型
仙俊红6 小时前
Spring Boot `@Configuration` 与 `@Component` 笔记
java·spring boot·笔记
爱隐身的官人6 小时前
爬虫基础学习-爬取网页项目(二)
前端·爬虫·python·学习
Ysn07198 小时前
pytorch_grad_cam 库学习笔记—— Ablation-CAM 算法的基类 AblationCAM 和 AblationLayer
pytorch·笔记·学习
小清兔8 小时前
c#基础知识
开发语言·数据库·学习·unity·c#·游戏引擎·.net
刘恒1234567898 小时前
Pycharm
ide·python·pycharm
霜绛8 小时前
Unity笔记(七)——四元数、延迟函数、协同程序
笔记·学习·unity·游戏引擎
2006yu9 小时前
从零开始学习单片机13
单片机·嵌入式硬件·学习