62,614
社区成员
发帖
与我相关
我的任务
分享
public class Swap
{
public static void main(String[] args)
{
//SwapTest st=SwapTest(2,3); 不能这样写,因为2,3为基本数据类型int型的,而非对象Integer型
Integer a=new Integer(2);
Integer b=new Integer(3);
SwapTest st=new SwapTest(a,b);
System.out.println("before swap:");
st.outPut();
st.dataSwap(a,b);
System.out.println("after swap:");
st.outPut();
}
}
class SwapTest
{
Integer a=null;
Integer b=null;
public SwapTest(Integer a,Integer b)
{
this.a=a;
this.b=b;
}
protected void dataSwap(Integer a,Integer b)
{
Integer temp=a;
a=b;
b=temp;
}
protected void outPut()
{
System.out.println("a="+a+" b="+b);
}
}
public class Test2 {
public static void main(String[] args) {
int a = 100;
int b = 200;
System.out.println("a = " + a + ", b = " + b);
SwapTest st = new SwapTest();
st.dataSwap(a, b);
st.print();
}
}
class SwapTest {
private int a;
private int b;
public void dataSwap(int a, int b) {
this.a = b;
this.b = a;
}
public void print() {
System.out.println("a = " + a + ", b = " + b);
}
}
//每天都有这样的帖子...
protected void dataSwap(Integer a,Integer b)//拷贝2个引用a,b
{
// 总结来说,你传进来之后,开始是拷贝的和被拷贝的指向同一个对象,但是你在下面把这个拷贝的引用指向了另一个,这时候它跟被拷贝的引用之间没什么关系了,你爱改怎么改就怎么改!
Integer temp=a;//和temp都指向同一个对象
a=b;//把a指向b指向的对象,现在指向同一个对象
b=temp;//...
}