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包装类的详细知识: 1. **包装类的定义与作用** - Java的8个基本数据类型包括byte、short、int、long、char、float、double和boolean。每个都有其对应的包装类,分别是Byte、Short、Integer、Long、...
java 包装类练习 Java 包装类是 Java 语言中的基本类型的对象表示形式,用于提供包装基本类型的对象。Java 包装类包括 Boolean、Byte、Character、Short、Integer、Long、Float 和 Double 八种。 1. Long 包装类型...
### Java包装类与集合类详解 #### 包装类概述 在Java中,为了更好地处理基本数据类型(如`int`、`double`等),Java提供了八种包装类,每种包装类都将基本数据类型“封装”起来,使得基本类型也能拥有对象特性,并...
Java包装类是Java编程语言中的一个关键特性,主要用于将基本数据类型(如int、char、boolean等)与对象之间进行转换。这是因为Java的API库中许多类和方法都设计为接收或返回对象,而基本类型不是对象。为了解决这个...
为了使原始类型能够参与面向对象的编程,Java设计了八种对应的包装类(Wrapper Classes):Byte、Short、Integer、Long、Float、Double、Character和Boolean。这些包装类将原始类型封装成对象,使得我们可以使用对象...
### Java包装类详解 #### 基本概念 在Java编程语言中,为了使基本数据类型也能具备对象的特性,例如调用方法等,Java为每一种基本数据类型提供了对应的包装类。这些包装类不仅提供了丰富的操作接口,还能够帮助...
该文件显示了包装类中的自动装箱和自动拆箱!就是类容比较少
Java JDBC包装类是一种为了简化Java数据库连接(JDBC)操作而设计的自定义工具类或框架。在传统的JDBC编程中,我们需要手动编写大量的重复代码,例如加载驱动、建立连接、创建Statement或PreparedStatement对象、...
面向对象程序设计中,可以将一个类的定义 放在另一个类的内部,这就是内部类(有的地方叫嵌套类), 包含内部类的类也被称为外部类(有的地方也叫宿主类) 匿名内部类就是没有名字的内部类 正因为没有名字,所以匿名内部...
Java包装类是Java语言设计中的一个重要特性,它们是为了解决基本数据类型(如int、char、boolean等)无法直接参与面向对象编程的问题而引入的。包装类将基本数据类型转换为对象,使得我们可以在需要对象操作的场景下...
Java 包装类、拆箱和装箱详解 Java 语言作为一门典型的面向对象编程语言,然而其八种基本数据类型并不支持面向对象编程。这些基本类型的数据不具备“对象”的特性——不携带属性、没有方法可调用。为了解决这个问题...
Java中的包装类是针对基本数据类型(如int、float等)设计的一组类,它们使得基本数据类型能够参与面向对象的编程。包装类解决了Java语言中基本类型与对象之间转换的不便,使得基本类型的数据可以像对象一样进行操作...
Java包装类原理与用法实例分析 Java包装类是Java语言中的一种特殊的类,它可以将基本数据类型转换成对象,以便在面向对象的编程中使用。在Java中,基本数据类型包括byte、short、int、long、float、double、boolean...
总结了一些Java包装类常用方法,以Excel表格的形式呈现给大家,希望对阅读的你有所帮助。关注作者7旅病娘,一起学习更多的有意思的编程相关知识。
包装类 byte-Byte short-Short int -Integer long -Long float -Float double -Double char-Character boolean-Boolean 1、所属的包 java.lang 2、类的继承关系、实现接口 前面6个包装类是与数字相关的 ...
在Java编程语言中,接口(Interface)和包装类(Wrapper Class)是两个核心概念,它们在实际开发中扮演着至关重要的角色。接口提供了一种定义规范的方式,而包装类则是基本数据类型与对象世界之间的桥梁。现在让我们...
学习和理解Java包装类的基本概念和语法; 实际项目中需要使用包装类来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解包装类的用法和优势,并通过实际的示例代码加深对包装类的掌握。...
Java 基本数据类型与包装类之间的转换的思维脑图
但在Java中不能定义基本类型(primitive type),为了能将基本类型视为对象来处理,并能连接相关的方法,Java为每个基本类型都提供了包装类,这样,我们便可以把这些基本类型转化为对象来处理了。这些包装类有:Boolean...
包装过程中,你可能需要配置一些参数,例如指定主类(即程序启动的入口点),设置JVM的内存分配,或者添加额外的类路径和库。此外,还可以自定义.exe文件的图标,使其看起来更像一个专业的桌面应用。 包装完成后,...