您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

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

时间:2020-08-07 11:21:16  来源:  作者:

显示的静态初始化

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配合使用是最好的。



Tags:Java可变参数列表   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
显示的静态初始化Java语言里面可以允许静态子句块的存在,语法如下所示:public class S {static int i;static {i = 50;}}这段代码里的第二个static修饰的块,看起来有点像方法,但...【详细内容】
2020-08-07  Tags: Java可变参数列表  点击:(78)  评论:(0)  加入收藏
▌简易百科推荐
一、Redis使用过程中一些小的注意点1、不要把Redis当成数据库来使用二、Arrays.asList常见失误需求:把数组转成list集合去处理。方法:Arrays.asList 或者 Java8的stream流式处...【详细内容】
2021-12-27  CF07    Tags:Java   点击:(3)  评论:(0)  加入收藏
文章目录 如何理解面向对象编程? JDK 和 JRE 有什么区别? 如何理解Java中封装,继承、多态特性? 如何理解Java中的字节码对象? 你是如何理解Java中的泛型的? 说说泛型应用...【详细内容】
2021-12-24  Java架构师之路    Tags:JAVA   点击:(5)  评论:(0)  加入收藏
大家好!我是老码农,一个喜欢技术、爱分享的同学,从今天开始和大家持续分享JVM调优方面的经验。JVM调优是个大话题,涉及的知识点很庞大 Java内存模型 垃圾回收机制 各种工具使用 ...【详细内容】
2021-12-23  小码匠和老码农    Tags:JVM调优   点击:(11)  评论:(0)  加入收藏
前言JDBC访问Postgresql的jsonb类型字段当然可以使用Postgresql jdbc驱动中提供的PGobject,但是这样在需要兼容多种数据库的系统开发中显得不那么通用,需要特殊处理。本文介绍...【详细内容】
2021-12-23  dingle    Tags:JDBC   点击:(12)  评论:(0)  加入收藏
Java与Lua相互调用案例比较少,因此项目使用需要做详细的性能测试,本内容只做粗略测试。目前已完成初版Lua-Java调用框架开发,后期有时间准备把框架进行抽象,并开源出来,感兴趣的...【详细内容】
2021-12-23  JAVA小白    Tags:Java   点击:(10)  评论:(0)  加入收藏
Java从版本5开始,在 java.util.concurrent.locks包内给我们提供了除了synchronized关键字以外的几个新的锁功能的实现,ReentrantLock就是其中的一个。但是这并不意味着我们可...【详细内容】
2021-12-17  小西学JAVA    Tags:JAVA并发   点击:(10)  评论:(0)  加入收藏
一、概述final是Java关键字中最常见之一,表示“最终的,不可更改”之意,在Java中也正是这个意思。有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。...【详细内容】
2021-12-15  唯一浩哥    Tags:Java基础   点击:(14)  评论:(0)  加入收藏
1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况...【详细内容】
2021-12-15  软件老王    Tags:logback   点击:(17)  评论:(0)  加入收藏
本篇文章我们以AtomicInteger为例子,主要讲解下CAS(Compare And Swap)功能是如何在AtomicInteger中使用的,以及提供CAS功能的Unsafe对象。我们先从一个例子开始吧。假设现在我们...【详细内容】
2021-12-14  小西学JAVA    Tags:JAVA   点击:(21)  评论:(0)  加入收藏
一、概述观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监听者发现,这么想来目标发生情况到观察...【详细内容】
2021-12-13  唯一浩哥    Tags:Java   点击:(16)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条