命令行参数给main方法实现
public class HelloWorld { /** * @param args */ public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println("args[" + i + "=" + args[i]); } } }
这个方法在接收参数的时候,个数是不定的。
在方法声明中,在指定参数类型后面加...
public class TestVarArgus { public static void dealArray(int... intArray) { for (int i : intArray) System.out.print(i + " "); System.out.println(); } public static void main(String args[]) { dealArray(); dealArray(1); dealArray(1, 2, 3); } }
可变参数既可以是没有参数(空参数),也可以是不定长的。
一个方法只能有一个可变参数,只能放在最后
可变参数与数组是冲突的,编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。
public class TestVarArgus {
public static void dealArray(int... intArray) {
for (int i : intArray)
System.out.print(i + " ");
System.out.println();
}
public static void dealArray(int[] intArray) {
// 会有Duplicate method dealArray(int[]) in type TestVarArgus的错误
for (int i : intArray)
System.out.print(i + " ");
System.out.println();
}
public static void main(String args[]) {
dealArray();
dealArray(1);
dealArray(1, 2, 3);
}
可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数。
public class TestVarArgus {
public static void dealArray(int... intArray) {
for (int i : intArray)
System.out.print(i + " ");
System.out.println(); } public static void main(String args[]) { int[] intArray = { 1, 2, 3 }; dealArray(intArray);// 通过编译,正常运行 }
public class TestVarArgus { public static void dealArray(int[] intArray) { for (int i : intArray) System.out.print(i + " "); System.out.println(); } public static void main(String args[]) { dealArray(1, 2, 3);// 编译错误 } }
堆
栈
方法区
数组是相同类型数据的有序
4个基本特点
数组的声明与创建
dataType[] a; //首选的方法 dataType a[]; //数据的创建 dataType[] a=new dataType[size];
元素通过索引访问,从0开始
获取数据的长度
a.length
初始化方法
静态初始化(创建+赋值)
int[] a={1,2,3}
动态初始化
int[] b=new[10]b[0]=1
默认初始化
数组越界会产生nArrayIndexOutBoundsException
Array类
数组的工具类Java.util.Arrays
包含操作数组的各种方法(搜索和排序)
有一个静态工厂,可以将数组视为列表
如果指定的数组为空,会抛出异常
int[] a={1,2,3,4,5};System.out.println(a); //打印对象的哈希codeSystem.out.println(Arrays.toString(a));
常用的方法
稀疏数组
当数组中大部分元素为0或者为同一值时,可以使用稀疏数组来保存
稀疏数组的处理方式
(40条消息) 深度解析Java可变参数类型以及与数组的区别_Java仗剑走天涯-CSDN博客_可变参数和数组