首先关于数组的解释
先从数据类型说起:
基本数据类型:byte、short、int、long、float、double、char、boolean
引用数据类型:所有用class定义类都是引用类型
特别地,Object:如果数组的类型是Object,则所有数据类型的数据都可以存储,它是Java中所有类的父类。
(因为所有的基本数据类型,都由一个对应的封装类,封装类是Object的子类)
所以得到数组的定义为:数组是存储同一类型的数据的集合。
注意
- 数组在定义的时候要记得给指定的长度
- 数组是一种数据结构
- 数组在Java是类,通过数组创建的是对象。
- 是一种线性的连续存储空间的数据结构
- 优点:数组是所有数据结构中访问速度最快的一种,可以直接通过数组的下标进行定位获取或存储数据
- 数组自身只有一个唯一的属性length,获取数组能存储多少数据的属性(但是有从Object父类继承过来的属性和方法,一般无用)
其他编程规则:
- new的使用——实例化对象的时候才会使用new关键字
- 通过数组实例化的才是对象
- 类肯定有属性和方法
在Java中定义数组
定义一维数组
- 数据类型[ ] 数组名 = {值,…};
- 数据类型[ ] 数组名 = new 数据类型[长度];
- 数据类型[ ] 数组名 = new 数据类型[ ]{值,…};
- 数据类型[ ] 数组名;
数组名 = new 数据类型[长度]; - 数据类型[ ] 数组名;
数组名 = new 数据类型[]{值,…};
定义二维数组
- 数据类型[][] 数组名 = {{值,…},…};
- 数据类型[][] 数组名 = new 数据类型[行][列];
- 数据类型[][] 数组名 = new 数据类型[][]{{值,…},…};
- 数据类型[][] 数组名;
数组名 = new 数据类型[行][列]; - 数据类型[][] 数组名;
数组名 = new 数据类型[][]{{值,…},…};
数组的使用
一维数组
- 获取一维数组中能存储的元素总数:数组名.length
- 获取或者设置数组的某一个位置的值:数组名[下标]
- 数组的length是什么时候开始计数的?从1开始
数组的下标是从什么时候开始计数的?从0开始
二维数组
1.获取二维数组有多少行:数组名.length
获取二维数组中某一行有多少列:数组名[行下标].length
2.获取二维数组中能存储的元素总数:
new 数据类型[][]{{值,…},…}:数组名[行下标].length+…+数组名[行下标].length
new 数据类型[行][列]:数组名.length*数组名[行下标].length
3.获取或者设置数组的某一个位置的值:数组名[行下标][列下标]
排序方式
下面列举几个排序
1.冒泡排序
public void sort(Student[] stu){
for (int i = 0; i < stu.length - 1; i++) {
for (int j = 0; j < stu.length - 1 - i; j++) {
if (stu[j].getNumble() > stu[j + 1].getNumble()) { // 交换两数位置
Student temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
2.快速排序
3.选择排序
public static void sort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
int min = i;// 假设i位置的值是最小的
for (int j = i + 1; j < array.length; j++) {
if (array[min] > array[j])// 如果min位置的值大于j位置的值
min = j;// 记录最小值的位置
}
// 判断min是否不等于i
if (min != i) {
int temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}
4.插入排序
5.希尔算法
…
具体可见八大排序算法
关于数组的构造