Java中Integer大小的比较 == 与 equals的区别
public static void main(String[] args) { Integer a = 127; Integer b = 127; System.out.println(a==b); System.out.println(a.equals(b)); }
返回结果为:
true
true
public class Main{ public static void main(String[] args) { Integer a = 128; Integer b = 128; System.out.println(a==b); System.out.println(a.equals(b)); } }
返回结果为
false
true
原因:
实际上在我们用Integer a = 数字;来赋值的时候Integer这个类是调用的public static Integer valueOf(int i)这个方法。
查看源码:
public static Integer valueOf(int i) { final int offset = 128; if (i >= -128 && i <= 127) { // must cache return IntegerCache.cache[i + offset]; } return new Integer(i); }
我们可以发现,当数字不在-128到127之间时,会new出一个对象。这时用 == 进行比较就错了。
相关推荐
JAVA 中的 Integer 比较 在 Java 中,我们经常需要比较两个 Integer 对象是否相等,但是在使用 "==" 运算符时,可能会出现一些意外的结果。本文将深入探讨 Java 中的 Integer 比较,了解为什么使用 "==" 运算符可能...
这个方法通常在你需要使用`Integer`对象的特性(如缓存、比较操作或泛型方法参数)时使用。 在面试或笔试题中,如题目所示,`a = Integer.parseInt("123")`会将字符串"123"解析为`int`类型的值,并赋给变量a,所以a...
### Java中Long与Integer比较易犯错误总结 #### 一、引言 在Java编程过程中,经常需要对数值进行比较操作。对于基本数据类型如`int`和`long`,可以直接使用`==`进行比较。然而,当涉及到它们的包装类`Integer`和`...
此外,`Integer`类还提供了一些实用方法,比如`parseInt()`用于将字符串转换为整数,`toString()`用于将整数转换为字符串,以及`compareTo()`用于比较两个`Integer`对象的大小。 总的来说,`int`适合于需要高性能...
Java中long类型与Long类型的区别和大小比较详解 在Java中,long类型和Long类型都是用于表示数字的数据类型,但是它们之间存在着一定的区别。long类型是基本数据类型,而Long类型是对象类型,本文将通过示例代码详细...
1. `BigInteger` 类:这是Java中的一个内置类,位于`java.math`包下,用于表示任意大小的整数。由于Java的`int`、`long`等基本类型都有其数值范围限制,对于超过这些范围的大整数,`BigInteger`提供了一种解决方案。...
在Java编程语言中,比较大小是一项基础操作,广泛应用于各种逻辑判断和算法中。这篇教程将深入探讨如何在Java中实现不同类型的比较,包括基本数据类型、对象以及自定义类的比较。 首先,对于Java的基本数据类型,如...
本主题将深入探讨如何在Java编程语言中比较两个数值(最大值和最小值)的大小。Java提供了多种方法来执行这种比较,包括基本类型的比较运算符、包装类的compareTo方法以及集合框架中的Comparator接口。 1. **基本...
当我们需要对非原始类型(如自定义类的对象)进行排序时,由于它们可能没有天然的比较规则(如数字的大小),就需要自定义比较器来实现排序逻辑。 二、Comparator接口 Comparator接口包含一个核心方法:`int ...
- **比较方法**:如`compareTo(Integer anotherInteger)`用于比较两个`Integer`对象的大小。 - **获取值的方法**:如`intValue()`, `longValue()`, `floatValue()`, `doubleValue()`用于获取`Integer`对象的不同数值...
在Java编程中,比较字母和数字组合的字符串大小是一个常见的需求,特别是在处理用户输入或排序混合类型数据时。本文将详细介绍如何实现此类比较,并提供一个具体的实现示例。 首先,我们要明白,Java中的`String`类...
这里使用了`Integer.compare()`方法来确保正确的数字比较,如果列的数据不是整数而是浮点数,可以替换为`Double.compare()`。 最后,我们需要将排序后的结果写入"newData.txt"。Java的`PrintWriter`类适合此任务: ...
这个缓存大小可以通过JVM的启动参数`-Djava.lang.Integer.IntegerCache.high`来调整。默认值是127,但可以通过设置这个参数来扩大或缩小范围,不过设置的值必须大于127,否则会被重置为127以确保缓存有效。 总之,...
在Java编程语言中,Integer类是int类型的一个包装类,提供了许多方便的静态方法和实例方法来处理整型数据。本文将重点解析Integer类中的一些关键方法,包括toString、toUnsignedString以及highestOneBit。 首先,...
在Java编程语言中,数据类型的比较与转换是基础但又至关重要的操作,尤其在处理文本与数字信息时。本文将深入探讨Java中String类型和int类型之间的比较方法以及相互转换的技术,这对于理解和优化代码逻辑、提升程序...
本文将深入探讨如何定义比较器来比较数组中值的大小,并通过一个具体的示例进行说明。 首先,我们需要了解Java中的Comparator接口。Comparator接口提供了一个方法`compare(T o1, T o2)`,用于比较两个对象的顺序。...
例如,`String`和`Integer`类都实现了`Comparable`接口,因此我们可以直接比较字符串或整数的大小。如果一个类想要实现自然排序,它需要实现`Comparable`接口,并覆盖`compareTo(Object o)`方法。这个方法接收一个...
在进行等值比较时,应该优先使用`==`操作符而不是`.equals()`方法,因为对于IntegerCache范围内的对象,`==`能正确地检测到对象是否相等。 总之,虽然IntegerCache提供了一种性能优化的方式,但直接修改它的行为...
在Java 8中,Integer缓存池的大小默认为-128到127,这个范围可以通过系统属性"java.lang.Integer.IntegerCache.high"进行调整。 ```java public static Integer valueOf(int i) { if (i >= IntegerCache.low && i ...
为了方便处理这些类型,Java提供了一些内置类,如Integer、Double等,它们是原始类型的包装类。包装类提供了许多便利的方法,例如,将字符串转换为对应的数值类型,或者进行数值比较。 在处理对象时,工具类经常...