数组:
格式:类型[] 数组名 = new 类型[长度];
类型[] 数组名 = new 类型[]{具体的数据1,具体的数据2.........};
数组的操作其实就是对角标的操作
角标从0开始
数组的长度是固定的
数组的元素类型必须一致
定义一个指明具体数据的数组
int[] arr = new int[]{4,5,6,7};
int[] arr2 = {1,2,3,4};
定义一个没有具体数据的数组
int[] arr1 = new int[3];
数组的元素在没有初始值的时候默认为0
获取数组的长度试用 length属性
通过for循环去遍历数组里面的全部元素
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
二维数组:
格式:int[][] arr = new int[100][3];
第一个参数代表:这个二维数组里面有几个一维数组
第二参数代表:每个一维数组里面的有多少个元素
定义没有具体数据据的二维数组
int[][] arr2 = new int[3][3];
定义明确具体数据的二维数组
int[][] arr3 = new int[][]{{1,2,4,6},{2,4,7,0}};
对一维数组进行排序:(最常用的两种排序法,冒泡排序法和选择排序法)
冒泡排序:
核心思想:两两对比
例如:对象数组的元素从小到大进行排序输出
int[] arr= new int[]{2,64,56,-7,-45,999};
for (int i = 0; i < arr.length-1; i++) {//对比的轮数
for (int j = 0; j < arr.length-1-i; j++) {//每一轮对比的次数
//确定那两个元素进行对比 arr[j] arr[j+1]
if(arr[j] > arr[j+1]){//什么情况进行换位
int temp =arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
选择排序:
核心思想:一一对比
例如:将数组的元素进行从大到小进行排序输出
int[] arr= new int[]{2,64,56,-7,-45,999};
for (int i = 0; i < arr.length-1; i++) {//对比的轮数
for (int j = i +1; j < arr.length; j++) {//每一轮对比的次数
//那两个数进行对比 arr[i] arr[j]
if(arr[i] < arr[j]){//什么情况换位
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
另外:附上查找一维数组中的最大值(最小值类似)
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if(max < arr[i]){
int temp = max;
max = arr[i];
arr[i] = max;
}
}
注:数组出现的基本错误:java.lang.ArrayIndexOutOfBoundsException 下标越界
栈:int[] arr引用变量 堆:new int[]{58,2,43,6,9}; 所有需要new的东西存放在堆里面,类似于成员变量,存放于堆中,需要用时则需要new一个对象之后才能在方法里用。