黑马程序员技术交流社区

标题: 数组问题 [打印本页]

作者: 代文娟    时间: 2013-8-17 09:52
标题: 数组问题
新来的,请大家多多帮忙!
请教大家一个问题:问什么数组类型的返回值是空类型呢?
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;
                           }
                   }
           }
        }


作者: 焦允    时间: 2013-8-17 10:25
这个应该从方法中参数传递来考虑:
基本数据类型的变量作为实参传入后,在方法中将形成改变,调用处的实参不变。所以要得到改变后参数必须在方法中进行返回,并在方法外进行接收。
而数组是引用数据类型,引用数据类型的变量作为实参传入方法后,在方法中将形参改变,调用处的实参也会改变。因为引用数据类型变量存储的是地址,传入方法后方法中的形参存储的也是同样一个地址,方法中将这个形参改变时改变都是同一个地址上的对象,所以一边改变两边都变。在方法外(方法必须已经执行过了)调用该变量就是已经改变后的变量。针对上面的程序,排序方法执行后,你再调用该数组,就是已经排序好的数组。
作者: 心灵之歌    时间: 2013-8-17 11:07
新来的,请大家多多帮忙!
请教大家一个问题:问什么数组类型的返回值是空类型呢?////因为数组本身是一个引用类型变量。操作完数组之后,以后不管谁用都是用操作完的这个数组结果。所不需要返回什么。
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;
                           }
                   }
           }
        }
作者: 心灵之歌    时间: 2013-8-17 11:08
新来的,请大家多多帮忙!
请教大家一个问题:问什么数组类型的返回值是空类型呢?////因为数组本身是一个引用类型变量。操作完数组之后,以后不管谁用都是用操作完的这个数组结果。所不需要返回什么。
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;
                           }
                   }
           }
        }
作者: meng    时间: 2013-8-21 07:50
看你的需要啦,如果你需要在调用这个方法的时候,得到一个某类型的数据,比如int型的,你就返回int的型的数据,但是,如果你在调用方法的时候不需要得到某类型的数据,只是想对某些数据进行操作,你就返回空类型就可以了,比如,你这里,只是想交换两个数的位置,就属于第二种情况,就不需要返回值了,也就是用void就OK。




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