java数组

Posted 伸手挽明月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数组相关的知识,希望对你有一定的参考价值。

什么是数组

  • 同一种类型数据的集合。其实数组就是一个容器。
  • 数组里的每个数据就是一个元素,可以用下表来访问(下标从0开始)

数组的生命和创建

//格式1:
//元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
int[] arr = new int[5];

//格式2:
//元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};

注意:给数组分配空间时,必须指定数组能够存储的元素个数来确定数组大小。创建数组之后不能修改数组的大小。可以使用length 属性获取数组的大小。

数组初始化

int[] x = new int[3];
x[0] = 1;
x[1] = 2;
//没赋值x[2]默认是int的默认值0

//另一种定义:该形式可以直接明确数组的长度,以及数组中元素的内容
int[] x = { 1, 2, 3 };
int[] x=new int[]{1,2,3};

//如果数组初始化中不使用运算符new。需要注意:下列写法是错误的。
int[] arr;
arr={1,2,3,4,5};
//此时初始化数组,必须将声明,创建,初始化都放在一条语句中个,分开会产生语法错误。

//获取到数组中元素的个数,也就是数组的长度. 数组名.length
int[] x = { 1, 2, 3 };
for (int y = 0; y < x.length; y++) {
    System.out.println(x[y]);
} // 这就是数组的第一个遍历操作.

网图

数组的常见异常

  1. NullPointerException 空指针异常
    原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。

    网图

  2. ArrayIndexOutOfBoundsException 索引值越界。
    原因:访问了不存在的索引值。

数组的内存分析

二维数组

多维数组:实质就是存储是数组的数组

二维数组:实质就是存储是一维数组。

数组定义

​ 数组类型[][] 数组名 = new 数组类型[一维数组的个数][每一个一维数组中元素的个数];

int[][] a = new int[2][3];
//相当于定义了2个lenth为3的1维数组
//a[0]代表第一个一维数组,a[1]代表第二个一维数组
//a.lenth表示有多少个一维数组(2个),a[0].lenth表示a[0]这个一维数组的长度(3)

//初始化
//静态初始化:
int[][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
//动态初始化:
int[][] a = new int[3][4];
for(int i = 0; i<a.lenth ;i++){
    for(int j = 0; i<a[j].lenth ;j++){
        a[i][j]=(i-1)*j+j;
    }
}

Arrays的使用

遍历: toString() 将数组的元素以字符串的形式返回

排序: sort() 将数组按照升序排列

查找: binarySearch()在指定数组中查找指定元素,返回元素的索引,如果没有找到返回(-插入点-1) 注意:使用查找的功能的时候,数组一定要先排序

冒泡排序

  1. 比较相邻的元素。如果第一个比第二个大,就交换它们两个。
  2. 对每一对相邻的元素都进行比较,等所有的比较完后最后一个数字是这堆数据里的最大数字。
  3. 重复步骤一,直到排序完成。

动图演示(图片来源https://forestcat.blog.csdn.net/)
在这里插入图片描述

代码实现:

int []arr= {3,2,8,4,7};//创建数组
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 temp=arr[j];
            arr[j]=arr[j+1];
            arr[j+1]=temp;
        }
    }
}

稀疏数组

稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组

压缩存储可以节省存储空间以避免资源的不必要的浪费,在数据序列化到磁盘时,压缩存储可以提高IO效率

//原数组
	0 0 0 0 0 0 0 0 
    0 0 1 0 0 0 0 0 
    0 0 0 0 2 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 

//其稀疏数组形式:
//第一行存储原始数据总行数,总列数,总的非0数据个数
//接下来每一行都存储非0数所在行,所在列,和具体值
        5  8  2
        1  2  1
        2  4  2

以上是关于java数组的主要内容,如果未能解决你的问题,请参考以下文章

Java经典安全数组实现的代码

java.io.ByteArrayInputStream

web代码片段

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

javascript常用代码片段

常用Java程序片段