美文网首页
如何交换两个integer的位置

如何交换两个integer的位置

作者: 我还是老油条 | 来源:发表于2019-05-04 18:11 被阅读0次

交换两个integer变量的位置;发现没用

private final int value;因为是final  private  所以要用反射解决

javap -v  App.class

字节码编译:发现调用integer.valueOf;

Integer.valueOf在-128-127  之间有缓存,用的是同一地址值,equals  true

大于-128-127  需要new对象  地址值不一样,所以equals为false

当field.set(i1,i2.intValue());的时候  修改了 i1的内存地址,所以temp 也就是2了,所以i1,i2 都是2.

缓存修改的是同一块内存

解决方案: 重新new,不用缓存,得到如下图结果:

相关文章

  • 如何交换两个integer的位置

    交换两个integer变量的位置;发现没用 private final int value;因为是final pr...

  • 剖析一道不简单的面试题

    问题 如何实现两个Integer的引用对象传给一个swap方法在方法内部进行交换? 第一版(直接交换) 失败原因 ...

  • 交换两个Integer的值

  • 「持续更新」Vim一日一技

    交换前后两个字符 经常容易出现将”name"打成“nmae"的情况,如何快速的交换ma的位置呢? 解释:x 用于删...

  • 排序

    冒泡排序 比较两个相邻的数,不过不符合排序规则则交换这两个数的位置(比如升序,前一个比后一个大,则交换位置)。这样...

  • 冒泡排序

    将数组相邻的两个元素比较,将小的数和大的数交换位置,否则不交换

  • 【问答】Java基础

    两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化? 不会。J...

  • LeetCode 24. Swap Nodes in Pairs

    题目 将链表中相邻的两个节点交换位置,注意第一个节点与第二个节点要交换位置,第三个节点与第四个节点要交换位置, 而...

  • Java基础中Integer值用==和equal判断相等问题

    一、Integer equals()方法判断的是两个Integer对象值是否相等 二、Integer==判断两个对...

  • (C++实现)经典排序算法

    1. 交换排序 根据数组中两个元素值的大小来交换两个元素在数组中的位置。 1.1 冒泡排序 1.1.1 基本思想:...

网友评论

      本文标题:如何交换两个integer的位置

      本文链接:https://www.haomeiwen.com/subject/vohfoqtx.html