class Exchange
{void exchange(int a,int b)
{
int c;
c=a;
a=b;
b=c; }
public static void main(String[] args)
{
int e=1;
int f=3;
Exchange db=new Exchange ();
System.out.println(e+" "+f);
db.exchange(e,f);
System.out.println(e+" "+f); }
}
上面那段代码的函数exchange()是传值引用,无法达到交换a,b值的目的;
如果用C,可以使用指针,
请问用java怎么实现?
{void exchange(int a,int b)
{
int c;
c=a;
a=b;
b=c; }
public static void main(String[] args)
{
int e=1;
int f=3;
Exchange db=new Exchange ();
System.out.println(e+" "+f);
db.exchange(e,f);
System.out.println(e+" "+f); }
}
上面那段代码的函数exchange()是传值引用,无法达到交换a,b值的目的;
如果用C,可以使用指针,
请问用java怎么实现?
解决方案 »
- Swing JButton 计算器
- swt label 能否 让文字靠上
- 多线程 求助
- s.equals(s[0])在什么情况true? PS:String[] s;
- String转Date
- 问一个关于synchronized的问题
- 请大家讨论:java里面,类和类的实例(对象)是怎样在内存中存储的呢?
- GIS中的画线问题??请高手讲讲!谢谢!
- 怎样保护整个系统中的java类文件,有没有比较好用的混淆器或其它方法,加密狗?
- 我和我的朋友机器联网了,我的我的java程序(用jdbc驱动)可以连到他的sqlserver.但不可以连到我自己的。但我的java程序(用jdbc-odbc桥)连
- 考考你对super的理解(高手进进进)
- Java如何实现透明图片在photoshop里面的反选和删除操作
int e = 1;
int f = 3;e = e + f; //e = 4
f = e - f; //f = 1
e = e - f; //e = 3System.out.printf("e = "+e+",f = "+f);
你评什么说用Interger就可以?你试过吗?
如果没有试过,最好不了为了得点分而误导别人
用Integer试了一下,确实不行,仓促回帖,抱谦了。
分析了一下原因,应该是在一个方法里面,即使形式参数的对象引用被改变了,也只是在这个方法中被改变了,出了这个方法,这个引用又被还原了。所以需要在方法中改变这个对象里面的值,那么出了这个方法,对象里面被改变的值才依然有效。下面是个例子,验证过的。class IntExchange{
int value;
public IntExchange(int i){
value = i;
}
}public class TestExchange {
public static void exchange(IntExchange e, IntExchange f){
int temp;
temp = e.value;
e.value = f.value;
f.value = temp;
}
public static void main(String[] args) {
IntExchange e = new IntExchange(5);
IntExchange f = new IntExchange(7);
exchange(e,f);
System.out.println(e.value);
System.out.println(f.value);
}
}
int b=1;
a=a^b;
b=a^b;
a=a^b;
非得在函数中搞交换吗?
class Pair
{
public Pair(int a, int b)
{
first = a;
second = b;
}
public int getFirst() { return first; }
public int getSecond() { return second; } private int first;
private int second;
}...
public Pair swap(a,b){ return newPair(b,a);
}
...{
class Exchange
{
public void exchange(int a,int b)
{
int c;
c=a;
a=b;
b=c;
System.out.println(a+" "+b); //***************新加的
}
public static void main(String[] args)
{
int e=1;
int f=3;
Exchange db=new Exchange();
System.out.println(e+" "+f);
db.exchange(e,f);
System.out.println(e+" "+f); }
}结果是
1 3
3 1
1 3
private int f=3;
public void Exchange(Exchange ex){
int c;
c=ex.e;
ex.e=ex.f;
ex.f=c;
}
public static void main(String[] args) {
Exchange ex=new Exchange();
System.out.println("e,f交换之前:");
System.out.println("e="+ex.e);
System.out.println("f="+ex.f);
ex.Exchange(ex);
System.out.println("e,f交换之后:");
System.out.println("e="+ex.e);
System.out.println("f="+ex.f);
}
}输出结果:
e,f交换之前:
e=1
f=3
e,f交换之后:
e=3
f=1
看和你自己的程序有啥区别,好好分析一下,至于你理解是传值还是传的引用,好多人讨论这个问题,随你自己的理解