Java 05数组
数组
- 定义:相同类型数据的有序集合
- 每个数据称作数组元素,每个数组元素可以通过一个下标来访问
- 特点
- 长度确定,不能改变
- 相同类型,不能混合
- 任何类型,基本引用
- 数组对象,身在栈中
数组声明创建
- 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
-
Java语言使用new操作符来创建数组(声明+创建)
int[] nums; //1.声明一个数组 nums = new int[10]; //2.创建一个数组 int[] num2 = new int[10]; //声明加创建 //3.给数组元素中赋值 nums[0] = 1; nums[1] = 2; nums[2] = 3;
数组的初始化
//动态初始化:默认初始化
dataType[] arrayRefVar = new dataType[arraySize];
//静态初始化
dataType[] arrayRefVar = {value0, value1, ..., valuek};
数组长度是确定的,不可以改变
内存分析
- 栈:分配空间(相当于大纲的目录)
- 堆:存放用关键字new出来的数据(相当于目录指向的内容)
数组边界
-
下标合法区间:[0,length-1],越界会报错
-
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arrayRefVar.length-1。
数组使用
- 普通的for循环
- for-each循环 (shuzu.for)
- 数组作方法入参
- 数组作返回值
多维数组
-
定义:数组的数组,元素是数组
-
二维数组
int a[][] = new int[2][5];
Arrays 类
public static void main(String[] args) {
int[] a = {1,2,3,4,5};
System.out.println(a);
//打印数组元素
//System.out.println(Arrays.toString(a));
printArray(a);
//数组排序
Arrays.sort(a);
//数组填充 左闭右开
Arrays.fill(a,0);
}
冒泡排序
//冒泡排序
//1.比较数组中,两个相邻元素,如果第一个数比第二个大,交换位置(第三方变量)
//2.每次比较都会产生一个最大或最小数
//3.下一轮可以少一次排序
//4.依次循环,直到结束
public static int[] sort(int[] array){
//临时变量
int temp = 0;
//外层循环,判断我们要走多少次
for (int i = 0; i < array.length-1; i++) {
boolean flag = false; //减少没有意义的比较
//内层循环,比较判断两个数大小,交换位置
for (int j = 0; j < array.length-1-i ; j++) {
if (array[j+1]>array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if (flag == false){
break;
}
}
return array;
}
稀疏数组
- 定义:(大部分是同一值)记录数组几行几列,有多少不同值,记录在小规模数组中,缩小程序规模