方法的参数传递机制
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 会重新在堆中创建新的对象 (不太懂)

浙公网安备 33010602011771号