数组作为形参传递,经过排序后,为什么原有的数据没有被影响?

Jeffwua 2015-12-01 03:47:04
数组作为形参传递,经过排序后,为什么原有的数组没有被影响?
不是说引用类型作为形参传递直接改变原有的数据的吗?
排序后的数组又是存在一个什么位置?
...全文
434 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
把代码贴上来看看便知道。。。。
Jeffwua 2015-12-04
  • 打赏
  • 举报
回复
引用 6楼nomasp 的回复:
[quote=引用 5 楼 crazy_wujianfeng 的回复:] [quote=引用 4楼93吸血鬼 的回复:][quote=引用 3 楼 crazy_wujianfeng 的回复:] [quote=引用 1楼xiaojunjor 的回复:]经过排序之后应该是改变的,是不是代码有的地方编错了? 排序之前数组在堆中,传入形参时把在堆中的这个地址值传给参数,所以方法内对数组的改变就是改变了改数组,改变之后的数组还是在堆中原来的内存空间内。
我意思是原数组为什么没有被排序?[/quote] 他说的就是会被排序,根本就没有新数组和原数组,就是一个数组。 所以如果代码正确,肯定会被排序[/quote]嗯,我懂了,其实是被改变了。[/quote] 这么多人帮你 现在你应该印象深刻了……[/quote]相当的深,可是还有太多问题
nomasp 2015-12-02
  • 打赏
  • 举报
回复
引用 5 楼 crazy_wujianfeng 的回复:
[quote=引用 4楼93吸血鬼 的回复:][quote=引用 3 楼 crazy_wujianfeng 的回复:] [quote=引用 1楼xiaojunjor 的回复:]经过排序之后应该是改变的,是不是代码有的地方编错了? 排序之前数组在堆中,传入形参时把在堆中的这个地址值传给参数,所以方法内对数组的改变就是改变了改数组,改变之后的数组还是在堆中原来的内存空间内。
我意思是原数组为什么没有被排序?[/quote] 他说的就是会被排序,根本就没有新数组和原数组,就是一个数组。 所以如果代码正确,肯定会被排序[/quote]嗯,我懂了,其实是被改变了。[/quote] 这么多人帮你 现在你应该印象深刻了……
alan19931103 2015-12-01
  • 打赏
  • 举报
回复
引用 3 楼 crazy_wujianfeng 的回复:
[quote=引用 1楼xiaojunjor 的回复:]经过排序之后应该是改变的,是不是代码有的地方编错了? 排序之前数组在堆中,传入形参时把在堆中的这个地址值传给参数,所以方法内对数组的改变就是改变了改数组,改变之后的数组还是在堆中原来的内存空间内。
我意思是原数组为什么没有被排序?[/quote] 他说的就是会被排序,根本就没有新数组和原数组,就是一个数组。 所以如果代码正确,肯定会被排序
Jeffwua 2015-12-01
  • 打赏
  • 举报
回复
引用 1楼xiaojunjor 的回复:
经过排序之后应该是改变的,是不是代码有的地方编错了? 排序之前数组在堆中,传入形参时把在堆中的这个地址值传给参数,所以方法内对数组的改变就是改变了改数组,改变之后的数组还是在堆中原来的内存空间内。
我意思是原数组为什么没有被排序?
rickylin86 2015-12-01
  • 打赏
  • 举报
回复
这得看你在方法中的具体实现. 比如以下,strc是通过clone()出来的数组,实际上已经和原来的数组地址不一样了。所以如果方法体中操作的是类似strc的数组的话那么对原数组没影响.

public class Test{
	public static void main(String[] args){
		String[] strs = {"a","b","c"};
		String[] strc = strs.clone();
		strc[2] = "d";
		System.out.println(strs[2]);
	}
}
xiaojunjor 2015-12-01
  • 打赏
  • 举报
回复
经过排序之后应该是改变的,是不是代码有的地方编错了? 排序之前数组在堆中,传入形参时把在堆中的这个地址值传给参数,所以方法内对数组的改变就是改变了改数组,改变之后的数组还是在堆中原来的内存空间内。
Jeffwua 2015-12-01
  • 打赏
  • 举报
回复
引用 4楼93吸血鬼 的回复:
[quote=引用 3 楼 crazy_wujianfeng 的回复:] [quote=引用 1楼xiaojunjor 的回复:]经过排序之后应该是改变的,是不是代码有的地方编错了? 排序之前数组在堆中,传入形参时把在堆中的这个地址值传给参数,所以方法内对数组的改变就是改变了改数组,改变之后的数组还是在堆中原来的内存空间内。
我意思是原数组为什么没有被排序?[/quote] 他说的就是会被排序,根本就没有新数组和原数组,就是一个数组。 所以如果代码正确,肯定会被排序[/quote]嗯,我懂了,其实是被改变了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧