数组

 

 数组属于引用数据类型(在堆中占用一块空间,传递的是一个引用,不是值),空间连续,会有什么问题?

int[] arr = new int[3](引用数据都需要new,去内存的堆中声明一块连续空间)

arr[0] = 1;arr[1]=2; (数组越界,ArrayIndexOutOfBoundException)

int[] arr1 ; 数组的声明

int[] arr2 = new int[]{1,2,3,4}

数组遍历

for(int i=0;i<arr.length;i++){
soutv(arr[i]
}

for(int num:arr){
soutv(num)
}
 1 int[][] arr1;
 2 int[][] arr2 = new int[3][3];
 3 arr2[0][0] = 1;
 4 arr2[0][1] = 2;
 5 int[][] arr3 = {{1,2,3},{4,5,6},{7,8,9}}
 6 还是定义三个空间,只不过每个空间里面还是数组。
 7 for(int i=0;i<arr.length;i++){
 8     for(int j=0;j<arr[i].length;j++){
 9         soutv[i][j]
10     }
11 }
多为数组

 运行时数据区

 

方法在栈中执行,赋值是在堆中

 

成员变量:类的属性。作用域是类,类中的方法或者其他属性都可以使用。存放在堆中。

局部变量:只能作用于方法内。存放在栈中。

 

形参:值传递(基本数据类型)

   引用传递(引用数据类型)

同样的方法,不同的入参。此时栈是否相同。相同。

 

public class Test {

    public static void updateNum(int num){
        num = 20;
    }
    public static void updateNum(int[] num){
        num[0]=100;
        num[1] = 200;
    }

    public static void main(String[] args) {
        int num = 10;
        updateNum(num);
        System.out.println("num = " + num);//num = 10

        int[] nums = new int[]{1,2};
        updateNum(nums);
        for (int s : nums) {
            System.out.println("s = " + s);//s = 100//s = 200
        }
    }
}
View Code

 

posted @ 2020-03-17 00:05  鸿飞冥冥  阅读(78)  评论(0编辑  收藏  举报