黑马程序员技术交流社区

标题: return 返回数组的形式我对不对,新手 [打印本页]

作者: NicerHuang    时间: 2016-7-4 10:31
标题: return 返回数组的形式我对不对,新手
public static int[] reverse(int[] arr) {
        for (int i = 0;i < arr.length / 2 ;i++ ) {
                                        int temp = arr[i];
                                        arr[i] = arr[arr.length - 1 - i];
                                        arr[arr.length - 1 - i] = temp;
                }
                return arr;
        }
作者: NicerHuang    时间: 2016-7-4 10:47
顶一下。。。。。。。。。。。。
作者: zhang894095    时间: 2016-7-4 14:46
数组是存在堆内存中的,在创建数组的的时候堆内存内的数组地址会赋值给栈内存中的数组名,如果说你把数组中的元素进行反转后返回arr这是没有意义的因为数组的地址值没有变知识数组的元素顺序变了,你返回的arr只是一个地址值而已比如像   [I@b377a  这样的值
作者: robintian    时间: 2016-7-4 15:47
不需要返回arr的,直接用void类型就可以了,因为你在函数中操作数组时是根据地址操作的,那么存在于堆内存中的数组成员值已经变化了,所以你不需要返回数组名称数组中的值就已经改变了。
作者: fuwei52331314    时间: 2016-7-4 20:24
这样语法是没有错的
作者: 孟小垚    时间: 2016-7-4 20:33
没有错,数组是引用数据类型在堆内存里面,改变以后不会随着方法的弹栈返回原来的数据
作者: NicerHuang    时间: 2016-7-4 20:52
robintian 发表于 2016-7-4 15:47
不需要返回arr的,直接用void类型就可以了,因为你在函数中操作数组时是根据地址操作的,那么存在于堆内存 ...

非常感谢,明白了




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