数组的概述
[是啥]数组:用来存储一组相同类型数据的数据结构,数组变量名属于引用类型数据
[存啥]数组中的元素可以是指定的任何一种数据类型(基本类型和引用类型)
[咋用]数组的每个元素对应一个索引(下标),可以通过索引访问数组中的元素
[变与不变]数组被创建好之后,它的长度不能改变,但是数组中的各个元素的值可以被改变
数组注意事项
数组4要素
标识符:即数组名称,用来区分不同的数组
数组元素:数组中存放的数据
元素下标:数组中每个数据的编号,从0开始,用于访问某个具体的元素
元素类型:声明数组时指定的数据类型
2个注意点
数组中元素类型必须相同
数组一旦创建,长度不可改变
数组的声明方式
数据类型 [ ] 数组变量名; 或 数据类型 数组变量名[ ];
数组元素的访问
数组在声明,创建(内存中为之分配空间)后,就可以访问数组中的每个元素
单个元素:arrayName[index]
index 为数组元素下标(索引),可以是整型常量或整型表达式。如a[3], b[i], c[6*i]
遍历访问:循环访问每个元素
普通循环
增强for循环
数组的length属性可以获取它的长度,例如:arr.length
索引值从0开始,且必须小于数组的长度,即0~n-1,否则发生数组越界异常
常用的排序算法
冒泡排序
选择排序
一数组
1数组的声明、创建
//格式:类型[]数组名
//声明了一个整型(int)数组,数组中的每个元素类型为int
int[]a;
//创建了一个数组对象,数组中包含10个元素
a=newint[10];
2数组的下标
下标从0开始,下标范围0 ~ n-1
//通过下标访问数组中相应的元素
a[0] = 12;
a[1] = 23;
a[9] = 20;
3数组的初始化
静态初始化
//大括号中有几个值,创建的数组中就有几个元素
int[]a= {1, 2, 3, 4};
int[]b=newint[]{2, 3, 4, 5, 6};
动态初始化
int[]d=newint[5];
4数组的遍历
1)for遍历
for(inti= 0;i< 4;i++){
System.out.println(a[i]);
}
2)增强的for遍历
for(intv:a){
System.out.println(v);
}
5数组的内存结构(重点)
栈先进后出的数据结构
方法的局部变量存放在栈里,当方法结束时,局部变量所占内存被系统回收
堆
绝大多数对象存放在堆里
二数组排序
1选择排序
针对待排序的元素,使用首元素与剩余的元素依次进行比较,将最大值或最小值放在首位置。依次类推,直到所有待排序元素比较完毕。
5个数,比较4轮
n个数比较,比较n-1轮
轮数i 1 2 3 4
数据比较次数j 4 3 2 1 5 - i
Int[] a
a[0]和a[1]…a[4]
a[1]和a[2]…a[4]
a[2]和a[3] a[4]
a[3]和a[4]
2冒泡排序
针对待排序的元素,相邻的两个元素依次进行比较,将最大值或最小值放在最后
n个元素,比较n-1轮
轮数i 0 1 2 3
次数j 4 3 2 1,j = 5–1–i
int[] a;
a[0]和a[1] , a[1]和a[2] , a[2]和a[3] , a[3]和a[4]
a[0]和a[1] , a[1]和a[2] , a[2]和a[3]
a[0]和a[1] , a[1]和a[2]
a[0]和a[1]
三Arrays类
Java提供的工具类
//默认升序
Arrays.sort(a);
//讲数组内容转换为字符串形式
Stringstr= Arrays.toString(a);
//二分查找
//第一个参数,待查找的数组,第二个参数,要查找的值
intindex= Arrays.binarySearch(a, 23);
四二维数组(了解)
存放数组的数组,数组中的元素为一个数组
int[][]arr=newint[2][3];
//数组中有两个元素,每个元素存放另外一个一维数组的地址
int[][]arr1=newint[2][];
arr1[0] =newint[3];
arr1[1] =newint[2];
//二维数组的静态初始化
int[][]arr2= {{1, 2}, {3, 4}, {5}};
//二维数组的遍历
for(inti= 0;i<arr2.length;i++){
for(int j= 0; j<arr2[ i ].lenght;j++){
System.out.print(arr2[i][j]);
}
System.out.println();
}
五可变参数
//可变参数, 类型...参数名称
staticvoidadd(int...args){
//方法内部当做数组处理
intsum= 0;
for(inti= 0;i<args.length;i++){
sum+=args[i];
}
System.out.println(sum);
}