怎么输出还是2,3?public class TestClass {
public static void main(String[] args)
{
Test a = new Test();
Integer i = new Integer(2),j= new Integer(3);
a.swap(i,j);
System.out.println(i);
System.out.println(j);
}
}class Test
{
public void swap(Integer a , Integer b)
{
Integer c = a ;
a = b ;
b = c;
}
}
public static void main(String[] args)
{
Test a = new Test();
Integer i = new Integer(2),j= new Integer(3);
a.swap(i,j);
System.out.println(i);
System.out.println(j);
}
}class Test
{
public void swap(Integer a , Integer b)
{
Integer c = a ;
a = b ;
b = c;
}
}
解决方案 »
- 在线求助,关于java反编译。
- 新手求救~~排好序后,不知道如何把该INT值的对象输出,纠结中。
- 字符串比较错误 (if(!myradiobutton4.equals("UserName")){
- 一个线程问题..解决即结贴
- 怎样才能做出可以动态显示信息的程序启动画面? (高分哦)
- 用文件流对一文件复制,并生产新文件的问题
- 100分!!!文件流的问题~???
- 谁有weblogic_sp 给我来一份。
- 在把smartfile.class反编译以后,重新编译提示80多个错误,请看:
- 如何使visual java++支持swing工具包??
- 关于String的连接
- Hashtable在数据处理中怎么用
确实没有办法,但可以改变对象里的值,这才是最重要的。在方法里改
{
public void swap(Integer a , Integer b)
{
try
{
Field field = Integer.class.getDeclaredField("value");
field.setAccessible(true);
int aValue = field.getInt(a);
int bValue = field.getInt(b);
field.setInt(a, bValue);
field.setInt(b, aValue); }
catch (Exception e)
{
e.printStackTrace();
}
}
}
不过这没有什么意义了就
static int x;
static int y;
static void swap(Test a){
int temp=0;
temp=a.x;
a.x=a.y;
a.y=temp;
}
public static void main(String[] args){
Test a =new Test();
x=4;
y=5;
swap(a);
System.out.println(x);
System.out.println(y);
}
其次,即使你传入的两个参数不是Integer类型,你直接赋值也是错误的思路。
=========
学了一招 呵呵
在java用对象传的是引用,也就是值的地址,函数swap(Integer a , Integer b)中的交换实际是交换它们的地址,但是由于这地址是值传递的,所以函数退出后,地址不变.下面c代码,你能够看懂的话,就明白了.void swap(int *a,int *b)
{
int *c = a; a = b ; b = c;
}