java值传递问题
java中基本类型作参数传递时是值传递的,对象引用传递时也是值传递(拷贝引用的地址值)。可是有这么个问题不明白
上代码
再看这个
这个排序算法,同样是值传递吧,数组c拷贝了a的值,经过排序,数组c被排序了,可是同时数组a也被排序了。
想不通这是为什么 ,请大家指教指教
上代码
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中函数是值传递还是引用传递问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下
Java线程池值传递[代码]
本文探讨了Java中ThreadLocal在线程池环境下的值传递问题,介绍了InheritableThreadLocal的基本用法及其在线程池复用场景中的局限性。文章详细分析了InheritableThreadLocal无法自动处理线程池线程复用导致的值污染问题,并通过代码示例展示了具体问题场景。最后,介绍了阿里巴巴开源的TransmittableThreadLocal(TTL)解决方案,该方案通过包装Runnable和Callable实现了线程池环境下值的正确传递和自动清理,有效解决了线程池复用导致的值污染问题。
220.218.JAVA基础教程_面向对象(上)-复习:值传递与递归方法(220).rar
220.218.JAVA基础教程_面向对象(上)-复习:值传递与递归方法(220).rar
浅谈Java中真的只有值传递么
主要介绍了浅谈Java中真的只有值传递么?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一文秒懂java到底是值传递还是引用传递
主要介绍了java到底是值传递还是引用传递的相关知识,本文通过几个例子给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


Java SE
