Java基础——可变参数
大家都知道main方法的参数就是一个数组类型的,那么它其实也是可以改成不定参数类型。我试了试,并调用了一些弹出来的方法。
public class ClassC2 {
public static void main(String...args) {
System.out.println(args.getClass()); //Exception in thread "main" class [Ljava.lang.String;
System.out.println("======分割线1=====");
System.out.println(args.hashCode()); //
System.out.println("======分割线2=====");
System.out.println(args.toString());
System.out.println("======分割线3====="); //[Ljava.lang.String;@3ef810
System.out.println(args.length); //
System.out.println("======分割线4=====");
args.notify(); //java.lang.IllegalMonitorStateException
}
}
嗯,我把Sting后面的“[ ]”换成了三个点(...),这三个点代表Java中的可变数组参数。可变的参数类型(variable argument type),也称为不定参数类型。英文缩写是varargus。也就是说,这个方法在接收参数的时候,个数是不定的。
public class ClassC {
public static void main(String[] args) {
String[] array = { "Java", "PHP", "C#" };//传数组
test(array);//调用
}
static void test(String... a) { //利用可变参数的栗子
System.out.println(a);// 打印:[Ljava.lang.String;@da6bf4
System.out.println(a.length);//
for (int i = 0; i < a.length; i++) { // for遍历
System.out.print(a[i]+"\t");//方便记录,我用了让它一行输出的效果:Java PHP C#
}
}
}
//不像上面那样调用也可以,下面再演示几种调用方法
public class ClassC {
public static void main(String[] args) {
test();//没有赋值,直接调用
}
static void test(String... a) { //利用可变参数的栗子
System.out.println(a);// 打印:[Ljava.lang.String;@1e58cb8
System.out.println(a.length);// for(String s:a){ //复习一下增强for
System.out.println(s);
} }
}
//不像上面那样调用也可以,下面再演示几种调用方法
public class ClassC {
public static void main(String[] args) { // new一个空数组
test(new String[0]);
} static void test(String... a) { // 利用可变参数的栗子
System.out.println(a);// 打印:[Ljava.lang.String;@1e58cb8
System.out.println(a.length);// for (String s : a) { // 复习一下增强for
System.out.println(s);
} }
}
//不像上面那样调用也可以,下面再演示几种调用方法
public class ClassC {
public static void main(String[] args) { test(new String[]{"张三","李四","王五"});
} static void test(String... a) { // 利用可变参数的栗子
System.out.println(a);// 打印:[Ljava.lang.String;@b9e45a
System.out.println(a.length);// for (String s : a) { // 复习一下增强for
System.out.print(s+"\t");//张三 李四 王五
} }
}
由此可见,将参数定义为可变参数,有一下两个有点:
1.不必担心将来在调用的时候,去迎合之前定义的参数;
2.没想出来
(我只想这些,欢迎补充)
Java基础——可变参数的更多相关文章
- 五分钟学Java:可变参数究竟是怎么一回事?
在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题.比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下. 我以前很不重视基础,觉得不就 ...
- Java 中可变参数
可变参数 Java 中可变参数 现在需要编写一个求和的功能,但是不知道有几个参数,在调用的时候才知道有几个参数,请问这如何实现呢? Java 给我们提供了一个 JDK 1.5 的新特性---可变参数 ...
- [问题记录]Java关于可变参数重载问题的测试
突然发现java的可变参数重载是存在歧义的,只是不知道java内部是怎么处理的,特意做如下实验: 测试代码如下: /** * Created by ieayoio on 16-3-1. */ publ ...
- [11 Go语言基础-可变参数函数]
[11 Go语言基础-可变参数函数] 可变参数函数 什么是可变参数函数 可变参数函数是一种参数个数可变的函数. 语法 如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最 ...
- 18、Java中可变参数
从JDK 1.5之后,Java允许定义形参可变的参数 例如: public void test(int a,String ... books){ for(String book:books){ Sys ...
- Java之可变参数
Java中支持可变参数 意思就是:参数的个数可以根据需要写,你可以写1个.2个.3个....他们都被保存到一个参数的数组中. 但是这些参有一些约束:他们必须是同类型的,比如都是String字符串类型. ...
- 巩固java(六)----java中可变参数方法(非常实用哦)
java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义. import java.util.ArrayList; import java.util.List; ...
- java——慎用可变参数列表
说起可变参数,我们先看下面代码段,对它有个直观的认识,下方的红字明确地解释了可变参数的意思: public class VarargsDemo{ static int sum(int... args) ...
- 八、Java的可变参数例子
1.在Java中什么是可变参数 可变参数是在Java1.5中引入的特性.它准许一个方法 public static void main(String[] args) { print("a&q ...
随机推荐
- SecureCrt使用SSH2登陆海康相机
海康相机登陆SSH2: 1.安装SecureCRT2.登陆到相机,系统-安全管理-安全服务,勾选启用SSh3,打开SecureCRT,快速链接4.选择协议SSh2,主机Ip填入相机IP,端口默认22, ...
- Python地理位置信息库geopy的使用(一):基本使用
geopy是Python关于地理位置的一个第三方库,用这个库来进行地址位置信息的查询和转换非常方便,本文介绍关于geopy的常用的几种用法 geopy的安装 pip install geopy 根据地 ...
- 2018 Multi-University Training Contest 6
A.oval-and-rectangle 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6362 题意:在长半轴为a,短半轴为b的椭圆内部,以y=c( ...
- HTML元素ID和JS方法名重复,JS调用失败
HTML元素ID和JS方法名重复时,JS中的重名方法无法被找到,不能执行. 修改ID或者方法名,两者不一致即可.
- python学习笔记16-装饰器
装饰器(函数) 1.函数作用域 2.高阶函数 把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式. 3.闭包 闭包就是能够读取其他函数内部变量的函数. 在本质上,闭包 ...
- 1. git基础
1. 安装git sudo apt-get install git 2. 注册 git config --global user.name "Your Name" git conf ...
- Java异常处理设计(二)
考虑对JDK的底层堆栈信息进行处理,一种是重写JDK的Throwable,另一种是在原错误堆栈信息上进行“二次加工”.目前这两种方式我都实现了,效果非常好. 这篇文章主要记录对错误堆栈进行“二次加工” ...
- oracle 11g RAC数据库监听配置相关
oracle RAC 监听配置基本和单实例的配置相同 11g之后 安装RAC的过程中,不需要执行netca来手动创建监听,在安装集群软件的时候,会自动创建监听程序: 而在DBCA建库的时候,又会自动创 ...
- android屏幕密度规律及dp px转换
px和dp(sp) 之间转化公式: 1 乘以(dp转px)或者除以(px转dp) scal缩放因子,在上浮0.5f /** * 密度转换像素 * */ public static int dip2p ...
- 在matlab中实现梯度下降法
梯度下降法的原理,本文不再描述,请参阅其它资料. 梯度下降法函数function [k ender]=steepest(f,x,e),需要三个参数f.x和e,其中f为目标函数,x为初始点,e为终止误差 ...