(四)《Java编程思想》——可变参数列表
以object数组为参数的方法实现可变参数列表
package chapter5; /**
* 以object数组为参数的方法实现可变参数列表
*/
class A {
} public class VarArgs {
static void printArray(Object[] args) {
for (Object obj : args)
System.out.print(obj + " ");
System.out.println();
} public static void main(String[] args) {
printArray(new Object[] { new Integer(55), new Float(5.34),
new Double(3.56) });
printArray(new Object[] { "one", "two", "three" });
printArray(new Object[] { new A(), new A(), new A() });
}
}
【运行结果】:
55 5.34 3.56
one two three
chapter5.A@18a992f chapter5.A@4f1d0d chapter5.A@1fc4bec
java SE5之后,有了新特性可以实现可变参数列表
package chapter5; /**
* 可变参数列表
*/
public class NewVarArgs {
static void printArray(Object... args) {
for (Object obj : args)
System.out.print(obj + " ");
System.out.println();
} public static void main(String[] args) {
printArray(new Integer(33), new Float(5.23), new Double(3.55));
printArray(33,5.23f,3.55d);
printArray("one","two","three");
printArray(new A(),new A(),new A());
printArray((Object[])new Integer[]{1,2,3,4,5,6});
printArray();
} }
【运行结果】:
33 5.23 3.55
33 5.23 3.55
one two three
chapter5.A@18a992f chapter5.A@4f1d0d chapter5.A@1fc4bec
1 2 3 4 5 6
上面的例子中,printArray();是正确的,表明可以将0个参数传递给可变参数列表。当具有可选的尾随参数是,很有用。
package chapter5; /**
* 有可选尾随可变参数列表
*/
public class OptionalTrailingArguments {
static void f(int required, String... trailing) {
System.out.print("required:" + required + " ");
for (String s : trailing)
System.out.print(s + " ");
System.out.println();
} public static void main(String[] args) {
f(1, "one");
f(2, "one", "two");
f(0);
}
}
【运行结果】:
required:1 one
required:2 one two
required:0
可变参数列表与自动包装机制和谐共处
package chapter5; /**
* 可变参数列表与自动包装机制和谐共处
*/
public class AutoboxingVarargs {
static void f(Integer... args) {
for (Integer i : args)
System.out.print(i + " ");
System.out.println();
} public static void main(String[] args) {
f(new Integer(1), new Integer(2));
f(4, 5, 6, 7);
f(23, new Integer(24), 25);
}
}
【运行结果】:
1 2
4 5 6 7
23 24 25
可变参数列表使重载变复杂
package chapter5; /**
* 可变参数列表使重载变复杂
*/
public class OverloadVargs { static void f(Character... args) {
System.out.print("first");
for (Character c : args)
System.out.print(" " + c);
System.out.println();
} static void f(Integer... args) {
System.out.print("second");
for (Integer i : args)
System.out.print(" " + i);
System.out.println();
} static void f(Long... args) {
System.out.print("Third");
} public static void main(String[] args) {
f('a','b','c');
f(1);
f(2,1);
f(0);
f(0L);
//f();
} }
【运行结果】:
first a b c
second 1
second 2 1
second 0
Third
上例会自动匹配重载的方法,但是调用f()时,就不知道匹配哪个方法了,此时须增加一个可变参数来解决问题。
(四)《Java编程思想》——可变参数列表的更多相关文章
- java基础(九) 可变参数列表介绍
一.可变参数简介 在不确定参数的个数时,可以使用可变的参数列表. 1. 语法: 参数类型...(三个点) 例如: void printArray(Object...) 注意: 每个方法最多只有一个可变 ...
- Java 可变参数列表
1.可变参数列表的简单实现 当调用方法时,方法的参数个数或类型未知时,称其为可变参数列表.在以前的Java代码中,可以使用Object数组来实现这样的功能.因为,所有的类都是直接或间接继承于Objec ...
- 可变参数列表-Java SE5新特性(转)
Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理.注意:可变参数必须位于最后一项.当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持 ...
- “全栈2019”Java第三十四章:可变参数列表
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java编程思想第四版勘误
坊间传说这本书翻译得很烂,我倒觉得还好.虽然看原文更准确,但是如果在具备一定编程思维和基础.能够看出来疑问的情况下,还是看中文更快一些,而且这本书本身也不适合初学者看.当然,错误和不通顺还是有的,而且 ...
- 《Java编程思想第四版完整中文高清版.pdf》-笔记
D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...
- 《Java编程思想》读书笔记(四)
前言:三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第十七章到第十八章的内容,这一次 ...
- 《Java编程思想第四版》附录 B 对比 C++和 Java
<Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...
- JAVA编程思想(第四版)学习笔记----4.8 switch(知识点已更新)
switch语句和if-else语句不同,switch语句可以有多个可能的执行路径.在第四版java编程思想介绍switch语句的语法格式时写到: switch (integral-selector) ...
随机推荐
- 关于cocopads 不能正确安装的问题
通过几个网页 我搜到 看着几个网页就够了 绝对可以实现的 http://code4app.com/article/cocoapods-install-usage http://www.cnblogs. ...
- C++拾遗(十一)类继承
首先,这里提到的继承都是公用继承. 派生类 1.派生类需要添加自己的构造函数. 2.派生类创建之前会首先创建基类对象,即调用基类构造函数.在派生类构造函数后通过初始化列表将参数传递给基类构造函数. 3 ...
- Mysql 5.6 Cmake 编译安装
MySQL编译安装 环境: OS: CentOS 6.6x64 mini mysql: mysql-5.6.251. mysql 下载: http://dev.mysql.com/downloads/ ...
- php.ini的中文解释
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;; ...
- phpcms v9中模板标签使用及联动菜单
{template "content","header"} 调用根目录下phpcms\template\content\header文件 {charset} 字 ...
- PHP自动添加http://头 转换网址为链接
有时候,当我们需要用户输入网址的时候,一般我们会让用户省略掉"http://",当提交完成后用代码自动再加上http://,若有需要,我们 还可将网址转换成链接的形式,类似于众多网 ...
- ubuntu14.04使用reaver跑pin码
今天刚说过没找到支持ubuntu14.04用reaver跑pin的旧版库文件这就有摸索到方法了... 另外安装系统ubuntu14.04以及一系列破解工具比如aircrack,minidwep等都不在 ...
- ASP超级网店V2.5一注入漏洞
Title:ASP超级网店V2.5一注入漏洞 --2011-10-30 17:59 ASP超级网店V2.5 这个系统,有很多地方可以注入 http://www.xxxxxx.com/admin/pi ...
- 抛出异常的区别 throw 和throw ex
在面试的过程中提到了异常捕获的的几种用法,之前一直使用但是没有仔细留意,调试程序的过程中发现还是有区别的,主要区别在堆栈信息的起始点不同,下边我们通过实例来看这集中不同的抛出异常的方法. 一般我们推荐 ...
- matrix矩阵求逆 与解方程模板 留做备用 (有bug,待补充)
// // main.cpp // 矩阵求逆 // // Created by 唐 锐 on 13-6-20. // Copyright (c) 2013年 唐 锐. All rights reser ...