Java中swap()实现
Java中swap()实现
1.今天可爱的谭老师发了一道题目,使用java写方法交换Integer类型数据,而且入参固定了,题目请下图:

入参固定的话,当时想到的是重新定义一个自己的Integer类型,让它有get和set方法,直到看到贺大神,代码如下:
public static void swap(Integer a,Integer b) throws Exception
{
Field field = Integer.class.getDeclaredField("value");
field.setAccessible(true);
field.setInt(a, a ^ b);
field.setInt(b, a ^ b);
field.setInt(a, a ^ b);
}
当时惊为天人,反射还能这么用的,还能修改final修饰的值,
特此记下!
然后谭老师发布来了他的答案,只有两行,实现了需求,我也惊为天人
public static void swap(Integer a,Integer b) throws Exception
{
System.out.println("后a = " + b +"后b = " + a);
System.exit(0);
}
果然,知识和智慧是不可或缺的!
哈哈哈!
2.最后出来一个问题,set()和setInt()到底区别在哪里,兄弟们可以探讨下,因为用set方法后结果不是咱们想要的
public static void swap3(Integer a,Integer b) throws Exception
{
Field field = Integer.class.getDeclaredField("value");
field.setAccessible(true);
Integer tmp = a;
field.set(a, b);
field.set(b, tmp);
}
最后,欢迎各位留言,欢迎大神解答!
Java中swap()实现的更多相关文章
- Java中swap解惑
直接上代码…… public class Swap { public static void main(String[] args) { int a[] = new int[]{1,2}; Syste ...
- Java中的Swap,如何实现?
程序员都知道,在C/C++里面交换值的方法: void swap(int &a,int &b) { int temp; temp=a; a=b; b=temp; } 但是在Java中这 ...
- JAVA中关于并发的一些理解
一,JAVA线程是如何实现的? 同步,涉及到多线程操作,那在JAVA中线程是如何实现的呢? 操作系统中讲到,线程的实现(线程模型)主要有三种方式: ①使用内核线程实现 ②使用用户线程实现 ③使用用户线 ...
- java中两个值互换
两个值互换有以下三种方式: 使用临时变量(此种方法便于理解) x = 10; y = 20; //begin int temp = x; x = y; y = temp; //end; //此时x = ...
- 《Java中方法的参数传递方式只有一种:值传递》
//方法的参数传递机制(1):基本类型做形参的传递. class PrimitiveTransferTest { public static void swap(int a,int b) { //下面 ...
- Redis学习记录之Java中的初步使用
1.关于Redis redis下载地址:<span style="font-family: Arial, Helvetica, sans-serif;">http:// ...
- java中的mmap实现--转
什么是mmap mmap对于c程序员很熟悉,对于java程序员有点陌生.简而言之,将文件直接映射到用户态的内存地址,这样对文件的操作不再是write/read,而是直接对内存地址的操作. 在c中提供了 ...
- Java中Date各种相关用法
Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...
- c/c++和java达到swap不同功能
首先我们来看看c/c++实施swap性能 void swap ( int & a, int & b) { int Temp; temp = a; a = b; b = temp; } ...
随机推荐
- Python实战之文件操作的详细简单练习
['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__' ...
- javaWeb学习笔记——关于交叉连接-内连接-左外连接-右外连接的区别
废话不说:直接上图1 图1-1 table1表 图1-2 table2 图1-3 cross join 交叉连接 图1-4 显示内连接 图1-5 左外链接 图1-6 右外链接
- 【特效】体验很好的导航hover效果移出恢复当前位置
很常见的一种导航的hover效果,鼠标放上后除了正常的hover,在移出整个导航后,会恢复当前栏目的特殊样式,分别有横向和纵向的导航.代码也比较简单,设置一个当前栏目的class,用index()找到 ...
- Install Ubuntu On Windows10(win10上安装linux系统)
一.准备: 硬件:U盘 软件:ultraiso.Ubuntu镜像文件 二.安装linux: 1.Ubuntu官网(http://www.ubuntu.org.cn/download/alternati ...
- WinForm程序的发布
- JavaScript函数之作用域 / 作用链域 / 预解析
关于作用域和作用链域的问题,很多文章讲的都很详细,本文属于摘录自己觉得对自己有价值的部分,留由后用,仅供参考,需要查看详细信息请点击我给出的原文链接查看原文件 做一个有爱的搬运工~~ -------- ...
- [原创]浅谈JAVA在ACM中的应用
由于java里面有一些东西比c/c++方便(尤其是大数据高精度问题,备受广大ACMer欢迎),所以就可以灵活运用这三种来实现编程,下面是我自己在各种大牛那里总结了一些,同时加上自己平时遇到的一些jav ...
- Java基础笔记12
1.自定义异常. 定义一个类,让该类继承Exception.并写出该类的所有的构造函数.2.IO流. java.io 文件类.File 字节输入和输出流 InputStream OutputStrea ...
- HDU1792A New Change Problem(GCD规律推导)
A New Change Problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Codeforces Round #431 (Div. 1)
A. From Y to Y time limit per test 1 second memory limit per test 256 megabytes input standard input ...