1.堆内存和栈内存的区别
2.数组的内存图解
3.两个栈内存操作同一个堆内存,无论是哪个站内存的操作都会改变堆内存的数据
4.数组的基本操作
/*
* 数组
* */
public class ShuzuDemo1 {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55} ;
printArr(arr) ;
System.out.println(getMax(arr));
reverse(arr) ;
printArr(arr) ;
System.out.println(getIndex(arr,11)); ;
}
// 打印数组
public static void printArr(int[] arr){
for(int x = 0 ; x<arr.length ; x++){
System.out.print(arr[x]+"\t");
}
}
// 求数组中的最大值
public static int getMax(int[] arr){
int max = arr[0] ;
for (int x = 1 ;x<arr.length;x++){
if(max < arr[x]){
max = arr[x] ;
}
}
return max ;
}
// 数组反转
public static void reverse(int[] arr){
/*
// 第一组数据交换
int tmp = arr[0] ;
arr[0] = arr[arr.length-1] ;
arr[arr.length-1] = tmp ;
// 第二组数据交换
int tmp1 = arr[1] ;
arr[1] = arr[arr.length-1-1] ;
arr[arr.length-1-1] = tmp1 ;
*/
for(int x =0 ;x<arr.length/2;x++){ // 注意:在数组反转的时候数组长度需要除以2
int tmpx = arr[x] ;
arr[x] = arr[arr.length-1-x] ;
arr[arr.length-1-x] = tmpx ;
}
}
// 返回某个数据第一次出现的索引值
public static int getIndex(int[] arr , int value){
int index = -1 ; // 为了确保for循环和if判断不出错,即一定会有个返回值,所以提前定义一个index
for(int x = 0 ; x<arr.length;x++){
if(value == arr[x]){
index = x ;
break ;
}
}
return index ;
}
}
5.列固定二维数据内存图解
列变化二维数组
静态二维数据内存图解
6.二维数组遍历
/*
* 二维数组:
* 格式1:数据类型[][] 数组名 = new 数据类型[m][n]
* int[][] arr = new int[3][2]
* m表示有几个一维数组 n表示每个一维数组中有几个元素
*
* 格式2:数据类型[][] 数组名 = new 数据类型[m][]
* int[][] arr = new int[2][]
* arr[0] = new int[2] ;
* arr[1] = new int[4] ;
* m表示一维数组的个数,每个一维数组中的个数是不确定的,可以自己定义
*
* 格式3:数据类型[][] 数组名 = {{元素1,元素2,元素3},{元素1,元素2}}
* int[][] arr = {{1,2,3},{4,5}}
* */
public class ShuzuDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] arr = {{1,2,3},{4,5},{6}} ;
printArr(arr) ;
}
// 二维数组遍历
public static void printArr(int[][] arr){
for(int x = 0 ; x<arr.length;x++){
for(int y = 0 ;y<arr[x].length;y++){
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}
}