`
望那山
  • 浏览: 386 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于JAVA的包装类

阅读更多
public class MathUtil {
  public static boolean compare1(long n1, long n2) {
    return n1 == n2;
  }

  public static boolean compare2(Number n1, Number n2) {
    if (n1 == null) {
      return n2 == null;
    } else {
      return n1 == n2;
    }
  }

  public static boolean compare3(Number n1, Number n2) {
    if (n1 == null) {
      return n2 == null;
    } else {
      return n1.longValue() == n2.longValue();
    }
  }

  public static void main(String[] args) {
    // 使用long n1== n2
    System.out.println(compare1(127, 127L)); // true
    System.out.println(compare1(127L, 127L)); // true
    System.out.println(compare1(128L, 128L)); // true
    // 使用 Long n1== n2
    System.out.println(compare2(127, 127L)); // false
    System.out.println(compare2(127L, 127L)); // true
    System.out.println(compare2(128L, 128L)); // false
    // 使用 Long n1.longValue() == n2.longValue();
    System.out.println(compare3(127, 127L)); // true
    System.out.println(compare3(127L, 127L)); // true
    System.out.println(compare3(128L, 128L)); // true
  }
}

经过验证 ,发现equals 也是可以的
public class MathUtil {

  public static boolean compare(Number n1, Number n2) {
    if (n1 == null) {
      return n2 == null;
    } else {
      return n1.equals(n1);
    }
  }

  public static void main(String[] args) {
    System.out.println(compare(12121L, 12121L)); // true
  }
}

这是前几天系统猛然出现的bug, 当时吓尿了。 后来经过定位;发现 基本数据类型的包装类,对于不在 -128~127 集合外的数字 会不相等;
总结:JAVA中 尽量不用 == , 多使用 equals  
分享到:
评论

相关推荐

    Java学习资料-包装类

    以下是关于Java包装类的详细知识: 1. **包装类的定义与作用** - Java的8个基本数据类型包括byte、short、int、long、char、float、double和boolean。每个都有其对应的包装类,分别是Byte、Short、Integer、Long、...

    java包装类练习.doc

    java 包装类练习 Java 包装类是 Java 语言中的基本类型的对象表示形式,用于提供包装基本类型的对象。Java 包装类包括 Boolean、Byte、Character、Short、Integer、Long、Float 和 Double 八种。 1. Long 包装类型...

    java包装类集合类详解

    ### Java包装类与集合类详解 #### 包装类概述 在Java中,为了更好地处理基本数据类型(如`int`、`double`等),Java提供了八种包装类,每种包装类都将基本数据类型“封装”起来,使得基本类型也能拥有对象特性,并...

    Java 包装类

    Java包装类是Java编程语言中的一个关键特性,主要用于将基本数据类型(如int、char、boolean等)与对象之间进行转换。这是因为Java的API库中许多类和方法都设计为接收或返回对象,而基本类型不是对象。为了解决这个...

    java原始数据类型的包装类

    为了使原始类型能够参与面向对象的编程,Java设计了八种对应的包装类(Wrapper Classes):Byte、Short、Integer、Long、Float、Double、Character和Boolean。这些包装类将原始类型封装成对象,使得我们可以使用对象...

    Java包装类

    ### Java包装类详解 #### 基本概念 在Java编程语言中,为了使基本数据类型也能具备对象的特性,例如调用方法等,Java为每一种基本数据类型提供了对应的包装类。这些包装类不仅提供了丰富的操作接口,还能够帮助...

    java 包装类

    该文件显示了包装类中的自动装箱和自动拆箱!就是类容比较少

    java JDBC包装类

    Java JDBC包装类是一种为了简化Java数据库连接(JDBC)操作而设计的自定义工具类或框架。在传统的JDBC编程中,我们需要手动编写大量的重复代码,例如加载驱动、建立连接、创建Statement或PreparedStatement对象、...

    Java内部类和包装类.ppt

    面向对象程序设计中,可以将一个类的定义 放在另一个类的内部,这就是内部类(有的地方叫嵌套类), 包含内部类的类也被称为外部类(有的地方也叫宿主类) 匿名内部类就是没有名字的内部类 正因为没有名字,所以匿名内部...

    Java包装类详解.pptx.pptx

    Java包装类是Java语言设计中的一个重要特性,它们是为了解决基本数据类型(如int、char、boolean等)无法直接参与面向对象编程的问题而引入的。包装类将基本数据类型转换为对象,使得我们可以在需要对象操作的场景下...

    Java包装类、拆箱和装箱详解.docx

    Java 包装类、拆箱和装箱详解 Java 语言作为一门典型的面向对象编程语言,然而其八种基本数据类型并不支持面向对象编程。这些基本类型的数据不具备“对象”的特性——不携带属性、没有方法可调用。为了解决这个问题...

    java 包装类发给的发广告豆干

    Java中的包装类是针对基本数据类型(如int、float等)设计的一组类,它们使得基本数据类型能够参与面向对象的编程。包装类解决了Java语言中基本类型与对象之间转换的不便,使得基本类型的数据可以像对象一样进行操作...

    Java包装类原理与用法实例分析

    Java包装类原理与用法实例分析 Java包装类是Java语言中的一种特殊的类,它可以将基本数据类型转换成对象,以便在面向对象的编程中使用。在Java中,基本数据类型包括byte、short、int、long、float、double、boolean...

    Java包装类常用方法表格.xlsx

    总结了一些Java包装类常用方法,以Excel表格的形式呈现给大家,希望对阅读的你有所帮助。关注作者7旅病娘,一起学习更多的有意思的编程相关知识。

    java包装类相关方法.txt

    包装类 byte-Byte short-Short int -Integer long -Long float -Float double -Double char-Character boolean-Boolean 1、所属的包 java.lang 2、类的继承关系、实现接口 前面6个包装类是与数字相关的 ...

    Java学习笔记接口包装类

    在Java编程语言中,接口(Interface)和包装类(Wrapper Class)是两个核心概念,它们在实际开发中扮演着至关重要的角色。接口提供了一种定义规范的方式,而包装类则是基本数据类型与对象世界之间的桥梁。现在让我们...

    Java语言 包装类讲解案例代码 ( 设计目的(作用)和用途、自动装箱与拆箱、常用方法、 null和默认值)

    学习和理解Java包装类的基本概念和语法; 实际项目中需要使用包装类来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解包装类的用法和优势,并通过实际的示例代码加深对包装类的掌握。...

    Java 基本数据类型与包装类之间的转换

    Java 基本数据类型与包装类之间的转换的思维脑图

    Java的基本数据类型和包装类的关系

    但在Java中不能定义基本类型(primitive type),为了能将基本类型视为对象来处理,并能连接相关的方法,Java为每个基本类型都提供了包装类,这样,我们便可以把这些基本类型转化为对象来处理了。这些包装类有:Boolean...

    Java程序包装器

    包装过程中,你可能需要配置一些参数,例如指定主类(即程序启动的入口点),设置JVM的内存分配,或者添加额外的类路径和库。此外,还可以自定义.exe文件的图标,使其看起来更像一个专业的桌面应用。 包装完成后,...

Global site tag (gtag.js) - Google Analytics