java如何改变实参 10

在c里的swap(int&a,int&b){intc=a;a=b;b=a;}可以改实参值在java怎么实现类似功能?写错了b=c才对... 在c里的
swap(int &a,int &b){
int c=a;
a=b;
b=a;
}
可以改实参值
在java怎么实现类似功能?
写错了b=c才对
展开
 我来答
百度网友997ab03
2008-08-29 · TA获得超过629个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:328万
展开全部
1.这样的方法在Java里永远也实现不了
2.对于基本类型按值传递,对象类型按引用传递
3.Java引用的传递与C++指针不同,指针即地址,而引用是存储指针的变量
这么说你可能还会糊涂,举个例子:
//比如有两个对象:
Integer a=new Integer(1);
Integer b=new Integer(2);
//还有一个方法,类似你上面写的,不同的是这里传递的是对象引用
public void swap(Integer a,Integer b){
Integer c=a;
a=b;
b=c;
}
//如果你调用了swap方法
swap(a,b);
//可能你认为是直接把a,b的引用直接传递给swap方法,其实并非如此
//Java在传递引用时,实际上后台会先复制引用,例如上面就会复制a,b的两个引用a1,b1,然后将a1和b1作为参数传递过去
//执行方法以后,a1指向对象b,b1指向对象a,而引用a和b并没有改变

//对于一个类的私有属性是可以交换的
public class Swap{
private int a;
private int b;

public Swap(int a,int b){
this.a=a;
this.b=b;
}

public void swap(){
int temp=this.a;
this.a=this.b;
this.b=temp;
}

public int getA(){
return a;
}

public int getB(){
return b;
}
}
//////////////////////测试程序
public class TestSwap {
public static void main(String[] args) {
Swap swap=new Swap(1,2);
swap.swap();
System.out.println(swap.getA()+" "+swap.getB());
}

}
好大木头
2008-08-29 · TA获得超过1434个赞
知道大有可为答主
回答量:1705
采纳率:0%
帮助的人:1924万
展开全部
JAVA里面不可以,就算你把int 改成 Integer也不行,你应该用一些可以改变数值的对象作为参数传过来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
变天使了
2008-08-29 · TA获得超过444个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:348万
展开全部
貌似没有类似的功能

因为java没有直接传地址这一说

所以在方法也就是C的函数中一般只能改变形参数,如果需要,可以返回,并接收.......没有类似C这类直接调用方法改变实参的办法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随性亻
推荐于2016-05-18 · TA获得超过4180个赞
知道小有建树答主
回答量:4622
采纳率:84%
帮助的人:628万
展开全部
java中传参数只有值传递 ,对于基本类型,是传的具体的数值,而对于对象等引用类型,传递 的则是引用.
所谓值传递,就是说传递的东西是实参的复制品,直接改变实参是做不到的.

你可以让一个方法返回一个值.

但是对于引用类型的变量,可以改变对象边的属性.



void changeStr(StringBuffer str){
str.append("hello")
}
这样一个方法,如果传递一个StringBuffer过去,那它的值就会被改变,但是它的引用是没有变的.
c/c++ 是有引用传递这一说的,但在java里只有值传递.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanchangyong08
2008-08-29 · TA获得超过660个赞
知道小有建树答主
回答量:1096
采纳率:0%
帮助的人:0
展开全部
java中传参数只有值传递 ,对于基本类型,是传的具体的数值,而对于对象等引用类型,传递 的则是引用.
所谓值传递,就是说传递的东西是实参的复制品,直接改变实参是做不到的.

你可以让一个方法返回一个值.

但是对于引用类型的变量,可以改变对象边的属性.



void changeStr(StringBuffer str){
str.append("hello")
}
这样一个方法,如果传递一个StringBuffer过去,那它的值就会被改变,但是它的引用是没有变的.
c/c++ 是有引用传递这一说的,但在java里只有值传递.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式