java数组
1、数组的声明
语法结构:int[] array1;//推荐
int array2[];
注意:单独声明数组的时候不能指定数组长度
2、数组的初始化
分类:静态初始化,动态初始化
a.静态初始化:只能在声明的时候初始化。
int[] array1 = {1,2,3,4};
int[] array2 = new int[]{1,2,3,4};
//中括号中不能写元素个数
P.S.以上两种初始化方法等价
b.动态初始化:中括号中必须写明元素个数
int[] array1 = new int[3];
等价于 int[] array1;
array = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
注意:数组一旦初始化,长度不可变。
下标从0开始,下标不能超过length-1。
静态数组未被初始化,就不能使用。
动态声明的数组,有默认值;
获取数组的长度:数组名.length(length是属性,不是方法)
3、数组的操作
a.循环遍历
b.获取最值
c.逆序
d.排序
快速排序:
import java.util.Arrays;
public class QuickSort {
//快速排序
public static void main(String[] args) {
int[] array1 = {3,5,2,1,6,4};
Arrays.sort(array1);//该方法采用的就是快速排序算法
for(int i:array1){
System.out.println(i);
}
}
}
冒泡排序(重点):
//冒泡排序
public class BubbleSort {
public static void main(String[] args) {
boolean flag = true;
int[] array1 = new int[]{2,1,6,4,5};
for(int i=0;i<array1.length-1;++i){
for(int j=0;j<array1.length-1-i;++j){
if(array1[j]>array1[j+1]){
int temp = array1[j];
array1[j] = array1[j+1];
array1[j+1] = temp;
}
}
}
for(int i:array1){
System.out.println(i);
}
}
}
选择排序:
public class SelectSort {
public static void main(String[] args) {
int[] array=new int[]{2,3,7,4,5,1};
for(int i=0;i<array.length;++i){
//找到最小的元素,给i;
int min = i;//最小值的下标
for(int j=i;j<array.length;++j){
if(array[min]>array[j]){
min = j;
}
}
if(min!=i){
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
}
}
e.复制:
①Arrays.copyOf(数组名,复制长度) -->如果复制长度大于要复制数组的长度,那就用0填充
②Arrays.copyOfRange(数组名,起始位置(包括),终止位置(不包括))
f.替换:
fill(数组名,所赋值);//数组所有元素都赋值为所赋值
fill(数组名,,起始位置,终止位置(不包括),所赋值)
4、二维数组
a.初始化
静态:
int[] arr[]={{1,2},{2},{5,6,7}};//每个小数组长度不一定相等
int[][] arr[]=new int[][]{{1,2},{2},{5,6,7}};
动态:
int[][] arr3;arr3 = new int[5][];//第二个[]可以不写明,写了说明每个小数组长度一样
arr3[0]=new int[]{1,2,3,4};
arr3[1]=new int[]{1,2,3};
arr3[2]=new int[2];array[2][0]=1;array[2][1]=2;
b.循环遍历