gpt4 book ai didi

详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、枚举简介 。

1、什么是枚举?

需要在一定范围内取值,这个值只能是这个范围内中的任意一个 。

现实场景:交通信号灯,有三种颜色,但是每次只能亮三种颜色里面的任意一个 。

2、使用一个关键字 enum 。

enum Color3 { RED,GREEN,YELLOW; } 。

*枚举的构造方法也是私有化的 。

*特殊枚举的操作 。

**在枚举类里面有构造方法 。

**在构造方法里面有参数,需要在每个实例上都写参数 。

**在枚举类里面有抽象方法 。

**在枚举的每个实例里面都重写这个抽象方法 。

3、枚举的api的操作 。

**name():返回枚举的名称 。

**ordinal():枚举的下标 。

**valueof(Class<T> enumType,String name):得到枚举的对象 。

**还有两个方法,不在api文档里,编译自动生成 。

***valueof(String name) 转换枚举对象 。

***values() 获得所有枚举对象数组 。

?
1
2
3
4
5
6
7
8
9
10
11
//知道枚举的对象,得到枚举名称和下标
  @Test
  public void test1() {
   //得到枚举对象
   Color100 c100 = Color100.RED;
   //得到枚举名称
   String name = c100.name();
   //得到枚举的下标
   int idx = c100.ordinal();
   System.out.println(name+":"+idx);
  }
?
1
2
3
4
5
6
7
8
9
10
//知道枚举的名称,得到枚举的对象和下标
  @Test
  public void test2() {
   String name1 = "GREEN";
   //得到对象
   Color100 c1 = Color100.valueOf(name1);
   //得到枚举下标
   int idx1 = c1.ordinal();
   System.out.println(idx1);
  }
?
1
2
3
4
5
6
7
8
9
10
11
12
//知道枚举的下标,得到枚举的对象和名称
  @Test
  public void test3() {
   int idx2 = 2;
   //得到枚举对象
   Color100[] cs = Color100.values();
   //根据下标得到对象
   Color100 c12 = cs[idx2];
   //得到枚举的名称
   String name2 = c12.name();
   System.out.println(name2);
  }

2、静态导入 。

*可以在代码里面,直接使用静态导入方式,导入静态方法或者常量 。

*import static XX.XX.xxx 。

*import static java.lang.System.out,

比如实现一个计算器,在Math类里面 。

3、自动拆装箱 。

*装箱 。

**把基本的数据类型装换成包装类 。

*拆箱 。

**把包装类转换成基本数据类型 。

** //自动装箱 。

Integer i = 10,

//自动拆箱 。

int m = i ,

** 在jdk1.4里面如何实现装箱和拆箱 。

?
1
2
3
4
5
6
public void test1() {
   //装箱
  Integer m = new Integer(10);
   //拆箱
   int a = m.intValue();
}

**jdk是向下兼容 。

-比如在jdk1.4里写的代码,到5.0里面也可以运行 。

4、增强for循环 。

*语法 for(遍历出来的值:要遍历的集合){} 。

-for(String s : list){ System.out.println(s) } 。

*使用场景:数组;实现Iterator接口的集合,可以使用增强for循环 。

*在集合上使用增强for循环遍历 。

list set 实现了Iterator接口,所以可以使用增强for循环 。

map不能使用增强for循环,没有实现Iterator接口,所以不能使用增强for循环 。

*增强for循环出现目的:为了替代迭代器 。

**增强for循环底层就是迭代器实现的.

5、可变参数 。

可变参数应用场景:实现两个数的相加,实现三个数的相加,四个数的相加 。

-如果实现多个方法,这些方法里逻辑基本相同,唯一不同的是传递的参数的个数,可以使用可变参数 。

可变参数的定义方法:数据类型...数组的名称 。

理解为一个数组,这个数组存储传递过来的参数 。

?
1
2
3
4
5
6
7
8
9
public static void add(int ...nums) {
   //nums理解为一个数组,这个数组存储传递过来的参数
   int sum= 0;
   //遍历数组,实现参数相加
   for (int i = 0; i < nums.length; i++) {
    sum+=nums[i];
   }
   System.out.println(sum);
  }

注意:

(1)可变参数需要写在方法的参数列表中,不能单独定义 。

(2)在方法的参数列表中只能有一个可变参数 。

(3)方法的参数列表中的可变参数,必须放在参数最后 ,public void add(int a ,int...nums) {} 。

以上这篇详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:http://www.cnblogs.com/gdwkong/archive/2017/08/24/7423762.html 。

最后此篇关于详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数的文章就讲到这里了,如果你想了解更多关于详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com