Java 中表示整数的包装类Integer(详解)

简介: Java 中表示整数的包装类Integer(详解)

Integer 是 Java 中的一个类,属于 java.lang 包。

基本概念

       在Java中,Integer是一个类,它封装了一个int类型的值,使得int类型的值可以被当做对象来处理。Integer类提供了许多方法来操作整数值,包括将字符串转换为整数、将整数转换为字符串、比较两个整数值等。Integer类也提供了常量MAX_VALUE和MIN_VALUE,它们表示int类型的最大值和最小值,以及常量TYPE,它表示Integer类所封装的整数类型。

       在Java中,整数类型包括int、short、byte和long,其中int类型是最常用的整数类型。Java还提供了BigInteger类,它可以表示任意长度的整数。BigInteger类提供了许多方法来操作大整数,例如加、减、乘、除、取模等。由于BigInteger类可以处理非常大的整数,因此它在科学计算和加密算法等领域中经常被使用。

创建 Integer 对象

有两种方式创建 Integer 对象:

// 通过构造函数
Integer intValue = new Integer(10);
// 通过静态方法 valueOf
Integer anotherValue = Integer.valueOf(20);

自动装箱与拆箱

Java 5 引入了自动装箱(autoboxing)和拆箱(unboxing)机制,使得基本数据类型和其对应的包装类之间的转换更加方便。

// 自动装箱
Integer num = 42;  // 相当于 Integer num = Integer.valueOf(42);
// 自动拆箱
int value = num;   // 相当于 int value = num.intValue();

常量池

对于较小的整数值,Integer 类会在内部维护一个常量池,以提高性能和节省内存。范围在(-128~127)

Integer a = 10;
Integer b = 10;
System.out.println(a == b);  // 输出 true

但是,对于较大的整数值,常量池机制不适用,需要使用 new Integer() 创建新的对象。

方法和属性

Integer 提供了许多方法,如 intValue() 用于获取 int 值,compareTo() 用于比较两个 Integer 对象的大小,等等。

MAX_VALUEMIN_VALUEInteger 类的静态属性,分别表示 int 类型的最大值和最小值。

int maxInt = Integer.MAX_VALUE;
int minInt = Integer.MIN_VALUE;

       在Java中,Integer.MAX_VALUEint 类型的最大值,其值为 2,147,483,647。当你尝试对 Integer.MAX_VALUE 进行加1操作时,会发生整数溢出。在Java中,整数溢出会导致数据从最大值溢出到最小值,形成一个循环。具体来说,Integer.MAX_VALUE + 1 的计算结果是 Integer.MIN_VALUE,即 -2,147,483,648

       这是因为 int 类型的范围是 -2^312^31 - 1,当达到最大值后再加1,会回绕到最小值。这种现象称为整数溢出或整数环绕。

异常NumberFormatException

       当字符串无法被解析为整数时,使用 Integer.parseInt() 方法会抛出 NumberFormatException 异常。因此,在解析字符串时,应该使用 try-catch 块捕获异常,或者使用 Integer.parseInt(String s, int radix) 方法指定基数。

try {
    int parsedValue = Integer.parseInt("123");
} catch (NumberFormatException e) {
    // 处理异常
}

不可变性

 Integer 类是不可变的,一旦创建就不能更改其值。任何修改 Integer 的操作都会返回一个新的 Integer 对象。

相关文章
|
3月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
100 4
|
5月前
|
Java 编译器 容器
Java——包装类和泛型
包装类是Java中一种特殊类,用于将基本数据类型(如 `int`、`double`、`char` 等)封装成对象。这样做可以利用对象的特性和方法。Java 提供了八种基本数据类型的包装类:`Integer` (`int`)、`Double` (`double`)、`Byte` (`byte`)、`Short` (`short`)、`Long` (`long`)、`Float` (`float`)、`Character` (`char`) 和 `Boolean` (`boolean`)。包装类可以通过 `valueOf()` 方法或自动装箱/拆箱机制创建。
64 9
Java——包装类和泛型
|
5月前
|
Java
java基础(10)数据类型中的整数类型
Java中的整数类型包括byte、short、int和long。整数字面值默认为int类型,加L表示long类型。整数字面值可以是十进制、八进制(0开头)或十六进制(0x开头)。小容量类型(如int)可自动转换为大容量类型(如long),但大容量转小容量需强制转换,可能导致精度损失。
71 2
|
6月前
|
Java
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
这篇文章解释了Java中`int`基本数据类型和其包装类`Integer`之间的区别,并指出在进行`==`运算时,`Integer`会拆箱为`int`类型,然后比较它们的值是否相等。
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
|
6月前
|
Java
【Java基础面试十】、何对Integer和Double类型判断相等?
这篇文章讨论了如何在Java中正确比较`Integer`和`Double`类型的值,指出不能直接使用`==`操作符比较不同类型,而应该将它们转换为相同的基本数据类型(如`double`)后进行比较。
【Java基础面试十】、何对Integer和Double类型判断相等?
|
6月前
|
Java 程序员
【Java基础面试八】、为啥要有包装类?
这篇文章解释了Java中存在包装类的原因:为了让基本数据类型具备对象的特性,使得它们可以被用作对象,以符合Java"一切皆对象"的设计理念,并简化将基本数据类型作为Object类型参数传递的问题。
【Java基础面试八】、为啥要有包装类?
|
4月前
|
Java
【Java】什么是泛型?什么是包装类
【Java】什么是泛型?什么是包装类
45 0
|
5月前
|
存储 Java 测试技术
Java零基础教学(10):包装类
【9月更文挑战第1天】Java零基础教学篇,手把手实践教学!
69 1
|
6月前
|
前端开发 Java
【前端学java】java中的包装类(12)
【8月更文挑战第10天】java中的包装类
31 1
|
6月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
54 5

热门文章

最新文章