大家都知道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基础——可变参数的更多相关文章

  1. 五分钟学Java:可变参数究竟是怎么一回事?

    在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题.比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下. 我以前很不重视基础,觉得不就 ...

  2. Java 中可变参数

    可变参数 Java 中可变参数 现在需要编写一个求和的功能,但是不知道有几个参数,在调用的时候才知道有几个参数,请问这如何实现呢? Java 给我们提供了一个 JDK 1.5 的新特性---可变参数 ...

  3. [问题记录]Java关于可变参数重载问题的测试

    突然发现java的可变参数重载是存在歧义的,只是不知道java内部是怎么处理的,特意做如下实验: 测试代码如下: /** * Created by ieayoio on 16-3-1. */ publ ...

  4. [11 Go语言基础-可变参数函数]

    [11 Go语言基础-可变参数函数] 可变参数函数 什么是可变参数函数 可变参数函数是一种参数个数可变的函数. 语法 如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最 ...

  5. 18、Java中可变参数

    从JDK 1.5之后,Java允许定义形参可变的参数 例如: public void test(int a,String ... books){ for(String book:books){ Sys ...

  6. Java之可变参数

    Java中支持可变参数 意思就是:参数的个数可以根据需要写,你可以写1个.2个.3个....他们都被保存到一个参数的数组中. 但是这些参有一些约束:他们必须是同类型的,比如都是String字符串类型. ...

  7. 巩固java(六)----java中可变参数方法(非常实用哦)

    java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义. import java.util.ArrayList; import java.util.List; ...

  8. java——慎用可变参数列表

    说起可变参数,我们先看下面代码段,对它有个直观的认识,下方的红字明确地解释了可变参数的意思: public class VarargsDemo{ static int sum(int... args) ...

  9. 八、Java的可变参数例子

    1.在Java中什么是可变参数 可变参数是在Java1.5中引入的特性.它准许一个方法 public static void main(String[] args) { print("a&q ...

随机推荐

  1. 一步一步学习Swift之(三):巧用AutoLayout布局

    一些初学者经常在使用autoLayout时,做得效果不太理想,经常会出现界面错乱的情况. 本文章用一个小实例说明autoLayout的使用 非常的简单,只要记住 规则就可以使界面适屏布局,适配各种ip ...

  2. [宁波集训]0827Day1

    1.\(CF771D\ Bear\ and\ Company\)(原题,比赛时改为多组数据) 一道毒瘤\(dp\)题,\(dp[i][j][k][0/1]\)表示有\(i\)个\(V\),有\(j\) ...

  3. cad 关键字被保留了?选择集关键字保留了? N S W E关键字无法用?

    N S W E是东南西北四个方位,s是南方270度,在设置关键字的时候必须避开这四个关键字. 设置早期的R14 也有.

  4. Docker Compose模板文件介绍

    模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多,这里面大部分指令跟 docker run 相关参数的含义都是类似的.默认的模板文件名称为 docker-compose.yml ,格 ...

  5. Java内存溢出问题总结

    使用Java那么久,在此总结一下Java中常见的内存溢出问题以及对应的解决思路 堆溢出 报错信息 java.lang.OutOfMemoryError: Java heap space 报错原因 堆中 ...

  6. SpringCloud之Eureka集群

    前面我们介绍了SpringCloud注册中心Eureka,但是存在一个单点故障的问题,一个注册中心远远不能满足实际的生产环境,现在我们介绍一下如何搭建一个Eureka集群. 一:集群环境搭建 我们先建 ...

  7. python 信号量,Event, 定时器

    信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行. 如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路 ...

  8. Python 百度ai身份证接口案例

    调用百度Ai 完成一个学生信息录入的网页小案例 添加图片,身份证信息对号入座 官方文档中心:https://ai.baidu.com/docs#/OCR-API/7e4792c7 utils.py # ...

  9. JVM中强引用,弱引用,软引用和幽灵引用的代码

    上代码: public class ReferenceTest { public static void main(String[] args) { //test1();//软引用 //test2() ...

  10. 线程中的定时器Timer类

    Timer 定时器 几分钟之后执行一个任务. 创建了一个定时器相当于开启了一条线程,TimerTask相当于一个线程的任务.内部使用wait/notify机制来实现的. 用法非常的简单  就足以里面的 ...