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

相关推荐
kszlgy1 小时前
Day 52 神经网络调参指南
python
Leo July2 小时前
【Java】Spring Security 6.x 全解析:从基础认证到企业级权限架构
java·spring·架构
wrj的博客2 小时前
python环境安装
python·学习·环境配置
优雅的潮叭2 小时前
c++ 学习笔记之 chrono库
c++·笔记·学习
Pyeako3 小时前
深度学习--BP神经网络&梯度下降&损失函数
人工智能·python·深度学习·bp神经网络·损失函数·梯度下降·正则化惩罚
星火开发设计3 小时前
C++ 数组:一维数组的定义、遍历与常见操作
java·开发语言·数据结构·c++·学习·数组·知识
码道功成3 小时前
Pycham及IntelliJ Idea常用插件
java·ide·intellij-idea
星幻元宇VR3 小时前
走进公共安全教育展厅|了解安全防范知识
学习·安全·虚拟现实
消失的旧时光-19433 小时前
第四篇(实战): 订单表索引设计实战:从慢 SQL 到毫秒级
java·数据库·sql
知识分享小能手3 小时前
Oracle 19c入门学习教程,从入门到精通, Oracle 表空间与数据文件管理详解(9)
数据库·学习·oracle