美文网首页java学习
四、Java中的数组

四、Java中的数组

作者: 极课编程 | 来源:发表于2019-04-13 11:04 被阅读199次

1. 数组的概念

数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩。

2. 一维数组的声明和使用

2.1 一维数组的声明和初始化
  • 声明
int[] a;

int a[];

推荐使用第一种方式

  • 初始化
    数组的特点:定长的,初始化后不可更改长度,要求在初始化时必须指定长度(最大存储量)
    示例1:声明了一个可以最多存储5个数字的数组,此时没有指定具体数字,int类型默认值为0,数组中相当于存储了5个“0”。
int[] a = new int[5];

示例2:声明了一个可以最多存储5个数字的数组,此时指定了具体的数字分别是1,2,5,12和7

int[] b = {1,2,5,12,7};
int[] c = new int[]{1,2,5,12,7};

2.2 一维数组的访问

需要通过下标去访问数组中的某个元素
下标:从0开始,下标最大值是(数组的长度-1) [0, 最大长度-1]
示例3:查看数组中的第2个元素

System.out.println(a[1]);

示例4:修改数组中的第4个元素的值为35

a[3] = 35;

如果使用了一个超过下标范围的数字作为数组下标使用,代码会发生问题。
比如长度是5的数组a,最大下标是4,访问a[5]就会发生下述异常

image

java.lang.ArrayIndexOutOfBoundsException:数组下标越界异常

2.3 遍历数组

访问数组中的所有元素
数组属性 a.length 表示数组的长度

int[] a = {23,12,11,15,28,42,31,55,8,17,12};
for(int i = 0; i < a.length; i++) {
    System.out.println(a[i]);
}

示例5:给定数组 {23,12,11,15,28,42,31,55,8,17,12},请计算平均值

int[] a = {23,12,11,15,28,42,31,55,8,17,12};
int sum = 0;
for(int i = 0; i < a.length; i++) {
    sum += a[i];
}
int avg = sum / a.length;
System.out.println(avg);

示例6:找到数组中的最小值

int[] a = {23,12,11,15,28,42,31,55,8,17,12};
int min = a[0];
for(int i = 1; i < a.length; i++) {
    if(a[i] < min) {
        min = a[i];
    }
}
System.out.println(min);

3. 多维数组的声明和使用(了解)

多维数组可以理解为:
二维数组是一种类似“表结构”
三维数组是一种类似“空间结构”
更高维的数组在现实世界中很少意义
实际上,多维数组是:数组类型的数组
以二维数组为例理解多维数组的概念

3.1 二维数组的声明和初始化
3.1.1 二维数组的声明
int[][] a;

int a[][];

int[] a[];

推荐使用第一种方式声明二维数组

3.1.2 二维数组的初始化

指定第一维的长度和第二维的长度

int[][] a = new int[3][4];

指定第一维的长度而不指定第二维的长度

int[][] a = new int[3][];

不允许在未指定第一维时,直接指定第二维
不允许两个维度的长度都不指定
下面这个是一个错误的示例

int[][] a = new int[][4]; //错误示例!!
int[][] a = new int[][]; //错误示例!!

可以直接数字的初始化,初始化了一个3x4的数组
第一维的长度为3,第二维的长度为4

int[][] a = {{1,2,3,4},{5,6,7,8},{1,4,2,8}};

1 2 3 4
5 6 7 8
1 4 2 8

初始化一个“锯齿数组”

int[][] a = {{1,2,3},{5,6,7,8,9},{1,4,2,8}};
int[][] d = new int[][]{{1,2,3},{5,6,7,8,9},{1,4,2,8}};

1 2 3
5 6 7 8 9
1 4 2 8
3.2 二维数组的遍历

二维数组a中
a.length得到第一维长度、
a[i].length对应的二维长度

int a[][] = {{1,2,3},{5,6,7,8,9},{1,4,2,8}};

for(int i = 0; i < a.length; i++) {//遍历第一维
    for(int j = 0; j < a[i].length; j++) {
        System.out.print(a[i][j]);
        System.out.print("\t");
    }
    System.out.println();
}

4. 数组的排序(重要)

一维数组的内部排序

内部排序指的是不借助其他数组完成数组内部排序

4.1 冒泡排序法(重点)

冒泡排序是一种稳定排序,两个相同数字的相对位置不会发生改变
所谓稳定"{12(a),11,15,6,2,9,12(b),7}"
稳定排序的结果一定是"{2,6,7,9,11,12(a),12(b),15}"
不稳定排序结果不一定是这样
数组中,相邻两个数进行比较,较大数放在后面,不断地进行这个过程。最大的数就会被放到结尾(升序)
冒泡排序法一个数的示例图

image

类似地继续地从头冒第二个数,第三个数...直到将所有的数字都放在合适的位置上

代码:

int temp = 0; 
for(int i = 1; i < a.length; i++) {
    for(int j = 0; j < a.length-i; j++) {   
        if(a[j] > a[j+1]) {
            temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
        }
    }
}

相关文章

  • 四、Java中的数组

    1. 数组的概念 数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int ...

  • 【骚全带你学Java---九、认识java数组】

    java中数组 数组是指一组数据的集合,数组中的每个数据称为元素。在Java中,数组也是Java对象。数组中的元素...

  • Java基础

    一、数组 1、数组的使用 Java 中操作数组只需要四个步骤:1、 声明数组语法: 数据类型[ ] 数组名;或者...

  • java中的数组

    java中数组的操作需要四个步骤 1.声明数组 语法: 数据类型[ ] 数组名;或者 数据类型 数组名[ ]...

  • 面试题总结

    1、Java中能创建Volatile数组吗? 能,Java中可以创建volatile类型数组,不过只是一个指向数组...

  • Java多维数组的用法!

    除了一维数组和二维数组外,Java中还支持更多维的数组,如三维数组、四维数组和五维数组等,它们都属于多维数组。 经...

  • 多线程、并发及线程的基础问题

    一、Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是...

  • 学习笔记3(指针运算,函数参数与指针,数组指针,二级指针)

    一、指针运算 二、数组与指针 三、指针和函数参数 java中: C/C++中: 四、指针数组 五、 二级指针 六、...

  • Android JNI 笔记 | int类型数组操作 |

    JNI 中需要操作一个数组,但这个数组是在Java中声明的,怎么实现呢?  需要进行操作的数组:  Java 类中...

  • Java数组

    Java数组 1.声明数组 在java中声明数组有两种形式:数组元素类型名[] 数组名;数组元素类型名 数组名 [...

网友评论

    本文标题:四、Java中的数组

    本文链接:https://www.haomeiwen.com/subject/xgllwqtx.html