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

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

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

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

For-Each 循环(增强循环)

for(type e
lement: array)
{
    System.out.println(element);
}



e.g.

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

enum Color 
{
    RED, GREEN, BLUE;
}



使用实例

public class Test
{
public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}



输出

RED

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

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

public class MyClass {
public static void main(String[] args) {
for (Color myVar : Color.values()) {
      System.out.println(myVar);
    }
  }
}



枚举类常应用于switch语句中

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():返回枚举类中所有的值

Color[] arr = Color.values();



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

for (Color col : arr) {
    System.out.println(col.ordinal());
}



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

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



枚举类成员

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

构造函数

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

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

方法

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

enum Color{
    RED{
public String getColor(){//枚举对象实现抽象方法
return "红色";
        }
    },
    GREEN{
public String getColor(){//枚举对象实现抽象方法
return "绿色";
        }
    },
    BLUE{
public String getColor(){//枚举对象实现抽象方法
return "蓝色";
        }
    };
    
    //定义抽象方法
public abstract String getColor();
}