<返回更多

什么是Java可变参数列表?怎么和重载机制配合使用?

2020-08-07    
加入收藏

显示的静态初始化

JAVA语言里面可以允许静态子句块的存在,语法如下所示:

public class S {

static int i;

static {

i = 50;

}

}

这段代码里的第二个static修饰的块,看起来有点像方法,但是不是方法,是静态子句块,也叫静态块,它本质是static修饰的一段代码,初始化方式和其他静态初始化一样的。

还有一种类似于静态块的操作,叫做非静态实例初始化,实例初始化子句的语法结构如下:

{

m1 = new M(1);

m2 = new M(2);

}

这个初始化操作是在构造器之前执行的。

数组初始化

什么是Java可变参数列表?怎么和重载机制配合使用?

数组本质上是一个相同类型,然后使用同一个标识符标识到一块的对象或者基本类型数据序列。java中数组通常这样表示:int [] a;这个代表一个int型的数组,这个也是对数组的一个引用。

初始化数组可以在类的任何地方进行,但是通常初始化是通过大括号来进行的,比如:

int[] a = {1,2,3,4,5};

java语言中,可以将数组赋值给其他数组,本质上是复制了一个引用而已,比如:

int a1 = {1,2,3,4,5};

int[] a2;

a2 = a1;

上面代码中,a2和a1指向同一个数组,也就是说,通过其中一个引用修改数组,会在每一个引用中看到。

数组都有一个length,它就是数组长度,数组的下标都是从0开始,最大为length-1。对于数组的大小,如果不确定,可以通过new来定义大小。比如:

int[] a;

a = new int[20];

这个代码定义了长度为20的int型数组。数组如果是基本类型,可以自动进行初始化,结果对于基本类型的默认值,数组和字符都是0,布尔类型就是false。当然,数组可以在定义的时候,直接进行初始化。

如果你需要打印一个数组,就用Arrays.toString(数组)方法进行。

初始化对象数组可以使用两种方式,一种的示例如下:

Integer[] a ={

new Integer(1),

new Integer(2),

3,

}

另一种的示例如下:

Integer[] b = new Integer[]{

new Integer(1),

new Integer(2),

3,

}

初始化列表中最后一个逗号可以有,也可以没有。

第一种的形式很简洁,但是有局限性,只能在定义数组的地方使用,其他地方不可以使用,但是第二种就很灵活了,可以在定义的时候使用,也可以当做一个参数传到方法里面。示例如下:

对象.方法(new String[]{“a”,”b”})

这种方式可以传入可变参数列表。

可变参数列表

什么是Java可变参数列表?怎么和重载机制配合使用?

可变参数列表的定义示例如下:

public class Test {

static void f(int r, String… t) {

for(String s : t){

System.out.print(s);

}

}

public static void main(String[] args) {

f(1,”one”);

f(2,”two”,”three”);

f(0);

}

/*Output:

1 one

2 two three

0

}

这个示例中的类型是String,实际当中参数可以是任何类型的。

可变参数列表中,基本类型可以和自动包装类共存,自动包装机制会把基本类型,提升为包装类。

可变参数列表还可以和重载机制配合使用,同样的方法名称,但是可变参数列表类型不一样,依然可以共存。但是如果一个类里面有两个以上同名的可变参数列表,如果调用方法时,不传入参数,就会报错了,因为编译器不知道应该调用哪个方法,解决这个问题其实很简单,就是我们在参数列表里面,添加一个非可变参数,从而区分重载方法。

枚举类型

什么是Java可变参数列表?怎么和重载机制配合使用?

在JAVA语言中,枚举类型会经常被使用,枚举语法的示例如下:

public class Test {

AA, BB, CC

}

枚举类型实例是常量,所以命名都是大写,多个单词用下划线分开。

使用的话,语法格式如下:

Test t = Test.AA;

enum有一些特性和方法,比如ordinal()方法用来表示enum常量的声明顺序,static values()方法用来产生按照常量声明顺序构成的数组。

示例如下:

public class EnumOrder {

public static void main(String[] args) {

for(Test t : Test.values()){

System.out.println(t + “ ordinal ” + t.ordinal());

}

}

}

/*Output:

AA, ordinal 0

BB, ordinal 1

CC, ordinal 2

我们之前学过,switch语句是有限集合进行选择,它和enum配合使用是最好的。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>