定义数组的三种方式

以 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 ...xint[] 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动态参数列表相关推荐

  1. Java定义数组的三种方式

  2. 代码示例:Java中定义数组的三种方式

    在Java中,数组的定义有三种方式,其基本语法格式如下: 数组类型[] 数组名 = new 数组类型[数组长度]; 数组类型[] 数组名 = new 数组类型[]{数组元素0,数组元素1,...}; ...

  3. Java创建数组的三种方式 (以及length方法是否能获取数组中元素的个数)

    Java创建数组的三种方法 import java.util.Arrays; public class Sum { public static void main(String[] args){ in ...

  4. java 创建数组的三种方式及区别

    创建数组的三种方式:其实分为2类,一种是静态的创建,如方式一.一种是动态的创建,只不过根据写法的不同分为方式二和方式三: // 数组初始化的三种方式//1.声明,分配空间并赋值int[] arr0 = ...

  5. java定义数组的三种类型

    三种定义数组的格式如下: int[] arr1=new int[10]; int[] arr2={1,2,3,6}; int[] arr3=new int[]{1,2,3,4,5,6,7,22}; 注 ...

  6. [Java]打印数组的三种方式

    1.for循环打印 第一种方式: for(int i=0;i<arr.length;i++){System.out.println(arr[i]); } 第二组方式:foreach增强型for循 ...

  7. java遍历数组的三种方式

    for循环遍历 用for循环遍历数组是很常见的一种方法,Java语言中通过数组的length属性可获得数组的长度. package demo; publicclasstest{ public stat ...

  8. 21、js定义数组的三种方式

    一.javascript数组的定义方式 1.var arr = [1,2,3]; var arr = [1,"2",true]; 2.使用内置的对象Array: var arr = ...

  9. 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}; 注 ...

最新文章

  1. html+css常用小笔记(持续更新)
  2. eclipse里面M2_REPO引用(Maven2安装总结)
  3. 基于docker安装tensorflow
  4. error: ‘to_string’ is not a member of ‘std’———已解决
  5. 客户端(STS)连接服务器上redis时的问题
  6. 【git】建git仓库
  7. 【项目.源码】深度学习视觉计算辅助良品检验,如何做布匹疵点识别?
  8. 基于Springboot+Vue+ElementUI物流配送管理系统
  9. html5 前端js框架,前端h5框架总结
  10. 车载Android应用开发入门指南(必看)
  11. opencv-python学习笔记(十一)—— 图像处理之图像直方图
  12. Unicode双向算法详解(bidi算法)(二)
  13. vue使用阿里云视频点播
  14. HDU 1415(Jugs)
  15. android contacts电话查询头像,Androidの通过查询电话号码或ID获取联系人头像
  16. 做车载测试3年,我的思考与总结
  17. 爱奇艺数据中台的建设实践
  18. A项目之三:价格与销量分布直方图
  19. [ENVI] 转移矩阵
  20. 探索如何在武汉链(基于ETH)的一个合约中实现同质化与非同质化功能

热门文章

  1. 小太阳机器人唤醒软件_小太阳老师
  2. 「题解」老鼠与猫的交易
  3. 火影众颜 U4参数配置 火影众颜 U4评测
  4. Centos7破解root用户密码
  5. 【转载】c# winform 怎么给程序的按钮上也加上小盾牌图标
  6. kettle开发篇-列转行-Day15
  7. SpringBoot - @JsonFormat注解详解
  8. Smobiler 仿脉脉APP个人主页
  9. 最新手机制作抖音/西瓜沙雕动态漫画教程打包+素材
  10. 路由器静态路由配置 两个路由通过serial连接