| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 713 人关注过本帖
标题:请教java函数传参问题
只看楼主 加入收藏
xueqilsj
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-7-15
收藏
 问题点数:0 回复次数:1 
请教java函数传参问题


问题是下面代码中各Swap函数的参数是传值还是传引用?
如果是传值:为什么在Swap4中修改传入参数会改变外部被传参数的值?
如果是传引用:为什么在Swap3中引已经被调换了,外部参数的引用还未变?

//: PassHandles.java
// Passing handles around
package c12;

public class PassHandles {

public static void main(String[] args) {
Complex c1=new Complex(1,1);
Complex c2=new Complex(2,2);
System.out.println("Before Swap"+c1.toString()+c2.toString());
Change.Swap1(c1,c2);
System.out.println("Swap1->"+c1.toString()+c2.toString());
Change ch=new Change();
ch.Swap2(c1,c2);
System.out.println("Swap2->"+c1.toString()+c2.toString());
ch.Swap3(c1,c2);
System.out.println("Swap3->"+c1.toString()+c2.toString());
ch.Swap4(c1,c2);
System.out.println("Swap4->"+c1.toString()+c2.toString());

}
} ///:~
class Change{
public static void Swap1(Object obj1,Object obj2){
Object obj=obj1;
obj1=obj2;
obj2=obj;
}
public void Swap2(Object obj1,Object obj2){
Object obj=obj1;
obj1=obj2;
obj2=obj;
}
public void Swap3(Complex c1,Complex c2){

Complex c=null;
c=c1;
c1=c2;
c2=c;
System.out.println("Inside Swap3->"+c1.toString()+c2.toString());
}
public void Swap4(Object obj1,Object obj2){
Complex c1=(Complex)obj1;
Complex c2=(Complex)obj2;
double tx=c1.real;
double ty=c1.imag;
c1.real=c2.real;
c1.imag=c2.imag;
c2.real=tx;
c2.imag=ty;
}
}
class Complex{
double real;
double imag;
public Complex(double _x,double _y){
real=_x;
imag=_y;
}
public String toString(){
return new String("("+real+"+"+imag+"i)");
}
public double Norm(){
return real*real-imag*imag;
}
public double Angle(){
return Math.acos(real/(this.Norm()));
}
}

搜索更多相关主题的帖子: java 函数 Complex 参数 public 
2006-07-15 16:43
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

在JAVA中简单数据数据类型是直接拷贝值的
其它的一概是传引用,但是有一点要注意,你可以改变引用所指向的对象里面的值,但是你在方法体里不能让这个引用指向另一个新的对象


可惜不是你,陪我到最后
2006-07-15 17:02
快速回复:请教java函数传参问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049783 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved