如:public void function(int arg, int... args)

注意:

可变参数必须出现在参数列表的最后,否则使用数组

可变参数隐式地创建一个数组

如下程序:

 public class VarParameter {

     public static void main(String[] args) {
// TODO Auto-generated method stub
printArr(1, 2, 3);
printArr(new Integer[] { 1, 2, 3 });
printArr(new int[] { 1, 2, 3 });
printArr("1", "2", "3");
printArr(new String[] { "1", "2", "3" });
printArr(new Object[] { new String[] { "1", "2", "3" } });
printArr((Object) new String[] { "1", "2", "3" });
} private static void printArr(Object... args) {
System.out.println(args.length);
}
}

输出结果为:

3
3
1
3
3
1
1

分析:

1. 传递参数为1,2,3时,隐式地构造args = new Object[]{1, 2, 3};

2. 传递参数为new Integer[]{1,2,3}时,隐式地将Integer数组转变为Object数组

3. 传递参数为new int[]{1,2,3}时,将int[]转变为Object,因此Object数组的长度只有一(基本类型无法直接转变为Object)

4. 传递参数为"1","2","3"时,隐式地构造args = new Object[]{"1", "2", "3"};

5. 传递参数为new String[]{"1", "2", "3"}时,隐式地将String数组转变为Object数组

6. 传递参数为new Object[] {new String[]{"1", "2", "3"}}时,将String数组作为Object数组的一个元素进行传递

7. 传递参数为(Object)new String[]{"1", "2", "3"}时,强制地将String数组转变为Object类型(数组的Superclass为Object

 import java.util.Arrays;
import java.util.List; public class VarParameter { public static void main(String[] args) {
List list = Arrays.asList(new int[]{1,2,3});
System.out.println(list.size());
}
}

同样的道理,本程序的输出结果也为1。

JDK5-可变参数的更多相关文章

  1. jdk5可变参数列表

    今天碰到了 public static String getAutoRelateRelationship(final JSONObject modifyJson, String... inUsedCo ...

  2. JDK5新特性之 可变参数的方法

    可变参数的方法:不知道这个方法该定义多少个参数 注意: > 参数实际上是数组 > 必须写在参数列表最后一个 package cn.itcast.day24.varparam; import ...

  3. JDK5的新特性:泛型、可变参数、静态导入

    数组可以在创建的时候就指定存放的数据类型,这样放入不同类型的时候就会发生编译错误. 而集合却可以存储多种不同类型,这样的话如果是遍历的时候在集合中装了好多不同的数据类型的时候,十分容易发生类型转换错误 ...

  4. JDK5.0新特性(静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛形)

    JDK5中新增了很多新的java特性,利用这些新语法可以帮助开发人员编写出更加高效.清晰,安全的代码. 这些新特性主要有:1.静态导入2.自动装箱/拆箱3.增强for循环4.可变参数5.枚举6.泛型7 ...

  5. Java JDK5新特性-可变参数

    2017-10-31 00:19:07 可变参数:定义方法的时候不知道该定义多少个参数 格式:修饰符 返回值类型 方法名(数据类型... 变量名){} 注意:这里的变量其实是一个数组          ...

  6. JDK5新特性:可变参数方法

    JDK1.5增加可变参方法,其定义格式为: 访问修饰符 返回值类型 方法标识符(参数类型 参数标识符1,参数类型 参数标识符2,参数类型...参数标识符){} 如可能要定义一个求和功能的方法,但求和的 ...

  7. 集合框架-工具类-JDK5.0特性-函数可变参数

    1 package cn.itcast.p4.news.demo; 2 3 public class ParamterDemo { 4 5 public static void main(String ...

  8. JAVA提高一:静态导入、可变参数、增强型for循环、装拆箱

    国庆假期已结束,假期8天,全部在家带娃,体会到了妻子的不容易,需要好好努力来多赚钱了,言归正传.10月份开始进去JAVA 高级语法知识学习,本节复习学习的为:静态导入.可变参数.增强型for循环.装拆 ...

  9. Java可变参数方法

    概念: jdk5.0出现的新特性.将同一个类中,多个方法名相同.参数类型相同.返回类型相同,仅仅是参数个数不同的方法抽取成一个方法,这种方法称为可变参数的方法 好处: 提高代码的重用性和维护性 语法: ...

  10. Java(31)泛型和可变参数

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228443.html 博客主页:https://www.cnblogs.com/testero ...

随机推荐

  1. TMS IntraWeb 5.4.1.1 for XE6 (适配Intraweb14.0.32)

    文件夹内含有我自己已经编译好的bpl,仅供大家学习使用,请支持正版!!导入ParaInstalarXE6.groupproj后,逐个编译安装即可. 链接:http://pan.baidu.com/s/ ...

  2. spring与mybatis,strut2整合连接sqlserver不的不说的那点事儿

    今天在通过spring与mybatis整合中,想连接下公司用的sqlserver数据库,结果使用Junit测发现没连上,于是就有了下面的问题: 准备工作都已经做好了 web中spring的监听配置了 ...

  3. PHP-mac下的配置及运行

    Here's another option, from the guys from liip, here. This is a PHP package that comes pre-built for ...

  4. [BZOJ 3196] 213平衡树 【线段树套set + 树状数组套线段树】

    题目链接:BZOJ - 3196 题目分析 区间Kth和区间Rank用树状数组套线段树实现,区间前驱后继用线段树套set实现. 为了节省空间,需要离线,先离散化,这样需要的数组大小可以小一些,可以卡过 ...

  5. python包管理-distutils,setuptools,pip,virtualenv等介绍

    python包管理-distutils,setuptools,pip,virtualenv等介绍 对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方 ...

  6. Android 进入另外一个窗体的两种方法

    方法一: Intent intent = new Intent(); intent.setClassName(this, "com.wuyou.twoactivity.OtherActivi ...

  7. LeetCode解题报告:Binary Tree Postorder Traversal

    Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...

  8. Apache 整合 Tomcat (首先Apache 发布的是PHP项目,占用端口80,tomcat 发布的是Java 项目,占用端口8080)

    情况简介: Apache 整合 Tomcat (首先Apache 发布的是PHP项目,占用端口80,tomcat 发布的是Java 项目,占用端口8080),而现在是虚拟出来两个域名(希望这两个域名都 ...

  9. 工作总结之动画与VR

    一.Unity5的动画新特性: 1.animator controller默认就包含Any State.Entry.Exit三个状态 2.animator可以给每个动画片段添加脚本,该脚本继承 Sta ...

  10. mysql 学习(1)

    1.从图中看到mysql是客户服务器模式. 2.我们如何操纵数据库? a.直接sql,各种编程语言, 3.客户端和服务器如何通信呢? 凡是c/s模式的都会自己的协议,但是都是基于TCP/IP协议,在l ...