小弟是java初学者,以下的程序是测试交换两个对象的方法实现。但是运行后却交换不了。我查阅了书,书中说java的参数传递类型只有“值传递”。那么如果想实现这样一个交换两个对象的方法具体应该怎么写呢?(我知道c++很容易实现的)
。谢谢回答。
public class mytest {
public static void main(String[] args) { ObjectSample o1 = new ObjectSample("hello");
ObjectSample o2 = new ObjectSample("你好");
System.out.println("before swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
swapObject(o1, o2);
System.out.println("after swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
}
static void swapObject(ObjectSample o1, ObjectSample o2){
ObjectSample temp = new ObjectSample("temp");
temp = o1;
o1 = o2;
o2 = temp;
}
}
class ObjectSample{
private String title;
ObjectSample(String title){
this.title = title;
}
public String getTitle(){
return title;
}
}
。谢谢回答。
public class mytest {
public static void main(String[] args) { ObjectSample o1 = new ObjectSample("hello");
ObjectSample o2 = new ObjectSample("你好");
System.out.println("before swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
swapObject(o1, o2);
System.out.println("after swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
}
static void swapObject(ObjectSample o1, ObjectSample o2){
ObjectSample temp = new ObjectSample("temp");
temp = o1;
o1 = o2;
o2 = temp;
}
}
class ObjectSample{
private String title;
ObjectSample(String title){
this.title = title;
}
public String getTitle(){
return title;
}
}
public class mytest { public static void main(String[] args) { ObjectSample o1 = new ObjectSample("hello");
ObjectSample o2 = new ObjectSample("你好"); System.out.println("before swap o1:" + o1.getTitle() + " o2:"
+ o2.getTitle());
swapObject(o1, o2);
System.out.println("after swap o1:" + o1.getTitle() + " o2:"
+ o2.getTitle());
} static void swapObject(ObjectSample o1, ObjectSample o2) {
String tmp = o1.getTitle();
o1.setTitle(o2.getTitle());
o2.setTitle(tmp);
}
}class ObjectSample {
private String title; ObjectSample(String title) {
this.title = title;
} public String getTitle() {
return title;
}
public void setTitle(String title){
this.title = title;
}
}
System.out.println("before swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
swapObject(o1, o2); //没有交换到
System.out.println("after swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
}
static void swapObject(ObjectSample o1, ObjectSample o2){ //相当与在方法体中交换了两个局部的对象,对你上面的o1,o2没影响
ObjectSample temp = new ObjectSample("temp");
temp = o1;
o1 = o2;
o2 = temp;
}
public class Mytest {
public static void main(String[] args) { ObjectSample o1 = new ObjectSample("hello");
ObjectSample o2 = new ObjectSample("你好");
System.out.println("before swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
swapObject(o1, o2);
}
static void swapObject(ObjectSample o1, ObjectSample o2){
ObjectSample temp = new ObjectSample("temp");
temp = o1;
o1 = o2;
o2 = temp;
System.out.println("after swap o1:"+o1.getTitle()+" o2:"+o2.getTitle());
}
} class ObjectSample{
private String title;
ObjectSample(String title){
this.title = title;
}
public String getTitle(){
return title;
}
}
谢谢这么多人回答。这里的属性比较少只有一个,如果类的属性很多的情况就不可能一个一个属性的传值吧?就是想问有没有像c++那样直接用指针操作的方法呢?
谢谢!
如果真的想模仿这个效果,可以在你的对象做一个包装对象,然后包装对象传到函数里,再操作。public class Wrap{
public Object o;
public Wrap(Object o){
this.o=o;
}
}
static void swap ( Wrap o1,Wrap o2){
Object temp=o1.o;
o1.o=o2.o;
o2.o=temp;
}这样可以做到,就是要多一道操作。