`
palwang
  • 浏览: 50493 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

蛋疼的JAVA比较相等符号(java里的潜规则)

 
阅读更多
/* Hello.java */
import java.lang.Integer;

public class Hello
{
  public static void main(String[] args)
  {
    int a = 1000, b = 1000;
    System.out.println(a == b);

    Integer c = 1000, d = 1000;
    System.out.println(c == d);

    Integer e = 100, f = 100;
    System.out.println(e == f);
  }
}

大家不要去运行程序,先想想,上述3个输出结果会是什么。。。

结果:
true
false
true

原因:
Integer类型 默认-128~127使用缓存数据, 在默认的范围内使用的是同一对象,所以相等,否则不等
    /**
     * Returns a <tt>Integer</tt> instance representing the specified
     * <tt>int</tt> value.
     * If a new <tt>Integer</tt> instance is not required, this method
     * should generally be used in preference to the constructor
     * {@link #Integer(int)}, as this method is likely to yield
     * significantly better space and time performance by caching
     * frequently requested values.
     *
     * @param  i an <code>int</code> value.
     * @return a <tt>Integer</tt> instance representing <tt>i</tt>.
     * @since  1.5
     */
    public static Integer valueOf(int i) {
        if(i >= -128 && i <= IntegerCache.high)
            return IntegerCache.cache[i + 128];
        else
            return new Integer(i);
    }



分享到:
评论

相关推荐

    JAVA中实现“相等”比较的深入分析.pdf

    在Java编程语言中,对象“相等”比较的实现机制是面向对象编程思想中的一个核心概念。本文将对Java中实现对象“相等”比较的方式进行深入分析,包括对JVM内存管理、Java函数重写、装箱与拆箱机制以及equals()方法的...

    Java常见笔试、面试题目深度剖析 相等性(==及equals方法)详解

    首先,“==”运算符在Java中用于比较基本类型变量的值是否相等,例如int、char或boolean。对于引用类型,它比较的是两个引用是否指向内存中的同一个对象实例。例如: ```java String str1 = new String("Hello"); ...

    Javascript学习笔记之相等符号与严格相等符号

    本文介绍了JavaScript编程语言中的两个用于比较操作的重要概念:相等符号(==)和严格相等符号(===)。在JavaScript中,比较两个值是否相等是经常会遇到的操作,而JavaScript提供了两种不同的方法来进行这样的操作...

    Java SE程序 集合中判断对象相等

    Java SE程序 集合中判断对象相等Java SE程序 集合中判断对象相等Java SE程序 集合中判断对象相等Java SE程序 集合中判断对象相等Java SE程序 集合中判断对象相等Java SE程序 集合中判断对象相等Java SE程序 集合中...

    JAVA中“相等性比较”的实现技巧.pdf

    JAVA 中“相等性比较”的实现技巧 在 Java 编程过程中,比较数据是否相等是经常遇到的问题。 Java 语言的数据类型分为基本类型和引用类型。...Java 中的相等性比较需要考虑到数据类型、内存管理方式和对象的比较规则。

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

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

    Java中String判断值为null或空及地址是否相等的问题

    本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。 首先,我们需要区分`null`和空字符串`""`。`null`表示变量...

    Java比较两个List的值是否相等的方法

    在Java编程中,比较两个List的值是否相等是一个常见的需求,特别是在处理数据集合时。这里我们探讨一种方法,用于判断两个List是否包含相同的元素,不论它们的顺序如何。这个方法的关键在于比较List的大小以及排序后...

    java代码-使用java比较日期,如果早返回-1,晚返回1,相等返0的源代码

    java代码-使用java比较日期,如果早返回-1,晚返回1,相等返0的源代码 ——学习参考资料:仅用于个人学习使用!

    Java对象属性数据比较,返回变化数据

    在Java编程中,比较对象属性的数据变化是一项常见的需求,特别是在数据跟踪、日志记录或版本控制等场景。本文将深入探讨如何实现这个功能,并基于给定的文件`PriceCheckDetail.java`和`ObjectCompareUtil.java`来...

    实用小工具:Java实体类对比、Json对比、字符串动态拼接等功能

    也可以使用专门的JSON对比工具,如json-unit,它提供了一套API来比较两个JSON对象或字符串是否相等。 3. **字符串动态拼接**: 在Java中,字符串的动态拼接通常避免使用"+"操作符,因为它每次都会创建新的字符串...

    test2_JavaDouble类型比较大小_java编程_

    总结来说,当在Java中处理`Double`类型的数值比较时,应避免直接使用大于或小于符号,而是利用`Double.compare()`或`doubleToLongBits()`这样的工具进行比较。这将帮助我们避免浮点数计算的精度问题,确保比较结果的...

    java判断是否相等代码

    java判断是否相等

    java面试题集锦 java面试题集锦

    对于基本类型,`==`直接比较数值是否相等;而对于对象引用,`==`比较的是两个引用是否指向同一个内存位置,即同一对象。而`equals`方法在默认情况下也类似于`==`,比较对象的引用,但很多类如String和Integer重写了`...

    java 判断两个网址的主机名是否一样

    然后通过调用`URL`对象的`getHost()`方法获取主机名,并使用`equals()`方法比较它们是否相等。 除了基本的URL比较,我们还需要注意一些特殊情况,例如URL的协议(http、https等)、端口号或路径可能不同,但主机名...

    JAVA 比较器实例

    Java比较器是一个接口,位于`java.util`包下,其主要作用是提供一种方式来定义对象之间的比较规则。当我们需要对非原始类型(如自定义类的对象)进行排序时,由于它们可能没有天然的比较规则(如数字的大小),就...

    java常见面试题(史上最全最经典-希望对你有用)

    ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。equals方法是用于比较两个独立对象的内容...

    java面经八股文整理

    == 操作符专门用来比较两个变量的值是否相等,equals 方法是用于比较两个独立对象的内容是否相同。如果一个类没有自己定义 equals 方法,那么它将继承 Object 类的 equals 方法,Object 类的 equals 方法的实现代码...

    JAVA中实现“相等”比较的深入分析.zip

    在Java编程语言中,"相等"比较是一个基础但至关重要的概念。这涉及到对象的平等性和引用的平等性,以及如何正确地实现`equals()`和`hashCode()`方法。本篇文章将深入探讨Java中"相等"比较的各个方面,旨在帮助开发者...

Global site tag (gtag.js) - Google Analytics