1.概念
数组是用来存储固定数量的同类型元素的一种数据结构,它是引用类型。数组有顺序,下表从0开始
2.创建数组
int[] a1 = new int[5];// 定义数组长度
int[] a2 = { 1, 2, 3 };// 定义元素
int[] a3 = { 1, 2, 3, };// jdk1.8适用
3.求数组长度
System.out.println(a3.length);
数组获取长度length变量
字符串获取长度length()方法
集合获取长度size()
4.访问数组元素
System.out.println(a2[1]);
5.遍历数组
(1).for循环遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
(2).foreach循环遍历数组
for (int i : arr) {
System.out.println(i);
}
6.Arrays工具类-java.util.Arrays
// 7-1打印数组
System.out.println(Arrays.toString(a2));
// 7-2数组赋值
Arrays.fill(a1, 1);
System.out.println(Arrays.toString(a1));
fill(arr,startIndex,endIndex,val)
//从startIndex开始,到endIndex结束,但不包括endIndex
Arrays.fill(a1, 1, 3, 2);
//System.out.println(Arrays.toString(a1));
// 7-3自然排序
int[] a5 = { 3, 4, 8, 9, 2 };
Arrays.sort(a5);
System.out.println(Arrays.toString(a5));
// 7-4二分查找 返回被查找的数在数组中的下标--前提先对数组进行自然排序
int res = Arrays.binarySearch(a5, 8);
System.out.println(res);
//7-5数组扩容
int[] a7=Arrays.copyOf(a2,5);//int型数据
System.out.println(a7.length);
System.out.println(Arrays.toString(a7));
String[] a6={"d","a","b","e","f"};//String型数据
String[] a8=Arrays.copyOf(a6, 10);
System.out.println(Arrays.toString(a8));
7.多维数组
//创建二位数组
int[][] b1 = new int[2][2];
int[][] b2 = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
//遍历二维数组
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j] + ",");
}
System.out.println();
}
8.排序法
(1).冒泡排序
/*
* 冒泡排序法
* 在要排序的一组数中,对当前还未排好序的范围内的全部数,自前而后对相邻的两个数
* 依次进行比较和交换位置,让较大的数往后,较小的数往前(冒泡)。
* 即,每当两个相邻的数比较后发现他们的排序与排序要求相反时,将他们交换位置
*/
public static void mpSort(int[] a){
int i,j;
for(i=0;i<a.length-1;i++){
for(j=0;j<a.length-i-1;j++)
{
if(a[j]>a[j+1])
{
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
(2).选择排序
/*
* 选择排序法
* 在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
* 然后在剩下的数当中再找最小的数,与第二个位置的数交换;
* 如此循环到倒数第二个数和最后一个数比较为止。
*/
public static void selectSort(int[] a){
for (int i = 0; i < a.length-1; i++) {
int k=i;//k记录更小值得下标,初始值就是每次循环的第一个值得下标
for (int j = i+1; j < a.length; j++) {
if(a[k]>a[j])
k=j;
}
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
(3).插入排序
/*
* 插入排序的工作方式:像抓扑克牌
* 开始时,我们的左手为空并且桌子上的牌面向下;
* 然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置(大牌在后,小牌在前);
* 为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。
*/
public static void insertSort(int[] a){
for (int i = 0; i < a.length-1; i++) {
for (int j = i+1; j >0; j--) {
if(a[j]<a[j-1]){
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}