1:Java中的参数传递问题。(理解内存图)
基本类型:形式参数的改变对实际参数没有影响。
引用类型:形式参数的改变直接影响实际参数。
理解:归根结底 是因为 基本类型是存在于栈内存中, 某个方法即使是改变了自己的栈内存的这个基本类型
那么等他调用结束了之后 方法本身就会消失 那么不影响原来的main方法中的值
而引用类型就不一样了 因为引用类型是存在于堆内存中 我们是通过栈内存里面变量所存储的引用类型的
地址值来改变引用类型的,在某个方法内通过地址值改变了堆内存中的引用类型的话 即使是这个方法消失了
堆内存中的引用类型已经改变了 所以说形式参数的改变会影响实际参数
- public static void main(String[] args)
- {
- int a = 10;
- int b = 20;
- System.out.println("a:"+a+",b:"+b);//a:10,b:20
- change(a,b);
- System.out.println("a:"+a+",b:"+b);//a:10,b:20
- int[] arr = {1,2,3,4,5};
- change(arr);
- //{1,4,3,8,5}
- System.out.println(arr[1]);//4
- }
- public static void change(int a,int b)
- {
- System.out.println("a:"+a+",b:"+b);//a:10,b:20
- a = b; //a=20
- b = a + b; //b=40
- System.out.println("a:"+a+",b:"+b);//a:20,b:40
- //return;
- }
- public static void change(int[] arr) //{1,2,3,4,5} -- {1,4,3,8,5}
- {
- for(int x=0; x<arr.length; x++)
- {
- //如何元素的值是偶数,那么,就把值变为以前的2倍。
- if(arr[x]%2==0)
- {
- arr[x]*=2;
- }
- }
- }
复制代码 |
|