`
linxizeng
  • 浏览: 104790 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tiger学习 之 可变参数

阅读更多
可变参数,解决Method有不同个数参数的overload问题...
如何创建一个可变长度的参数,看代码:
引用

public void vararg(String varOne, String varTwo, String...strings ) {}

编译器会把它解析为"public void vararg(String varOne, String varTwo, String[] strings) {}",将"..."创建成一个<argument type>的array。

调用很简单...(零或以上多个参数)
引用

vararg("one","tow"); //可以不传参数
vararg("one","tow","three"); //可以传入一个参数
vararg("one","tow","three",four); //可以传入多个参数

当然,也可以传入一个数组作为参数,如:
引用

public void vararg(int... i) {
for (int ivalue : i) {
System.out.println("the i value is: " +ivalue);
}
}

引用

//调用

int[] i = {1,2,3,4,5,6};
new ObjectB().vararg(i);

输出

引用

the i value is: 1
the i value is: 2
the i value is: 3
the i value is: 4
the i value is: 5
the i value is: 6

当然,如果是接受到一个零长度的list,最好做一个判断,可以抛出IllegalArgumentException异常。

But,有些限制:
1.一个方法只能有一个可变参数(一个省略号)
2.省略号只能写在方法参数列表的最后一个。


迭代可变参数List
将vararg当array来使用...如:
引用

public void vararg(String...strings ) {
for (String str : strings) {
System.out.println("the vararg value is: " +str);
}
}

输出
引用

the vararg value is: One
the vararg value is: Two
the vararg value is: Three

也可以将可变参数存在变量中...
引用

public void vararg(String...strings ) {
String[] arr = strings;[color]//存在数组当中,因为自动将String... strings转成String[] strings.
List list = Arrays.asList(strings);//存在list当中
}

由于Tiger是autoboxing和auto-unboxing,所以,当我们需要使用primitive参数的时候,我们也可以在Method中使用wrapper类型,由于wrapper都是Object类型,因此用Object... object作为参数最好了.
引用

public void vararg(Object... object) {
for (Object o : object) {
System.out.println("the object value is: " +o.toString());
}
}

//调用
引用

Integer[] i = {1,2,3};//只能用Integer,如果用int,print不出来具体的值。。。

String[] str = {"A","B","C"};
ObjectB b = new ObjectB();
b.vararg(i);
b.vararg(str);

结果
引用

//Integer类型
the object value is: 1
the object value is: 2
the object value is: 3
//String类型
the object value is: A
the object value is: B
the object value is: C


还有一个情况出现...例如
引用

String[] str = {"A","B","C"};
System.out.printf("the array values are: %s " , str);

输出是:
引用

the array values are: A

因为只会取str的第一个元素的值...可以这样写
引用

System.out.printf("the array values are: %s " ,(Object)str);


分享到:
评论

相关推荐

    JAVA 5.0 TIGER程序高手秘笈.rar

    4. **Varargs(可变参数)**:Java 5.0引入了可变参数,允许方法接受任意数量的同类型参数。这使得编写方法时更加灵活,比如`System.out.println()`就是一个很好的例子,它可以接收任意数量的参数。 5. **...

    Java 5.0 Tiger程序高手秘笈.rar

    Java 5.0引入了可变参数,允许在方法声明中使用三个点(...)来定义一个可变长度的参数列表。这使得方法调用更加灵活,不再需要创建数组来传递多个相同类型的参数。 五、增强的for循环(Enhanced For Loop) 也称为...

    《Java5.0 Tiger》书籍源码

    4. 变量类型推断(varargs方法):varargs关键字允许在方法声明中接受可变数量的参数。在调用方法时,可以传入零个或多个相同类型的参数,它们会被自动封装到一个数组中。这种方式简化了多参数方法的调用,尤其是...

    Java_5_Tiger.rar_Tiger_泛型

    3. **动态参数(可变参数)**:Java 5引入了可变参数,允许方法接收不定数量的参数。这种语法糖简化了处理多个参数的方法,如public void printNumbers(int... numbers),这个方法可以接受任意数量的int类型参数。 ...

    src_java_Tiger_

    8. **可变参数(Varargs)**:Java 5.0允许在方法声明中使用可变参数,以简化处理不定数量参数的方法。源码中会有可变参数方法的实现示例。 9. **NIO(New Input/Output)**:Java 5.0引入了NIO,提供了非阻塞I/O...

    JAVA.5.0.TIGER程序高手秘笈

    9. **可变参数(varargs)**:Java 5.0允许方法接受不定数量的参数,简化了传入可变参数的接口。 10. **静态导入**:静态导入允许开发者直接引用类的静态成员,而无需指定类名,减少了代码中的冗余。 11. **NIO...

    Java 1.5 Tiger, A Developer's Notebook (2004)

    Java 1.5 Tiger的发布标志着Java编程语言的重大进步,它引入了许多关键特性,如泛型、枚举、自动装箱和拆箱、可变参数、静态导入以及增强的for循环等。 1. 泛型:Java 1.5引入了泛型,这是一种在编译时检查类型安全...

    Java5.0Tiger程序高手秘笈PDF.rar

    7. **可变参数(Varargs)**:允许方法接受一个不定数量的参数,通过`...`表示,使得创建接受任意数量参数的方法变得简单。 8. **类型推断(Type Inference)**:在使用泛型时,编译器可以根据上下文推断出类型,...

    编译原理课程设计(tiger语言)(含实验报告)

    Tiger语言的设计使得学习编译器构造变得更为直观,因此是学习编译原理的理想平台。 首先,我们要了解词法分析,这是编译过程的第一步。词法分析器(也称为扫描器)会将源代码分解成一系列有意义的符号,称为“标记...

    《Java5.0 Tiger》书籍

    7. **可变参数方法**:Java 5.0引入了可变参数方法,允许一个方法接受任意数量的相同类型的参数,它们被封装在一个数组中。 8. **静态导入**:允许开发者静态导入一个类的所有静态成员,使得可以直接引用而无需指定...

    ORACLE数据库实用学习教程.pptx

    例如,CHAR用于固定长度的文本,VARCHAR2用于可变长度的文本,NUMBER用于数值,DATE用于日期和时间,RAW用于二进制数据,LONG和LONG RAW则用于存储大量文本或二进制数据。 创建表的SQL语句是"CREATE TABLE",可以...

    几本java英文电子书

    这个版本引入了泛型、枚举、自动装箱/拆箱、可变参数等关键特性,这本书将帮助开发者理解并掌握这些新功能,从而编写更安全、更简洁的Java代码。 通过阅读这些书籍,不仅可以提升你的Java编程技能,还可以同时锻炼...

    Oracle数据库学习日记-实用性最强的Oracle学习总结.docx

    ### Oracle数据库学习知识点详解 #### 一、基本使用 ##### 1.1 常用命令 **1.1.1 Connect/Disconnect 数据库连接命令** - **Connect**: 使用 `connect` 命令可以连接到Oracle数据库。语法通常为 `connect ...

    CoreJava重点要点笔记

    - 自动装箱/拆箱、枚举类型、可变参数列表、静态导入等语法糖。 - **Chapter 16 Generics**: - 泛型编程的概念与应用,提高代码的复用性和类型安全性。 - **Chapter 17 Annotation (Metadata)**: - 注解的使用,...

    北大青鸟 Java 教材 第9章

    Java 教材中的第9章主要讲解了面向对象编程的核心概念——继承、多态以及相关的实现方式。...通过学习这些概念和实践示例,学员能够深化对面向对象编程的理解,为编写高效、可维护的Java代码打下坚实基础。

    java基础知识技术

    - **2004年**:Java 5(代号Tiger)发布,引入了泛型、枚举、可变参数列表等新特性。 - **2006年**:Java 6(代号Mustang)推出,进一步提升了性能和安全性。 - **2011年**:Oracle收购Sun Microsystems后,发布了...

    Java发展史_&_Java9、10新特性

    - 可变参数 - 静态导入 - 注解 - Doug Lea的并发库:`java.util.concurrent` - **2006年:Java 1.6** - 代号:Mustang - 类或接口数量:3793 - 主要新特性或功能: - 支持脚本语言 - Compiler API - JDBC...

    Oracle数据库基础笔记大纲

    - `VARCHAR2`: 可变长度的字符类型,根据实际字符长度存储。 - **数值类型**: - `NUMBER`: 存储数值类型的数据,可以通过指定参数控制其长度和小数点位数。 - `INTEGER`: 整数类型。 - `FLOAT`: 浮点数类型。 ...

    Unit5 重定向、归档压缩.ppt

    在单元5的学习中,我们将深入探讨这两个主题。 首先,让我们来了解什么是重定向。重定向允许我们将原本应该在终端屏幕上显示的输出信息导向到文件中,或者将输入来源从键盘更改为其他文件。这主要通过使用特殊的...

    oracle9i文档

    - VARCHAR2: 可变长度字符类型。 - CHAR: 固定长度字符类型。 - **日期类型**: - DATE: 包括日期和时间信息。 - TIMESTAMP: 更精确的时间戳类型。 **1.8 SQL 语句基础** - **SQL 语句所用符号**: 如 `=`、`...

Global site tag (gtag.js) - Google Analytics