`
passw0rd_J
  • 浏览: 8014 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Integer比较的小问题(转)

    博客分类:
  • J2SE
 
阅读更多

 
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。

 

转载连接:http://qq54903099.iteye.com/blog/2152918

分享到:
评论

相关推荐

    JAVA Integer == equal 比较 doc 比较大小 是否相等

    JAVA 中的 Integer 比较 在 Java 中,我们经常需要比较两个 Integer 对象是否相等,但是在使用 "==" 运算符时,可能会出现一些意外的结果。本文将深入探讨 Java 中的 Integer 比较,了解为什么使用 "==" 运算符可能...

    bigdecimal转integer.docx

    在 Java 编程中,`BigDecimal` 和 `Integer` 是两个不同类型的数值表示。`BigDecimal` 用于处理精确的浮点数运算,适合财务或金融计算,因为它可以避免浮点数计算中的精度问题。而 `Integer` 是 Java 中的整数类型,...

    Mybatis Generator将tinyint映射成Integer的解决办法.pdf

    在使用MyBatis Generator生成Java DAO层代码时,可能会遇到将数据库中的tinyint类型映射成Integer类型的问题。这个问题在上述描述中得到了详细的解释。首先,我们来看一下问题的背景和原因。 在Java环境中,使用...

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

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

    Java中Integer两种转int方法比较

    这个方法通常在你需要使用`Integer`对象的特性(如缓存、比较操作或泛型方法参数)时使用。 在面试或笔试题中,如题目所示,`a = Integer.parseInt("123")`会将字符串"123"解析为`int`类型的值,并赋给变量a,所以a...

    Java8 将List<Integer> 转换成以逗号分割的String字符串

    在Java编程中,将一个`List&lt;Integer&gt;`转换成以逗号分隔的`String`字符串是一种常见的需求,尤其是在处理数据展示或格式化输出时。Java 8引入了新的特性和方法,使得这种转换变得更加简洁和高效。下面我们将深入探讨...

    mybatis返回Integer

    标题"mybatis返回Integer"指的是在MyBatis的映射文件或者Mapper接口中,使用Integer作为返回值类型时,相较于使用int,可能会避免一些潜在的问题。 首先,我们要理解Java中的基本类型int和引用类型Integer的区别。...

    bigdecimal转integer.md

    bigdecimal转integer

    mybatis逆向工具generator,中文注释,Byte改Integer

    在实际开发中,如果数据库字段的数值范围远超`Byte`的承载能力,选择`Integer`会更为合适,避免数据溢出的问题。 MyBatis Generator自定义插件机制允许开发者根据需求调整生成的代码。在这个特定的版本中,开发者...

    bigdecimal转integer.txt

    bigdecimal转integer

    JAVA-int和Integer的区别

    需要注意的是,当进行`Integer`之间的比较时,如果值在-128到127之间,Java会使用缓存来提高性能,因此比较速度较快。但超出这个范围,每个`Integer`对象都是独一无二的,即使值相同,`==`比较也会返回`false`,此时...

    java中Integer包装类的详细讲解(java二进制操作,所有进制转换)

    java中Integer包装类的详细讲解(java二进制操作,所有进制转换) 十进制转成二进制 十进制转八进制 十进制转十六进制 十六进制转成十进制 十六进制转成二进制 八进制转成十进制 等等所有进制转换和操作

    Integer类的使用方法

    - **比较方法**:如`compareTo(Integer anotherInteger)`用于比较两个`Integer`对象的大小。 - **获取值的方法**:如`intValue()`, `longValue()`, `floatValue()`, `doubleValue()`用于获取`Integer`对象的不同数值...

    完美解决gson将Integer默认转换成Double的问题

    完美解决Gson将Integer默认转换成Double的问题 Gson是Google开发的一款JSON解析库,广泛应用于Android和Java开发中。然而,在使用Gson时,经常会遇到一个问题,即Gson会将Integer类型的值默认转换成Double类型。这...

    JAVA-int和Integer的区别1.zip

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

    convert string to integer

    了解了不同语言中字符串转整数的基本方法后,我们可以结合源码和工具来优化或扩展这个功能,比如添加自定义的校验逻辑、处理异常、支持多种进制等。对于开发者来说,熟悉并掌握这些基本操作是至关重要的,因为它们在...

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

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

    big integer

    在编程领域,大整数(Big Integer)是指能够表示超出普通整型变量范围的非常大的数值。在C++中,由于标准库并没有内置大整数类型,因此在处理需要存储和操作大整数的场景时,程序员通常需要自定义一个大整数类。标题...

    java 进制转换,二进制 十进制 十六进制 正数 负数的进制等等!.docx

    例如,`Integer.toHexString()`可以将十进制整数转换为十六进制字符串,`Integer.toBinaryString()`用于转换为二进制,而`Integer.toOctalString()`则用于转换为八进制。反之,要将其他进制的字符串转换为十进制,...

    Integer创建对象

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

Global site tag (gtag.js) - Google Analytics