Java 定义数组的三种方式,int...x动态参数列表
定义数组的三种方式
以 int型 的一维数组为例,说说三种定义方式
int[] arr = new int[3];
这是最常用的方式,定义时就含有默认值,可以后续赋值
public class Demo{ public static void main(String[] args){int[] arr = new int[3];}
}
int[] arr = {15,3,8};
这种定义方式易于初始化数组,数组的个数由{}内元素的个数决定
public class Demo{ public static void main(String[] args){int[] arr = {15,3,8};}
}
int[] arr = new int[]{15,3,8};
铛铛铛,重点讲的就是这玩意:这种方法看似麻烦,但它可以实现一个很牛逼的功能
可以匿名化的传递常量数组,这是上述两种方法办不到的,具体怎么实现,看下面代码:
public class Demo{ public static void main(String[] args){print(new int[]{15,6,8}); //没有数组名,但可以把数组作为参数传给方法;其余方法这么做只会报错}public static void print(int[] arr){for(int i = 0; i < arr.length; i++){System.out.println(arr[i]);} }
}
动态参数列表
以int类型为例来说明一下
JDk1.5版本之后,出现了一个新的写法
int ...x
这是动态参数列表(类型固定,个数可以动态 0-n都可以)
我以int类型来进行探究
不传参数的情况
public class Demo{public void test(int ...x){System.out.println("执行了test方法,携带动态参数列表");}public static void main(String[] args){Demo t = new Demo();t.test();}
}
可以执行
传递任意个参数
public class Demo{public void test(int ...x){System.out.println("执行了test方法,携带动态参数列表");}public static void main(String[] args){Demo t = new Demo();Demo t1 = new Demo();Demo t2 = new Demo();t.test(1,2,3,4,5);t1.test(5,5);t2.test(0);}
}
我随机弄啦三种参数个数,传递进去,没问题
怎么用传进去的任意个参数
- 其实,
int ...x
与int[] x
的本质是一样的,有length属性,有下标 - 但是动态参数列表优于数组参数的地方在于,他可以传0个参数;
- 而数组参数,传0个参数会报错
和数组参数的调用方法一样
public class Demo{public void test(int ...x){System.out.println("执行了test方法,携带动态参数列表");for(int i = 0; i < x.length; ++i){System.out.println(x[i]);}}public static void main(String[] args){Demo t = new Demo();t.test(1,2,3,4,5);}
}
数组参数传0个参数会报错
而动态参数列表可以不传参数(最上面第一个例子有演示)
public class Demo{public void test(int[] x){System.out.println("执行了test方法,携带动态参数列表");}public static void main(String[] args){Demo t = new Demo();t.test();}
}
动态参数列表涉及的重载问题
动态参数列表可以和不带参数,构成重载,但对象.方法()不带参数时调用不带参数的方法
public class Demo{public void test(int ...x){System.out.println("执行了test方法,携带动态参数列表");}public void test(){ System.out.println("执行了test方法,没有携带参数!");}public static void main(String[] args){Demo t = new Demo();t.test();}
}
注意,动态参数列表和相同类型数组参数不能构成重载,他们本质是一样的,会报错(除非它们的本质维度不同,比如一个二维,一个一维)
//都对应的是一维数组public class Demo{public void test(int ...x){System.out.println("执行了test方法,携带动态参数列表");}public void test(int[] x){System.out.println("执行了test方法,携带数组参数!");}public static void main(String[] args){Demo t = new Demo();t.test();}
}
//都对应的是二维数组public class Demo{public void test(int[] ...x){System.out.println("执行了test方法,携带动态参数列表");}public void test(int[][] x){System.out.println("执行了test方法,携带数组参数!");}public static void main(String[] args){Demo t = new Demo();t.test();}
}
//对应的数组维度不同public class Demo{public void test(int ...x){System.out.println("执行了test方法,携带动态参数列表");}public void test(int[][] x){System.out.println("执行了test方法,携带数组参数!");}public static void main(String[] args){Demo t = new Demo();t.test();}
}
对应的数组维度不同,这样就编译成功
动态参数列表在方法的参数中只能存在一份儿,且必须放置在方法参数的末尾
public class Demo{public void test(int a,int ...x){System.out.println("执行了test方法,携带动态参数列表");}public static void main(String[] args){Demo t = new Demo();t.test(5,6,7);t.test();}
}
public class Demo{public void test(int ...x,int a){ //这样会报错System.out.println("执行了test方法,携带动态参数列表");}public static void main(String[] args){Demo t = new Demo();t.test(5,6,7);}
}
public class Demo{public void test(int ...x,int ...y){ //这样也会报错System.out.println("执行了test方法,携带动态参数列表");}public static void main(String[] args){Demo t = new Demo();t.test(5,6,7);}
}
Java 定义数组的三种方式,int...x动态参数列表相关推荐
- Java定义数组的三种方式
- 代码示例:Java中定义数组的三种方式
在Java中,数组的定义有三种方式,其基本语法格式如下: 数组类型[] 数组名 = new 数组类型[数组长度]; 数组类型[] 数组名 = new 数组类型[]{数组元素0,数组元素1,...}; ...
- Java创建数组的三种方式 (以及length方法是否能获取数组中元素的个数)
Java创建数组的三种方法 import java.util.Arrays; public class Sum { public static void main(String[] args){ in ...
- java 创建数组的三种方式及区别
创建数组的三种方式:其实分为2类,一种是静态的创建,如方式一.一种是动态的创建,只不过根据写法的不同分为方式二和方式三: // 数组初始化的三种方式//1.声明,分配空间并赋值int[] arr0 = ...
- java定义数组的三种类型
三种定义数组的格式如下: int[] arr1=new int[10]; int[] arr2={1,2,3,6}; int[] arr3=new int[]{1,2,3,4,5,6,7,22}; 注 ...
- [Java]打印数组的三种方式
1.for循环打印 第一种方式: for(int i=0;i<arr.length;i++){System.out.println(arr[i]); } 第二组方式:foreach增强型for循 ...
- java遍历数组的三种方式
for循环遍历 用for循环遍历数组是很常见的一种方法,Java语言中通过数组的length属性可获得数组的长度. package demo; publicclasstest{ public stat ...
- 21、js定义数组的三种方式
一.javascript数组的定义方式 1.var arr = [1,2,3]; var arr = [1,"2",true]; 2.使用内置的对象Array: var arr = ...
- java 数组类型定义_java定义数组的三种类型总结
三种定义数组的格式如下: int[] arr1=new int[10]; int[] arr2={1,2,3,6}; int[] arr3=new int[]{1,2,3,4,5,6,7,22}; 注 ...
最新文章
- html+css常用小笔记(持续更新)
- eclipse里面M2_REPO引用(Maven2安装总结)
- 基于docker安装tensorflow
- error: ‘to_string’ is not a member of ‘std’———已解决
- 客户端(STS)连接服务器上redis时的问题
- 【git】建git仓库
- 【项目.源码】深度学习视觉计算辅助良品检验,如何做布匹疵点识别?
- 基于Springboot+Vue+ElementUI物流配送管理系统
- html5 前端js框架,前端h5框架总结
- 车载Android应用开发入门指南(必看)
- opencv-python学习笔记(十一)—— 图像处理之图像直方图
- Unicode双向算法详解(bidi算法)(二)
- vue使用阿里云视频点播
- HDU 1415(Jugs)
- android contacts电话查询头像,Androidの通过查询电话号码或ID获取联系人头像
- 做车载测试3年,我的思考与总结
- 爱奇艺数据中台的建设实践
- A项目之三:价格与销量分布直方图
- [ENVI] 转移矩阵
- 探索如何在武汉链(基于ETH)的一个合约中实现同质化与非同质化功能