必威体育Betway必威体育官网
当前位置:首页 > IT技术

Java 定义数组的三种方式,int...x动态参数列表

时间:2019-11-01 09:45:50来源:IT技术作者:seo实验室小编阅读:59次「手机版」
 

java 数组

定义数组的三种方式

以 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);
	}
}

在这里插入图片描述

文章最后发布于: 2019-03-16 18:04:36

相关阅读

推广方式-论网站软文推广的重要性

1、软文公信力好: 软文发布都是选择有名气、高权重、有权威的平台,背后运营的都是大企业,有公信力所在,在这有权的平台发布的软文,那自

java将“2018年4月8日”转换成正常日期:2018年04月08日

String old_time="2018年4月8日"; String new_time=getNewTime(old_time); //转换日期 public String getNewTime(String content

请问“javascript:;”是什么意思?

请问“javascript:;”是什么意思? 最佳答案就是 执行一段 空白JAVASCRIPT语句 并且返回的也是空或者false值..把 javascript:; 加

JAVA对接CC视频的API

JAVA对接CC视频的API 点播的接口文档 直播的接口文档 对接流程: 1.HTTP通信加密实现: CC视频接口的请求参数hash需要由其它请

为什么我们要学习Java虚拟机?

《深入拆解Java虚拟机》学习笔记专栏地址:http://gk.link/a/1018S Java 技术体系结构 Java虚拟机(Java Virtual Machine 简称 JVM)是

分享到:

栏目导航

推荐阅读

热门阅读