交换两个局部变量Integer的值
反射是很强大的,谁说的final修饰的就不能改变,
通过反射获取成员变量,之后可以取消访问修饰符,也就是说private的也可以访问,
在修改常量(final修饰的),之后就可以对其做任何操作了
如下,通过一个方法交换两个Integer对象的值:
package ni.jun.yang.test;import java.lang.reflect.Field; import java.lang.reflect.Modifier;public class Test {public static void main(String[] args) {Integer a = 10;Integer b = 20;System.out.println("交换前:a="+a+",b="+b); change(a,b); System.out.println("交换后:a="+a+",b="+b);}public static void change(Integer a, Integer b) {// System.out.println("交换后:a="+b+",b="+a); // System.exit(0);try {Field field = Integer.class.getDeclaredField("value");field.setAccessible(true); //取消访问修饰符//public final class Field extends AccessibleObject implements Member//值为 true 则指示反射的对象在使用时应该取消 Java语言访问检查。//值为 false 则指示反射的对象应该实施 Java语言访问检查。 //修改常量(final)Field modifiersField = Field.class.getDeclaredField("modifiers");modifiersField.setAccessible(true);modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);//交换int temp = b;field.set(b, a);field.set(a, new Integer(temp));} catch (Exception e) {e.printStackTrace();}}}
转载于:https://www.cnblogs.com/nijunyang/p/7668179.html
交换两个局部变量Integer的值相关推荐
- java swap函数_Java 利用swap函数交换两个整型数据值
提到交换两个数a, b的值,一定可以想起很多方法,a = a+b;b = a - b; a = a - b;借助temp的方法等等,但是如果食用swap方法的话,这个问题可是很有研究的了,要求使用sw ...
- 交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度
由一个编程经典问题,交换两个变量的值入手,理解程序的时空复杂度(以下均使用PHP代码演示问题的解决方法)解决问题的方法一:1.方法文字描述:使用一个中间变量temp,实现两个变量值的互换2.实现的具体 ...
- java交换两个变量的值_Java中交换两个整数变量的值
需求 如下,我们定义了两个整数变量,并且分别进行了赋值,下面,我们需要实现的就是将x的值赋值给y,将y值赋值给x,实现x和y的值交换: int x = 100; int y = 200; 方法一:使用 ...
- python两数交换 函数_Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?...
从接触 Python 时起,我就觉得 Python 的元组解包(unpacking)挺有意思,非常简洁好用. 最显而易见的例子就是多重赋值,即在一条语句中同时给多个变量赋值: >>> ...
- setnx和expire合成一条指令_Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?...
从接触 Python 时起,我就觉得 Python 的元组解包(unpacking)挺有意思,非常简洁好用. 最显而易见的例子就是多重赋值,即在一条语句中同时给多个变量赋值: >>> ...
- Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 从接触 Python 时起,我就觉得 Python 的元组解包(u ...
- 交换两个变量的值,不使用第三个变量的四种法方
交换两个变量的值,不使用第三个变量的四种法方 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下: int a,b; a=10; b=15; int t; t=a; a= ...
- 不用引入第三变量交换两个变量的值
前几天发现了一个问题:有人告诉我,要进行变量交换,就必须引入第三变量! 假设我们要交换a和b变量的值,如果写成 int a=5,b=10; a=b; b=a; 那么结果就是两个都是10,理由不言而喻. ...
- 函数交换两个变量java_java 编写函数 交换两个基本变量的值
java 编写函数 交换两个基本变量的值 Java编写一个函数交换两个变量的值 Java函数在传递过程中只能够传值,不能传址.这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来.所以解决之 ...
最新文章
- HTSRealistic missions 10:Holy Word High School
- 不学无数——SpringBoot入门Ⅱ
- Android toolbar menu 字体点击样式
- Java多线程知识小抄集(四)——完结
- linux网络编程之inet_addr和inet_ntoa使用总结
- 年度回忆录(2011.12----2012.09)
- 巧用 PHP 数组函数 1
- 数据库 之 事务控制和隔离级别
- 广州元宇宙10条(附pdf下载地址)
- 图片保存为YUV格式
- 【STM32Cube笔记】16-STM32Cube个性化定制
- Chromium浏览器扩展JS对象方法
- MFC简易RTF编辑器
- [书单]创意写作书 48本
- BZOJ2827 千山鸟飞绝
- java jtable 复选框_java swing如何在JTable一个单元格添加多个复选框
- position:sticky 粘性定位 (sticky) 与 固定定位
- 输出二叉查找树poj 2418 二叉查找树
- AUTOSAR基础篇之DTC
- 药品注册专员前景如何?5条职业规划发展方向