用对象swap(Integer a,Integer b) {inc c = a.intValue(); a= new Interger(b.intValue()); b = new Integer(c); }
jdk150(砸破玻璃上火车&举块砖头闹革命)不行啊,试过了,实参的值没变
不是吧,交换两个整数的值? 好办啊。Java的书里通常会告诉你怎么使用Holder类的。
不过交换值类型的话,Java是不能通过函数做到的,还是自己换吧, 这也是C++ 引用的好处。
嗯,这样可能不行,我给a,b赋了新的对象 你可以定义一个包含一个int类型的变量 比如 public class Test{ public static void main(String args[]){ myInteger a = new myInteger(3); myInteger b = new myInteger(2); swap(a,b); } static void swap(myInteger a,myInteger b) {int c = a.myValue; a.myValue= b.myValue; b.myValue = c; } } class myInteger{ myInteger(int a){ myValue=a; } public int myValue; }
{inc c = a.intValue();
a= new Interger(b.intValue());
b = new Integer(c);
}
这也是C++ 引用的好处。
你可以定义一个包含一个int类型的变量
比如
public class Test{
public static void main(String args[]){
myInteger a = new myInteger(3);
myInteger b = new myInteger(2);
swap(a,b);
}
static void swap(myInteger a,myInteger b)
{int c = a.myValue;
a.myValue= b.myValue;
b.myValue = c;
}
}
class myInteger{
myInteger(int a){
myValue=a;
}
public int myValue;
}
http://blog.csdn.net/JianZhiZG/archive/2006/12/02/1427086.aspx
//SwapDemo.java
public class SwapDemo
{
public static void swap(DataClass a,DataClass b)
{
DataClass c=new DataClass(0);
c.setData(a.getData());//c=a;
a.setData(b.getData());//a=b;
b.setData(c.getData());//b=c;这样是不行的,交换对象的引用并不起作用
}
public static void main(String[] args)
{
DataClass a=new DataClass(10);
DataClass b=new DataClass(5);
System.out.println("原始数据:"+a.getData()+" "+b.getData());
swap(a,b);
System.out.println("交换以后:"+a.getData()+" "+b.getData());
}}
class DataClass
{
private int a=0;
DataClass(int a)
{
this.a=a;
}
public void setData(int a)//设置属性a
{
this.a=a;
}
public int getData()//读取属性a
{
return a;
}
}
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
public static void main(){
int[] arr = new int[]{1,2};
swap(arr,0,1);
}
{
Integer x = 5, y = 6;
public static void swap(Object x, Object y)
{
Object t = x;
x = y;
y = t;
} public static void main(String[] args)
{
Integer x = 5, y = 6; //局部变量x, y
swap(x, y);
System.out.println(x + " " + y); // 输出的是5 6 Object t = x;
x = y;
y = (Integer) t;
System.out.println(x + " " + y); // 输出的是 6 5 // 使用实例变量交换
SwapTest s = new SwapTest();
swap(s.x, s.y);
System.out.println(x + " " + y); // 输出的是6 5
}
}请看最后一种方法,那就是使x y使用实例变量自动封装成Object类完成交换
class SwapTest
{
int x = 5, y = 6;
public static void swap(Object x, Object y)
{
Object t = x;
x = y;
y = t;
} public static void main(String[] args)
{
Integer x = 5, y = 6; //局部变量x, y
swap(x, y);
System.out.println(x + " " + y); // 输出的是5 6 Object t = x;
x = y;
y = (Integer) t;
System.out.println(x + " " + y); // 输出的是 6 5 // 使用实例变量交换
SwapTest s = new SwapTest();
swap(s.x, s.y);
System.out.println(x + " " + y); // 输出的是6 5
}
}
有自己做的的对象也可以,
但是用Iteger包装类不行》