【Java】五、数组与枚举(enum)

文章详细介绍了Java编程中数组的创建、遍历以及Arrays类的使用,包括填充、排序和查找元素的方法。此外,还讨论了枚举的概念,如何声明、迭代枚举元素,以及在switch语句中的应用。枚举类的构造函数、方法和成员也有所涉及。
摘要由CSDN通过智能技术生成

Java 语言中提供的数组是用来存储固定大小的同类型元素

创建数组,并将新创建的数组的引用赋值给新声明的变量:dataType[] arrayRefVar = new dataType[int size];

也可以dataType[] arrayRefVar = {value0, value1, ..., valuek};

e.g. double[] li = new double[int size];

For-Each 循环(增强循环)

    1

    2

    3

    4

for(type e

lement: array)

{

    System.out.println(element);

}

e.g.

    1

    2

    3

    4

    5

double[] myList = {1.9, 2.9, 3.4, 3.5};

    // 打印所有数组元素

    for (double element: myList) {

        System.out.println(element);

    }

Arrays类

给数组赋值:public static void fill(arrayname, int fromIndex, int toIndex, value)

将数组arrayname从fromIndex到toiIndex的元素全部改为value(两个index分别默认为0和length)

Arrays.fill()

对数组排序:public static void sort(Object[] a)

注意:直接改变了原数组

升序:Arrays.sort(li)

降序:Arrays.sort(li, Collections.reverseOrder())

比较数组:public static boolean equals(li1, int fromIndex, int toIndex, li2, int fromIndex, int toIndex)

li1和li2类型、顺序、长度相等,且每个元素大小相等,则返回True

Arrays.equals()

查找数组元素:public static int binarySearch(Object[] a, (int fromIndex, int toIndex, )Object key)

对排序好的数组进行二分查找法操作(fromIndex和toIndex默认为0和length)

int i = Arrays.search(li, ...)

[1] 该搜索键在范围内,但不是数组元素,由1开始计数,返回“ - 插入点索引值”

[2] 该搜索键在范围内,且是数组元素,由0开始计数,返回搜索值的索引值

[3] 该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromIndex + 1)

[4] 该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toIndex + 1)

枚举

枚举类可单独声明,也可声明在类的内部作为内部类。每个枚举的成员都可视为一个类的对象,包含index与value

    1

    2

    3

    4

enum Color

{

    RED, GREEN, BLUE;

}

使用实例

    1

    2

    3

    4

    5

    6

    7

    8

public class Test

{

    public static void main(String[] args)

    {

        Color c1 = Color.RED;

        System.out.println(c1);

    }

}

输出

RED

枚举元素的迭代与switch语句的应用

使用增强循环迭代枚举元素

    1

    2

    3

    4

    5

    6

    7

public class MyClass {

  public static void main(String[] args) {

    for (Color myVar : Color.values()) {

      System.out.println(myVar);

    }

  }

}

枚举类常应用于switch语句中

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

   14

   15

   16

   17

public class MyClass {

  public static void main(String[] args) {

    Color myVar = Color.BLUE;

    switch(myVar) {

      case RED:

        System.out.println("红色");

        break;

      case GREEN:

         System.out.println("绿色");

        break;

      case BLUE:

        System.out.println("蓝色");

        break;

    }

  }

}

输出

蓝色

枚举类方法

values():返回枚举类中所有的值

    1

Color[] arr = Color.values();

ordinal():找到每个枚举常量的索引,就像数组索引一样(index)

    1

    2

    3

for (Color col : arr) {

    System.out.println(col.ordinal());

}

valueOf():返回指定字符串值的枚举常量,不存在的会报IllegalArgumentException

    1

System.out.println(Color.valueOf("RED"));

枚举类成员

枚举跟普通类一样可以有自己的变量(RED, GREEN, BLUE都可看作类成员对象)、方法和构造函数

构造函数

构造函数只能使用private访问修饰符,所以外部无法调用

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

   14

   15

   16

   17

   18

   19

   20

   21

   22

   23

   24

   25

   26

enum Color

{

    RED, GREEN, BLUE;

 

    // 构造函数。此处会调用三次

    private Color()

    {

        System.out.println("Constructor called for : " + this.toString());

    }

 

    public void colorInfo()

    {

        System.out.println("Universal Color");

    }

}

 

public class Test

{   

    // 输出

    public static void main(String[] args)

    {

        Color c1 = Color.RED;

        System.out.println(c1);

        c1.colorInfo();

    }

}

输出

Constructor called for : RED

Constructor called for : GREEN

Constructor called for : BLUE

RED

Universal Color

方法

枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

   14

   15

   16

   17

   18

   19

   20

enum Color{

    RED{

        public String getColor(){//枚举对象实现抽象方法

            return "红色";

        }

    },

    GREEN{

        public String getColor(){//枚举对象实现抽象方法

            return "绿色";

        }

    },

    BLUE{

        public String getColor(){//枚举对象实现抽象方法

            return "蓝色";

        }

    };

   

    //定义抽象方法

    public abstract String getColor();

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值