浅尝Java 数组

来源:互联网 发布:高三毕业后干什么知乎 编辑:程序博客网 时间:2024/06/06 00:57

浅尝Java 数组:
一种同类型元素的集合,最基本的一种数据结构。通过下标访问 数组一旦初始化完成,在内存中所占空间就被固定下来,长度不可改变,因此我们在使用中要考虑到多少长度才是最佳的。

定义数组有两种语法格式:

type[] arrayName;(建议尽可能多的使用此种方式)

type arrayName[];

数组在使用前,一定要初始化,为数组分配内存空间,并赋初始值。初始化也有两种方式:

 静态初始化 arrayName = new type[]{e1       .e2.e3,....} 动态初始化 arrayName = new type[length]

注意: 访问数组元素指定的索引值小于0,或者大于等于数组的长度,编译时不会出现错误,但是运行时会出现异常:java.lang.ArrayIndexOutOfBoundsException:N(数组越界)。

System.arraycopy可以用于数组的复制,如果是数组比较大,那么使用System.arraycopy会比较有优势,因为其使用的是内存复制,省去了大量的数组寻址访问等时间

public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

src 源数组
srcPos 源数组起始位置
dest 目标数组
destPos 目标数组起始位置
length 需要复制的元素数量

例如下面

int[] a = {1,2,3,4,5,6,7};int[] b = new int[4];System.arraycopy(a, 2, b, 0, 4);System.out.println(Arrays.toString(b));

输出:

[3, 4, 5, 6]

Arrays.copyOf() 同样也可以用于数组复制。
该方法对于不同的数据类型都有相应的方法重载。

type newArray = Arrays.copyOf(type[] array,int length)

特点:生成的数组是原数组的副本。
length 大于原数组长度,则用0或null填充
length 小于原数组长度,则进行截取

数组的扩容:
数组的长度是不可以改变的,所以扩容是指创建一个更大的数组并将原数组的内容复制到其中

数组的排序:
排序是对数组施加的最常用的一种方法,所谓排序是按照从小到大或者从大到小重新排列。
通常用数组元素的交换次数来衡量算法的优劣。
常用的排序算法有:插入排序、冒泡排序、快速排序。
冒泡排序:
原则比较相邻的元素,如果违反顺序准则,则交换。可以理解为:

第一次找到最大的元素放在最后的位置上,不再变动
第二次找到剩下元素中最大的元素放在倒数第二位置上,不再变动
以此类推,直到排序完成。

import java.util.Arrays;import java.util.Random;public class Test {    public static void main(String args[]){        int[] arr = new int[10];        Random ran = new Random();        for (int i = 0; i < arr.length; i++) {             arr[i] = ran.nextInt(100);        }        System.out.println(Arrays.toString(arr));        for (int i = 0; i < arr.length - 1; i++) {            for (int j = 0; j < arr.length - i - 1; j++) {                if (arr[j] > arr[j + 1]) {                    int t = arr[j];                    arr[j] = arr[j + 1];                     arr[j + 1] = t;                    }                }                System.out.println(Arrays.toString(arr));            }        System.out.println(Arrays.toString(arr));    }}

输出:
这里写图片描述
JDK 提供的 Arrays.sort()封装了数组的排序算法。

原创粉丝点击