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();
}