java交换两个integer

阅读 173

2022-10-19


简单的swap(integer i1.,integer  i2),原本以为就是简单的对象之间的交换,代码如下

static void sw2(Integer i1, Integer  i2){
Integer tmp = i1;
i1 = i2;
i2 = tmp;
}

你会发现交换没有成功。真正的做法应该是访问integer的value属性,改变其值。

注意点

  1. 引用传递和值传递
  2. 反射
  3. Integer本身的理解

改良之后

static  void  sw(Integer i1, Integer i2) throws Exception {
Field field = Integer.class.getDeclaredField("value");
field.setAccessible(true);
Integer tmp = new Integer(i1.intValue());
field.set(i1,i2);
field.set(i2,tmp);
}

这样就交换成功了。

精彩评论(0)

0 0 举报