黑马程序员技术交流社区

标题: 引用类型形式参数跟基本类型形式参数的区别 [打印本页]

作者: 黑马小成    时间: 2015-4-12 19:44
标题: 引用类型形式参数跟基本类型形式参数的区别
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变影响实际参数的改变。
求视频以为的例子来证实这个观点
作者: 牵猪散步    时间: 2015-4-12 19:46
第一个我可以理解!第二个嘛!我也不是很懂!希望有大神能够解决啊
作者: 黑马小成    时间: 2015-4-12 19:49
牵猪散步 发表于 2015-4-12 19:46
第一个我可以理解!第二个嘛!我也不是很懂!希望有大神能够解决啊

第二个传递的是地址值,所以就可改变实际参数,,求例子
作者: 牵猪散步    时间: 2015-4-12 19:52
黑马小成 发表于 2015-4-12 19:49
第二个传递的是地址值,所以就可改变实际参数,,求例子

这样的啊!那是地址值发生变化了吧
作者: 黑马小成    时间: 2015-4-12 20:49
牵猪散步 发表于 2015-4-12 19:52
这样的啊!那是地址值发生变化了吧

是地址值里面的东西可以改变,不是地址改变

作者: 君嘘    时间: 2015-4-12 21:49
  1. import java.util.*;
  2. class Test
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int[] arr={4,3,2,1};
  7.                 System.out.println(Arrays.toString(arr)); //4,3,2,1
  8.                 sort(arr);
  9.                 System.out.println(Arrays.toString(arr));//1,2,3,4
  10.         }
  11.         public static void sort(int arr[])
  12.         {       
  13.                 Arrays.sort(arr);
  14.         }
  15. }
复制代码

作者: 黑马小成    时间: 2015-4-12 22:01
君嘘 发表于 2015-4-12 21:49

赞一个!谢谢哈,懂了
作者: 君嘘    时间: 2015-4-12 22:03
黑马小成 发表于 2015-4-12 22:01
赞一个!谢谢哈,懂了

不用谢:victory:
作者: showdy    时间: 2015-4-12 22:14
刘意视频中有,还画了内存图讲解
作者: 大兵在海边    时间: 2015-4-12 22:53
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int a = 10;
  6.                 System.out.println("调用方法前:a = " + a);
  7.                 fun1(a);//将a的值10复制一份到方法体内;
  8.                 System.out.println("调用方法后:a = " + a);//10

  9.                 int[] arr = {2,3,4};
  10.                 System.out.println("调用方法前:arr[0] = " + arr[0]);//2
  11.                 fun2(arr);//将arr的地址复制一份到方法内部
  12.                 System.out.println("调用方法后:arr[0] = " + arr[0]);//1000

  13.         }

  14.         //一个方法,接收基本数据类型
  15.         public static void fun1(int num){
  16.                 num = 100;
  17.         }

  18.         //一个方法,接收引用数据类型
  19.         public static void fun2(int[] arr){
  20.                 arr[0] = 1000;
  21.         }
  22. }
复制代码

作者: 大兵在海边    时间: 2015-4-12 22:54
引用类型的传递,传递是地址,这个时候就是栈中两个变量指向同一个地址,操作任何一个都会改变堆中的值。
作者: 小栀子    时间: 2015-4-12 23:29
引用类型的两个变量都指向同一个地址,所以改变变量a即改变地址中的内容,所以变量b也改变
作者: 牵猪散步    时间: 2015-4-13 21:45
恩恩!懂了!谢谢啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2