现在我们在编程的时候,经常会出现这样子一些方法:
public void paintReportChart(int i, String... args) {
final String chartTitle;
final String titleName;
final String descX;
final String descY;
//omit the code
...
chartpanel.updateUI();
chartpanel.repaint();
}
首先这是jdk1.5之后的新特性,我们叫它为可变参数,即 varargs 。之前我们定义可变参数是采用String[] args的方法来声明。jdk1.5之后有了更加简便的方式。
事实上String[] args 和 String... args 本质上不没有什么区别,String... args 最后还是转化成String[] args 来做的,只是String... args这种形式在应用上更加的灵活和简便。
例如有下面的两个方法:
public static void callMe1(String[] args) {
System.out.println(args.getClass() == String[].class);
for(String s : args) {
System.out.println(s);
}
}
public static void callMe2(String... args) {
System.out.println(args.getClass() == String[].class);
for(String s : args) {
System.out.println(s);
}
}
他们可以这样子被调用:
callMe1(new String[] {"a", "b", "c"});
callMe2("a", "b", "c");
callMe2(new String[] {"a", "b", "c"});
但是不能
callMe1("a", "b", "c");
这就是String... args定义方法的灵活之处。并且当一个方法定义中有String... args形参时,实参传递的参数个数可以是少于最大个数的任意个,可以不传 参数。
但是这样子定义在方便的同时也是要付出一定的代价的,那就是String...args只能定义在形参的最后一个参数,而String[] args就没有这样的限制了。所以我们在定义的时候也就各取所需了。
http://stackoverflow.com/questions/301563/difference-fnstring-args-vs-fnstring-args
http://www.java-forums.org/advanced-java/18769-string-arg-string-args.html
分享到:
相关推荐
Java中的可变参数常见用法实例总结 Java中的可变参数是一种特殊的参数类型,允许在方法中传递...Java中的可变参数常见用法实例总结了可变参数的定义、调用、处理和转发等方面的知识点,对于Java开发者来说非常有价值。
Java中的main方法是每个Java应用程序的起点,它是Java虚拟机(JVM)开始执行程序的地方。在大数据领域,掌握Java基础至关重要,特别是main方法和可变参数,因为它们是编写任何Java程序的基础。 详述main方法: 1. ...
Java 中的个数可变的形参是从 JDK 1.5 开始引入的,它允许开发者在方法中定义可变个数的参数,从而简化代码的编写和阅读。本文将详细介绍 Java 语法糖之个数可变的形参的实现,包括它的背景、优点、注意事项和使用...
params 可变参数必须是形参列表中最后一个元素。例如: ```csharp public void MyMethod(params int[] numbers) { foreach (int number in numbers) { Console.WriteLine(number); } } ``` 方法的重载概念 方法...
15. String和StringBuffer:String是不可变对象,创建后不能修改;StringBuffer是可变对象,适用于多线程环境下字符串拼接。 八、运行时异常与一般异常 16. 运行时异常在编译时不强制处理,一般异常在编译时必须...
2. **Java文件结构**:在Java中,一个源文件(`.java`)只能包含一个公共类(`public class`),但可以有多个非公共类。类名是区分大小写的,而方法名也是区分大小写的。 3. **继承与关键字**:如果一个类需要被...
- **解析:** 在 Java 中,函数重载(overloading)允许在同一类中定义多个同名的方法,只要这些方法的参数列表不同即可。这意味着可以通过改变参数的数量或者类型来实现不同的方法功能,但返回类型和方法名必须保持...
Java面向对象(基础)-方法应用 一、方法的重载 ...Java 中的方法可以有多种形式,包括方法的重载、可变个数形参的方法、方法值传递机制和递归方法。这些特性使得 Java 程序设计更加灵活和强大。
本资源涵盖了Java编程语言的基础知识,包括语言的优点、与C++的异同、main函数、静态块、构造函数、浅复制和深复制、面向对象和面向过程的区别、面向对象的特征和优点、继承、多态、抽象类和接口的异同、this和super...
总的来说,`final`关键字是Java中的一种强约束,它用于防止代码被意外修改,增强程序的稳定性和可预测性。理解并适当地使用`final`可以帮助编写出更加安全、高效且易于维护的代码。在实际开发中,应根据需求灵活运用...
3.4 这是个巧妙的表达式: a ˆ= b ˆ= a ˆ= b 它不需要临时变量就可 以交换a 和b 的值。. . . . . . . . . . . . . . . . . . . . . . . . . 14 3.5 我可否用括号来强制执行我所需要的计算顺序? . . . . . . . . ....
由于字符串在Java中是不可变的,即使尝试重新赋值给`s`也不会影响到原始的`String`对象。因此,在这个例子中,`s`的值依然是"foo3"。 #### 3. 总结 - 对于对象类型的参数传递,Java实际上传递的是对象的引用,而...
自JDK 1.5起,Java支持可变参数列表的方法。这意味着可以在方法中声明一个接收任意数量同类型参数的形参。这种形参在方法签名中表示为一个省略号(`...`)。 例如: ```java public void printNumbers(int... ...
- String是不可变对象,比较字符串使用`equals()`方法,比较字符使用`compareTo()`。 以上只是大纲中的部分知识点,实际考试可能涉及更多内容,例如异常处理、集合框架、IO流、多线程、网络编程等。考生需要全面...
10. 类和方法的修饰符:除了访问控制符外,还有其他修饰符如`final`(不可变)、`abstract`(抽象)、`synchronized`(同步)和`volatile`(可变,线程安全)等,它们用于定义类和方法的特性。 以上是Java编程中...
Java是一种强类型语言,这意味着在编写Java代码时,变量必须先...此外,还有匿名内部类、枚举类型、可变参数、自动装箱/拆箱、泛型、枚举泛型方法、静态导入和注解等,这些特性极大地提升了Java的开发效率和代码质量。
3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...
params是可选的关键字,用于方法的参数列表中,指明某个参数可以接受数量可变的参数值。它通常用于一维数组类型的参数前。被修饰的参数在方法内部表现为数组,这意味着传入的多个参数值在方法内部被自动封装成数组。...
数组是Java中最基本且重要的数据结构之一。它能够存储相同类型的多个元素,并支持高效的随机访问。本文详细介绍了数组的初始化、遍历、作为方法参数使用、扩展(如多维数组)、工具类使用以及常见的排序和查找算法等...