返回信息流public static void swap(int[] data, int i, int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
单独交换不可以,因为是局部变量;
数组中可以的原理是?
这是一条镜像帖。来源:北邮人论坛 / java / #51210同步于 2016/6/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
数组交换元素
henbhan
2016/6/24镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
跟在哪个内存中有关么
【 在 FromMars 的大作中提到: 】
: 数组不是基本数据类型
: 数组在java是引用传递吧,
: 如果是c++,那就是指针
数组是对象,基本类型(整数、浮点数、字符、布尔)不是
Java里,传参数的时候,所有的参数都是按值传递。改变形式参数不会改变实际参数。只是,对象传的是它的引用(引用也是值),而基本类型传的就是值本身。通过引用可以改变对象本身。虽然实际参数仍然指向原来的对象,但对象的内容变了。
感谢暖神
【 在 nuanyangyang 的大作中提到: 】
: 数组是对象,基本类型(整数、浮点数、字符、布尔)不是
: Java里,传参数的时候,所有的参数都是按值传递。改变形式参数不会改变实际参数。只是,对象传的是它的引用(引用也是值),而基本类型传的就是值本身。通过引用可以改变对象本身。虽然实际参数仍然指向原来的对象,但对象的内容变了。
暖神,可以理解为变量指向的内存地址变了
【 在 nuanyangyang 的大作中提到: 】
: 数组是对象,基本类型(整数、浮点数、字符、布尔)不是
: Java里,传参数的时候,所有的参数都是按值传递。改变形式参数不会改变实际参数。只是,对象传的是它的引用(引用也是值),而基本类型传的就是值本身。通过引用可以改变对象本身。虽然实际参数仍然指向原来的对象,但对象的内容变了。
地址没变,内容变了。
(p.s. 其实垃圾回收器可以把对象在内存里移来移去,但用户不会知道的。用户只知道一个引用总是指向一个对象)
【 在 nihaoa 的大作中提到: 】
: 暖神,可以理解为变量指向的内存地址变了
数组是作为引用被当做参数传到方法里的,相当于这里你方法里拥有的是数组的地址,而不是数组中具体元素的值,所以你在方法里更改了这个地址中的元素,那么当然这个地址里的东西确实被更改了,可以理解为遥控器和电视台的关系,这里方法里你拥有了别人给你的遥控器,你就可以随意的切换电视台了。
【 在 henbhan 的大作中提到: 】
: public static void swap(int[] data, int i, int j) {
: int temp = data[i];
: data[i] = data[j];
: ...................