zoukankan      html  css  js  c++  java
  • Java枚举、静态导入、自动拆装箱、增强for循环、可变参数

    一、枚举简介

      1、什么是枚举?

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

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

      2、使用一个关键字 enum

       enum Color3 { RED,GREEN,YELLOW; } 

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

      *特殊枚举的操作

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

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

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

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

    3、枚举的api的操作

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

      **ordinal():枚举的下标

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

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

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

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

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

     二、静态导入

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

      *import static XX.XX.xxx

      *import static java.lang.System.out;

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

    三、自动拆装箱

      *装箱

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

      *拆箱

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

      ** //自动装箱

        Integer i = 10;

        //自动拆箱

        int m = i ;

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

    public void test1() {
         //装箱
        Integer m = new Integer(10);
          //拆箱
         int a = m.intValue();  
    }    

      **jdk是向下兼容

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

    四、增强for循环

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

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

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

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

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

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

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

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

    五、可变参数

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

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

    • 可变参数的定义方法:数据类型...数组的名称
    • 理解为一个数组,这个数组存储传递过来的参数
     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) {} 

  • 相关阅读:
    Zabbix5 Frame 嵌套
    Zabbix5 对接 SAML 协议 SSO
    CentOS7 安装 Nexus
    CentOS7 安装 SonarQube
    GitLab 后台修改用户密码
    GitLab 查看版本号
    GitLab Admin Area 500 Error
    Linux 安装 PostgreSQL
    Liger ui grid 参数
    vue.js 是一个怪东西
  • 原文地址:https://www.cnblogs.com/gdwkong/p/7423762.html
Copyright © 2011-2022 走看看