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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 代文娟 中级黑马   /  2013-8-17 09:52  /  1304 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

新来的,请大家多多帮忙!
请教大家一个问题:问什么数组类型的返回值是空类型呢?
public static void getMax(int[]a)
        {
           for (int i=0;i<a.length-1 ;i++ )
           {
                   for (int j=i+1;j<a.length ;j++ )
                   {
                           int temp;
                           if(a[i]>a[j])
                           {
                               temp=a[i];
                                   a[i]=a[j];
                                   a[j]=temp;
                           }
                   }
           }
        }

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

4 个回复

倒序浏览
这个应该从方法中参数传递来考虑:
基本数据类型的变量作为实参传入后,在方法中将形成改变,调用处的实参不变。所以要得到改变后参数必须在方法中进行返回,并在方法外进行接收。
而数组是引用数据类型,引用数据类型的变量作为实参传入方法后,在方法中将形参改变,调用处的实参也会改变。因为引用数据类型变量存储的是地址,传入方法后方法中的形参存储的也是同样一个地址,方法中将这个形参改变时改变都是同一个地址上的对象,所以一边改变两边都变。在方法外(方法必须已经执行过了)调用该变量就是已经改变后的变量。针对上面的程序,排序方法执行后,你再调用该数组,就是已经排序好的数组。

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
新来的,请大家多多帮忙!
请教大家一个问题:问什么数组类型的返回值是空类型呢?////因为数组本身是一个引用类型变量。操作完数组之后,以后不管谁用都是用操作完的这个数组结果。所不需要返回什么。
public static void getMax(int[]a)
        {
           for (int i=0;i<a.length-1 ;i++ )
           {
                   for (int j=i+1;j<a.length ;j++ )
                   {
                           int temp;
                           if(a[i]>a[j])
                           {
                               temp=a[i];
                                   a[i]=a[j];
                                   a[j]=temp;
                           }
                   }
           }
        }
回复 使用道具 举报
新来的,请大家多多帮忙!
请教大家一个问题:问什么数组类型的返回值是空类型呢?////因为数组本身是一个引用类型变量。操作完数组之后,以后不管谁用都是用操作完的这个数组结果。所不需要返回什么。
public static void getMax(int[]a)
        {
           for (int i=0;i<a.length-1 ;i++ )
           {
                   for (int j=i+1;j<a.length ;j++ )
                   {
                           int temp;
                           if(a[i]>a[j])
                           {
                               temp=a[i];
                                   a[i]=a[j];
                                   a[j]=temp;
                           }
                   }
           }
        }
回复 使用道具 举报
看你的需要啦,如果你需要在调用这个方法的时候,得到一个某类型的数据,比如int型的,你就返回int的型的数据,但是,如果你在调用方法的时候不需要得到某类型的数据,只是想对某些数据进行操作,你就返回空类型就可以了,比如,你这里,只是想交换两个数的位置,就属于第二种情况,就不需要返回值了,也就是用void就OK。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马