方法的参数传递机制

import java.util.Arrays;

public class Test01 {
    public static void main(String[] args) {
        int i = 1;
        String str = "hello";
        Integer num = 200;
        int[] arr = {1, 2, 3, 4, 5};
        MyData my = new MyData();
        change(i, str, num, arr, my);
        System.out.println("i =" + i);
        System.out.println("str =" + str);
        System.out.println("num =" + num);
        System.out.println("arr =" + Arrays.toString(arr));
        System.out.println("my.a =" + my.a);
    }

    public static void change(int j, String s, Integer n, int[] a, MyData m) {
        j += 1;
        s += "world";
        n += 1;
        a[0] += 1;
        m.a += 1;
    }
}

class MyData {
    int a = 10;
}
i =1
str =hello
num =200
arr =[2, 2, 3, 4, 5]
my.a =11

  

 

 

 

 

 

 

需要注意的细节:

1、实参给形参赋值: 如果是基本数据类型:传递的是数据值 

              如果是引用数据类型 :传递的是地址值

 

2、String类型的数据是存储在常量池中的,其拥有不可变性。当我们对字符串进行相应的拼接操作时,其底层会去new StringBuilder(),然后执行append()方法。最终会在常量池中创建一个新的字符串,然后将其地址值赋值给对应的String类型的变量。

3、Integer类型 默认-128~127存储在方法区,超过范围的数据存储在堆中(每创建一次就会开辟一块内存空间)。

  对超过127的数据+1  会重新在堆中创建新的对象  (不太懂)

 

posted @ 2021-12-02 10:34  11111ghm  阅读(41)  评论(0)    收藏  举报