/**
* 要求:写出swap方法体的内容
* 并且输出结果只有
* a = 2
* b = 1
*
*
* 考点是:
* 1.反射:
* 在swap方法中,如果要修改a的值,那么应该修改的是 integer对应的属性,而不是引用,
* 然而属性是私有的,并且没有对外提供set方法,所以只能用反射
* 2.参数的传递
* 传递参数a,b传递的是 上边变量的引用的一个副本,如果仅仅定义一个temp来改变的话,
* 最后实际改变的副本的引用地址,而实际变量a,b的引用地址依然是没有变化的。
* 3.Integer的自动装箱拆箱
* Integer a = 1 等价于
* Integer a = Integer.valueof(1);
* 4.Integer的初始化缓存
* integer会初始化-128 到 127 之间数值的缓存
* 例如 new Integer(1) == new Integer(1)
* 但是 new Integer (128) != new Integer(128)
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Integer a = 1 , b = 2 ;
swap(a,b);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
private static void swap(Integer a, Integer b) throws Exception {
Field field = Integer.class.getDeclaredField("value");
field.setAccessible(true);
int temp = a.intValue();
field.setInt(a, b.intValue());
field.setInt(b, temp);
}
Java经典面试题001
猜你喜欢
转载自blog.csdn.net/anyeshenshang1/article/details/80856844
今日推荐
周排行