java值传递问题

zfq642773391 zfq642773391 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
java中基本类型作参数传递时是值传递的,对象引用传递时也是值传递(拷贝引用的地址值)。可是有这么个问题不明白
上代码

public static void main(String args[]){
int a=1;
int b=2;
ValueSort vs=new ValueSort();
vs.swap(a, b);
System.out.println(a+" "+b);
}

public void swap(int m,int n){


int temp = m;

m = n;

n = temp;

}
由于是值传递,m、n是a、b的拷贝,在执行swap()时,只是形参m、n的值发生了变化,可是a和b的值并没有变
再看这个

public static void main(String[] args) {
// TODO Auto-generated method stub

int[] a={9,4,5,6,7,8,1};
InsertSort insort=new InsertSort();
insort.insertSort(a);
insort.print(a);
}

private void print(int[] a) {
// TODO Auto-generated method stub
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}

}

private void insertSort(int[] c) {
for(int p=1;p<c.length ;p++){
int tmp=c[p];
int j=p;
for( ;j>0 && (tmp<c[j-1]);j--){
c[j]=c[j-1];

}
c[j]=tmp;
}
}

这个排序算法,同样是值传递吧,数组c拷贝了a的值,经过排序,数组c被排序了,可是同时数组a也被排序了。
想不通这是为什么 ,请大家指教指教
...全文

相关推荐

探讨Java中函数是值传递还是引用传递问题

主要介绍了探讨Java中函数是值传递还是引用传递问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下

weixin_38564990

Java线程池值传递[代码]

本文探讨了Java中ThreadLocal在线程池环境下的值传递问题,介绍了InheritableThreadLocal的基本用法及其在线程池复用场景中的局限性。文章详细分析了InheritableThreadLocal无法自动处理线程池线程复用导致的值污染问题,并通过代码示例展示了具体问题场景。最后,介绍了阿里巴巴开源的TransmittableThreadLocal(TTL)解决方案,该方案通过包装Runnable和Callable实现了线程池环境下值的正确传递和自动清理,有效解决了线程池复用导致的值污染问题。

water

220.218.JAVA基础教程_面向对象(上)-复习:值传递与递归方法(220).rar

220.218.JAVA基础教程_面向对象(上)-复习:值传递与递归方法(220).rar

腾讯云_分享

浅谈Java中真的只有值传递么

主要介绍了浅谈Java中真的只有值传递么?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38575536

一文秒懂java到底是值传递还是引用传递

主要介绍了java到底是值传递还是引用传递的相关知识,本文通过几个例子给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

weixin_38687199
评论 33
收藏 已收藏
分享
返回顶部
zfq642773391
Java SE 62,621 成员 307,251 内容