Java中的数组

62 阅读3分钟

数组(引用数据类型)就是存放具有相同类型元素的集合。

万变不离其宗,在Java里万物皆为对象,而数组名的本质是一个地址,指向数组元素。

如: int[] arr2 = arr1; 就是将arr1的地址赋给arr2,两者共用一个堆内存数组

一维数组

一维数组是相关变量的一维集合,其逻辑结构是线性表。

使用Java数组需三个步骤:定义数组、为数组分配内存空间、数组元素的赋值运算

语法

数据类型 数组名[]; 或 数据类型[] 数组名; // 定义一维数组
数组名 = new 数据类型 [数组长度]; // 给定义的数组分配内存空间
如:
int a[]; 或 int[] a;
a = new int[10];

也可以合并为一行(动态数组)

数据类型 数组名[] = new 数据类型[数组长度];
如:
int a[] = new int[10];

可以在定义的时候并赋值(静态数组)

数据类型[] 数组名 = new 数据类型[]{元素...};
或
数据类型[] 数组名 = {元素...};
如:
int[] ages = new int[]{20,21,22};

二维数组

一维数组的多层嵌套构成了多维数组

语法:

数据类型 数组名[][]; 或 数据类型 [][] 数组名;
数组名 = new 数据类型[行数][列数];

同样可以合并为一行

数据类型 数组名[][] = new 数据类型[行数][列数];

数组包装类Arrays

Array类提供的方法都是静态方法

名称描述
sort()排序
equals()对比数组中是否有相同数量的元素且对应位置元素相等
binarySearch()对已经完成排序的数组进行二分查找,存在返回索引,否则返回-1
copyOf()复制数组指定长度的内容
toString()返回数组内容
copyOfRange()将指定长度的数组内容复制到一个新数组中

注意:

sort()方法可以对任意数组进行升序排序

sort()方法对String类型数组排序时,按照数字排在字母前面,大写字母排在小写字母前面原则进行升序排列

copyOf()语法

Arrays.copyOf(objectArr,int arrLength);
其中objectArr是要进行复制的数组名
    arrLength是进行复制的数组长度

copyOfRange()语法

Arrays.copyOfRange(objectArr,int startLength,int endLength);
其中objectArr是要进行复制的数组名
    startLength是要进行复制的数组开始位置
    endLength是要进行复制的数组终止位置

数组的相关操作

数组的升序排列

使用sort方法

步骤:

1、导入数组类 import java.util.Arrays;

2、在主方法中调用sort()方法 Arrays.sort(数组名);

冒泡排序

概念

每次从数组中找出最大值放在数组的后边。

思想

从头开始两两比较,把较大的元素与较小的元素进行比较,每轮把当前最大的一个元素存入到数组当前的末尾

步骤

1、定义一个外部循环控制总共需要几轮(数组长度-1)

2、定义一个内部循环控制每轮依次往后比较几个位置(数组长度-i-1)

3、若当前位置的元素值 > 后一位置的元素值,两者交换

二分查找

概念:又叫做折半查找,每次取中间值比较,不断缩小搜索范围。

前提:数组已经排序

选择排序

概念:每轮选择当前位置,开始找出后面的较小值与该位置交换。

关键:

确定共需选择几轮:数组长度-1

控制每轮从以前位置为基准,与后面元素选择几轮