A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

  8.                                 int[] arr = {1,2,3,4,5};
  9.                                 change(arr);
  10.                                 //{1,4,3,8,5}
  11.                                 System.out.println(arr[1]);//4
  12.                         }

  13.                         public static void change(int a,int b)
  14.                         {
  15.                                 System.out.println("a:"+a+",b:"+b);//a:10,b:20
  16.                                 a = b; //a=20
  17.                                 b = a + b; //b=40
  18.                                 System.out.println("a:"+a+",b:"+b);//a:20,b:40
  19.                                 //return;
  20.                         }

  21.                         public static void change(int[] arr) //{1,2,3,4,5}        --        {1,4,3,8,5}
  22.                         {
  23.                                 for(int x=0; x<arr.length; x++)
  24.                                 {
  25.                                         //如何元素的值是偶数,那么,就把值变为以前的2倍。
  26.                                         if(arr[x]%2==0)
  27.                                         {
  28.                                                 arr[x]*=2;
  29.                                         }
  30.                                 }
  31.                         }
复制代码

12 个回复

正序浏览
这个有点难
回复 使用道具 举报
也学习了
回复 使用道具 举报
这个不是很难,值传递和只传递,高司令说了都是值传递
String的话虽然是引用数据类型,但是作为参数列表传递的时候,是和基本数据类型一样的
回复 使用道具 举报
秦时明月汉时关 来自手机 中级黑马 2015-10-6 09:39:06
10#
还行吧!简单
回复 使用道具 举报
JAVA只有值传递,引用类型拷贝了一个地址,表现上像一个引用传递而已,本质是值传递,记住这个够了
回复 使用道具 举报
感谢分享!
回复 使用道具 举报
不错 学习了
回复 使用道具 举报
专业暖贴!哈哈
回复 使用道具 举报
一看代码就知道是在前期学习,用的是EditPuls写代码!!
回复 使用道具 举报
还要除去 String 这个类型的特例呀  String是引用数据类型,但在当做参数传值的时候,当基本类型使用..
回复 使用道具 举报
我也;来暖一个
回复 使用道具 举报
我只是来暧个贴
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马