java 数组--基础理论

要点提示

一旦数组被创建,它的大小是固定的。

数组中存储的是一组相同类型的数据。

声明数组变量

elementType[] arrayRefvar;  // 推荐

或者

elementType arrayRefvar[];

elementType可以是任意数据类型,但是数组中所有的元素必须具有相同的数据类型。

如声明一个int型的数组变量myList:

        int[] myList;     推荐使用这种形式的

或者

        int myList[]; 

创建数组

arrayRefvar = new elementType[arraySize];  创建数组并赋值给变量

声明数组变量、创建数组、将数组引用赋值给变量这三个步骤可以合并在一条语句里:

        elementType[] arrayRefvar = new elementType[arraySize];    推荐

   或者

        elementType arrayRefvar[] = new elementType[arraySize];

eg:

        int[] myList = new int[10];

这条语句的意思是:声明了数组变量myList,创建了一个由10个int型元素构成的数组,并将该数组的引用赋值给myList。

给数组元素赋值

语法:arrayRefVal[index] = value;

例如:       

myList[0] = 5;
myList[1] = 6;
myList[2] = 5;
myList[3] = 7;
myList[4] = 10;
myList[5] = 9;
myList[6] = 5;
myList[7] = 70;
myList[8] = 71;
myList[9] = 72;

数组的下标是从0开始,最后一个下标是arraySize-1

数组大小和默认值

数组的大小是指数组的元素个数,创建数组后就不能再修改它的大小,在最初创建的时候需要给数组分配内存空间,所以必须指定该数组能够存储的元素个数,或者在创建之初就对元素进行初始化。

数据大小的获取:arrayRefVal.length

当以上面的方式创建数组后,它的元素被赋予默认值,数值型的基本数据类型的默认值是0,char型默认值是'\u0000', boolean型的是false。引用类型的是null。

访问数组元素

数组元素通过下标访问。

范围是从0到arrayRefVal.length-1

获取元素语法:

arrayRefVal[index]

数组初始化方式 

将声明数组、创建数组和初始化数组结合到一条语句中:

        elementType[] arrayRefVal = new  elementType[]{value0, value1, value2...};

或者

        elementType[] arrayRefVal = {value0, value1, value2...};   这种方式必须将声明、创建和初始化数组都放在一条语句中,将它们分开会产生语法错误

public class ArrayTest {
    public static void main(String[] args) {
        int[] intList1 = new int[10];
        String[] stringList1 = new String[10];
        int[] intList2 = new int[]{1,2,3,4};
        int[] intList3 = {1,2,3,4};
        for (int i=0;i<intList1.length;i++){
            System.out.println(intList1[i]);  // 10个0
            System.out.println(stringList1[i]);  // 10个null
        }
        System.out.println(intList2[4]);  // index:4超出intList2的最大下标报错:java.lang.ArrayIndexOutOfBoundsException: 4
    }
}
// 使用foreach循环处理数组
        for(int i: intList3){
            System.out.println(i);  // 这里的i是表示数组中的元素,代码相当于是『对intList3里的每个元素进行以下操作』i前的int是对i的类型的声明,这个类型必须跟数组中的数据的类型是相同的
        }

复制数组 

复制数组有三种方式,这边只介绍两种:

1)使用循环语句逐个地复制数组的元素

2)使用System类中的静态方法arraycopy

arraycopy的使用:

        arraycopy(sourceArray, srcPos, targetArray, tarPos, length);

其中:参数srcPos和tarPos分别表示在源数组 sourceArray和目标数组targetArray中的起始位置。

从sourceArray复制到targetArray中的元素个数由参数length指定。

注意:arraycopy方法没有给目标数组分配内存空间。复制前必须创建目标数组以及分配给它的内存空间。

import java.util.Arrays;

public class ArrayTest02 {
    public static void main(String[] args) {
        // 使用arrarcopy复制数组
        int[] ints = {1,2,3,4,5,6,6,7,8,9};
        int[] ints1 = new int[10];
        System.arraycopy(ints, 1, ints1, 1, 5);
        System.out.println(Arrays.toString(ints1));  // [0, 2, 3, 4, 5, 6, 0, 0, 0, 0]
    }
}

Arrays类 

java.util.Arrays类包括各种各样的静态方法,用于实现数组的排序和查找、数组的比较和填充数组元素,以及返回数组的字符串表示。

① 可以使用sort或者parallelSort方法对整个数组或部分数组进行排序。

double[] numbers = {6.0, 4.4, 1.9, 2.9, 3.4, 7.8};
Arrays.sort(numbers);   // [1.9, 2.9, 3.4, 4.4, 6.0, 7.8]   对整个数组进行排序
Arrays.sort(numbers, 1,3);  // [6.0, 1.9, 4.4, 2.9, 3.4, 7.8]  对数组中的一部分进行排序(下标1和下标2)
Arrays.parallelSort(numbers);  // [1.9, 2.9, 3.4, 4.4, 6.0, 7.8]  对整个数组进行排序
Arrays.parallelSort(numbers, 1, 3);  // [6.0, 1.9, 4.4, 2.9, 3.4, 7.8]  对数组中的一部分进行排序(下标1和下标2)
System.out.println(Arrays.toString(numbers));

 parallelSort在计算机有多个处理器时会更高效。

②可以采用二分查找法(binarySearch方法)在数组中查找关键字。数组必须按升序排好。存在就返回下标,不存在就返回负数

③可以采用equals方法检测两个数组严格相等。如果两个数组对应的元素都相等,那么这两个数组严格相等。返回值是boolean类型。

④可以使用fill方法填充整个数组或部分数组。

int[] ints2 = new int[10];
System.out.println(Arrays.toString(ints2));  // [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Arrays.fill(ints2, 8);
System.out.println(Arrays.toString(ints2));  // [8, 8, 8, 8, 8, 8, 8, 8, 8, 8]
Arrays.fill(ints2, 1, 5, 6);
System.out.println(Arrays.toString(ints2));  // [8, 6, 6, 6, 6, 8, 8, 8, 8, 8]

 

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值