`

关于Integer比较的小问题

    博客分类:
  • java
阅读更多

关于Integer比较的小问题

 

Integer a = 1;

Integer b = 1;

 

Integer c = 127;

Integer d = 127;

 

Integer e = 128;

Integer f = 128;

 

 

System.out.println(a==b);

System.out.println(c==d);

System.out.println(e==f);

 

 

结果会是什么呢?

 

true

true

false

 

why?

 

这里用到了java的装箱功能。

在编辑阶段一个Integer的变量直接赋值整数,编译器会优化为Integer.valueOf(int);

 

在valueOf里面做了什么样的操作呢?

if (i >= IntegerCache.low && i <= IntegerCache.high)

return IntegerCache.cache[i + (-IntegerCache.low)];

return new Integer(i);

 

默认IntegerCache.low = -127

InegerCache.high = 127

 

所以如果值在-127到127之间,会直接走缓存,否则会重新new一个对象。

缓存里的对象是已经存在的,所以在比较==的时候,会出现true的情况。

而new的时候就是一个重新的对象,两者比较会出现false。

分享到:
评论

相关推荐

    POJ1503-Integer Inquiry

    综合以上信息,我们可以推测"Integer Inquiry"是一个涉及数值处理或者查询的编程问题,可能需要参赛者利用C++编写程序来处理整数数据,进行特定的查询操作。解题报告会提供问题的解析和算法设计,而源代码则展示了...

    JAVA-int和Integer的区别1.zip

    由于它是原始类型,因此`int`变量的赋值、比较和运算都非常快速,没有内存分配和垃圾回收的问题。 另一方面,`Integer`是Java中的封装类(Wrapper Class),它对应于`int`的包装对象。当需要将整数值存储在对象中,...

    细数java中Long与Integer比较容易犯的错误总结.docx

    ### Java中Long与Integer比较易犯错误总结 #### 一、引言 在Java编程过程中,经常需要对数值进行比较操作。对于基本数据类型如`int`和`long`,可以直接使用`==`进行比较。然而,当涉及到它们的包装类`Integer`和`...

    big integer

    此外,还需要检查溢出和下溢等问题。 8. **测试**:为了确保类的正确性,通常会包含一系列的测试用例,使用单元测试框架如Google Test进行验证。 大整数类的实现难度在于高效地处理大整数运算,尤其是在内存管理和...

    Integer创建对象

    在这个问题中,我们关注的是`Integer`类的创建,以及Java对象池机制对性能的影响。让我们深入探讨一下。 首先,`Integer`是Java中的一个包装类,用于封装基本类型`int`。Java提供了八种基本类型的包装类,包括`...

    c++ 大整数库 big integer

    以下是一些关于大整数库的关键知识点: 1. **数据结构**:大整数库通常使用动态分配的数组来存储数字,数组的大小可以根据需要动态扩展。在`bigint-2010.04.30`版本中,可能会包含一个类,如`BigInt`,它维护一个...

    将 BigDecimal 类型转换为 Integer 类型.pdf

    本文将详细介绍如何将 BigDecimal 类型转换为 Integer 类型,并讨论在转换过程中可能遇到的问题和解决方案。 1. **BigDecimal 的 intValue() 方法** BigDecimal 类提供了一个名为 `intValue()` 的方法,该方法用于...

    Integer缓存池案例1

    Integer类在JDK中提供了缓存机制,用于优化Integer对象的创建和使用,特别是对于小数值。当我们在程序中创建Integer对象时,如果值在-128到127之间,Integer对象会直接从缓存池中获取或复用已存在的对象,避免了重复...

    Large-integer.rar_ large integer_integer加减乘除_visual c

    标签"_large_integer integer加减乘除 visual_c"表明了这个项目是关于大整数计算的,而且是使用C++作为编程语言。从压缩包子文件的文件名称列表"大整数"来看,可能包含了实现这些功能的源代码文件,可能是以C++类的...

    50 Years of Integer Programming 1958-2008

    它通过不断地将原始问题分解为更小的子问题,并对每个子问题进行求解来逐步逼近最优解。 2. **切割平面方法(Cutting Plane Methods)**:这种方法通过添加有效的不等式(即切割平面)来加强原始问题的线性松弛,...

    Java Integer的缓存特性

    项目里遇到的小问题的 整理

    integer multiplication

    这种方法的基本思想是将大问题分解成若干个较小的子问题进行解决,然后再将这些子问题的解组合起来得到原问题的解。例如,对于两个大的整数 \(x\) 和 \(y\),可以将它们拆分为较小的部分,如 \(x = a2^{n/2} + b\) ...

    mixed-integer-linear.zip_branch_mixed _mixed integer_分支界定

    分支界定法是解决MILP问题的一种高效算法,它的核心思想是将大的问题分解为一系列小的问题,通过逐步缩小解的空间范围来寻找最优解。这种方法将决策变量分为连续和离散两类,通过对离散变量进行“分支”(即设置不同...

    Gaussian Integer

    ### 高斯整数(Gaussian Integer) 高斯整数是在复数域中对整数概念的一种扩展,由数学家卡尔·弗里德里希·高斯引入。它们在数论中有着重要的应用,并且与传统的整数有诸多相似之处。高斯整数集记为 \(\mathbb{Z}[i]...

    integer-division

    将正整数 n 表示成一系列正整数之和, k n n n    ... 2 1 , (其中, 1 , 1 ... 2 1    ...们就要采用递归与分治策略,将这个大的问题转换为求解小的问题。

    Matlab.rar_integer programming

    标题中的“Matlab.rar_integer programming”表明这是一个关于使用MATLAB解决整数规划问题的压缩包文件。MATLAB是一款强大的数学计算软件,广泛应用于科学计算、工程分析和数据分析等领域。整数规划是运筹学的一个...

    long-integer-additions-operations.zip_long-integer

    在计算机科学中,长整数(Long Integer)处理是针对那些超出普通整型变量范围的大整数进行计算的需求。...掌握这种技术可以为解决实际问题提供强大的工具,特别是在需要进行高效大整数运算的场景下。

    The GNSS integer ambiguities_ estimation and validation

    标题与描述均提及了“GNSS整数模糊度:估计与验证”,这表明文档主要讨论的是全球导航卫星系统(GNSS)中一个关键的技术问题——整数模糊度的估计与验证方法。GNSS,包括GPS、GLONASS、Galileo和BeiDou等,是现代...

    POJ1716-Integer Intervals【Difference Constraints】

    "Difference Constraints" 是该问题的关键,它是指一组关于变量的不等式形式为 `x_i - x_j 或 `x_i - x_j &gt;= k` 的约束,其中 `x_i` 和 `x_j` 是变量,`k` 是常数。在本题中,我们需要找到一组满足差分约束的整数解...

    Integer Programming: The Branch and Bound Method

    它可能是等于这个值,也可能更小,甚至有可能整数规划本身无解,这在最大化问题中可以理解为负无穷大。 分支定界法的核心思想是,当遇到非整数最优解时,我们需要对问题进行“分支”。假设最优解中某个变量xi取值为...

Global site tag (gtag.js) - Google Analytics