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才对 展开
swap(int &a,int &b){
int c=a;
a=b;
b=a;
}
可以改实参值
在java怎么实现类似功能?
写错了b=c才对 展开
展开全部
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());
}
}
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());
}
}
展开全部
JAVA里面不可以,就算你把int 改成 Integer也不行,你应该用一些可以改变数值的对象作为参数传过来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
貌似没有类似的功能
因为java没有直接传地址这一说
所以在方法也就是C的函数中一般只能改变形参数,如果需要,可以返回,并接收.......没有类似C这类直接调用方法改变实参的办法
因为java没有直接传地址这一说
所以在方法也就是C的函数中一般只能改变形参数,如果需要,可以返回,并接收.......没有类似C这类直接调用方法改变实参的办法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java中传参数只有值传递 ,对于基本类型,是传的具体的数值,而对于对象等引用类型,传递 的则是引用.
所谓值传递,就是说传递的东西是实参的复制品,直接改变实参是做不到的.
你可以让一个方法返回一个值.
但是对于引用类型的变量,可以改变对象边的属性.
如
void changeStr(StringBuffer str){
str.append("hello")
}
这样一个方法,如果传递一个StringBuffer过去,那它的值就会被改变,但是它的引用是没有变的.
c/c++ 是有引用传递这一说的,但在java里只有值传递.
所谓值传递,就是说传递的东西是实参的复制品,直接改变实参是做不到的.
你可以让一个方法返回一个值.
但是对于引用类型的变量,可以改变对象边的属性.
如
void changeStr(StringBuffer str){
str.append("hello")
}
这样一个方法,如果传递一个StringBuffer过去,那它的值就会被改变,但是它的引用是没有变的.
c/c++ 是有引用传递这一说的,但在java里只有值传递.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java中传参数只有值传递 ,对于基本类型,是传的具体的数值,而对于对象等引用类型,传递 的则是引用.
所谓值传递,就是说传递的东西是实参的复制品,直接改变实参是做不到的.
你可以让一个方法返回一个值.
但是对于引用类型的变量,可以改变对象边的属性.
如
void changeStr(StringBuffer str){
str.append("hello")
}
这样一个方法,如果传递一个StringBuffer过去,那它的值就会被改变,但是它的引用是没有变的.
c/c++ 是有引用传递这一说的,但在java里只有值传递.
所谓值传递,就是说传递的东西是实参的复制品,直接改变实参是做不到的.
你可以让一个方法返回一个值.
但是对于引用类型的变量,可以改变对象边的属性.
如
void changeStr(StringBuffer str){
str.append("hello")
}
这样一个方法,如果传递一个StringBuffer过去,那它的值就会被改变,但是它的引用是没有变的.
c/c++ 是有引用传递这一说的,但在java里只有值传递.
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询