Appearance
常用类
BigInteger 🚀
BigInteger
是Java中的一个类,属于 java.math
包。它用于处理任意大小的整数,大小仅受可用内存的限制。BigInteger可以表示的数值范围远大于Java的基本整数类型(如int和long),能够处理非常大的数字,适用于需要大数运算的场景。
BigInteger内部使用一个int[]数组来模拟一个非常大的整数。它提供了多种构造函数,最常用的是通过字符串构造器BigInteger(String val)
,可以将十进制字符串转换为BigInteger类型。此外,BigInteger还支持进制转换,可以通过toString(int radix)
方法指定返回的字符串的进制位数12。
常用方法和属性
BigInteger类提供了多种数学运算方法,包括:
- 加法:
add(BigInteger val)
- 减法:
subtract(BigInteger val)
- 乘法:
multiply(BigInteger val)
- 除法:
divide(BigInteger val)
- 取余:
mod(BigInteger val)
- 绝对值:
abs()
- 最大公约数:
gcd(BigInteger val)
- 次方:
pow(int exponent)
- 比较:
compareTo(BigInteger val)
示例代码
以下是一个简单的示例,展示如何使用BigInteger进行基本的数学运算:
java
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import java.math.BigInteger;
@Slf4j
public class MyTest {
@Test
public void test() {
BigInteger a = new BigInteger("10");
BigInteger b = new BigInteger("3");
log.info("add >>> " + a.add(b)); // 加法
log.info("add(radix=2) >>> " + a.add(b).toString(2)); // 加法
log.info("subtract >>> " + a.subtract(b)); // 减法
log.info("multiply >>> " + a.multiply(b)); // 乘法
log.info("divide >>> " + a.divide(b)); // 除法
log.info("mod >>> " + a.mod(b)); // 取余
log.info("pow >>> " + a.pow(2)); // 次方
}
}
输出
16:46:06.733 [main] INFO MyTest -- add >>> 13
16:46:06.739 [main] INFO MyTest -- add(radix=2) >>> 1101
16:46:06.739 [main] INFO MyTest -- subtract >>> 7
16:46:06.739 [main] INFO MyTest -- multiply >>> 30
16:46:06.739 [main] INFO MyTest -- divide >>> 3
16:46:06.739 [main] INFO MyTest -- mod >>> 1
16:46:06.739 [main] INFO MyTest -- pow >>> 100
Integer 🚀
Java 中的 Integer
类是 Java 提供的一个包装类,用于将基本数据类型 int
的值包装在一个对象中。这样,int
就可以被视为对象,并可以与其他对象一起使用,参与面向对象的编程。Integer
类位于 java.lang
包中,因此在使用时无需显式导入。
主要特点和用途
- 包装基本类型:
Integer
类允许将int
类型的数据作为对象来处理,使得基本类型的数据可以作为对象存储在集合(如List
、Set
)中,或者作为其他对象的属性。 - 提供实用方法:
Integer
类提供了多种静态方法来处理int
类型的数据,例如比较两个整数值的compare(int x, int y)
方法,将字符串转换为整数的parseInt(String s)
方法等。 - 自动装箱和拆箱:Java 5 引入了自动装箱(autoboxing)和拆箱(unboxing)机制,允许 Java 编译器在需要时自动地将
int
转换为Integer
,或将Integer
转换为int
。这简化了代码,减少了手动转换的需要。 - 处理空值:使用
Integer
而不是int
可以在需要表示空值(null)时使用null
,而基本类型int
不能表示空值。
常用方法
- 构造方法:
Integer(int value)
:根据指定的int
值创建一个新的Integer
实例。Integer(String s)
:将字符串参数解析为十进制整数,并创建一个表示该值的新的Integer
实例。
- 静态方法:
int compare(int x, int y)
:比较两个整数的值。Integer valueOf(int i)
:返回一个表示指定的int
值的Integer
实例。Integer valueOf(String s)
:返回保存指定的字符串值的Integer
对象。int parseInt(String s)
:将字符串参数解析为十进制整数。int parseInt(String s, int radix)
:使用指定的基数将字符串参数解析为整数。
- 实例方法:
int intValue()
:以int
类型返回该Integer
的值。String toString()
:返回表示该Integer
值的字符串。
示例代码
java
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
@Slf4j
public class MyTest {
@Test
public void test() {
// 自动装箱:int 转换为 Integer
int num = 10;
Integer integer = num;
// 自动拆箱:Integer 转换为 int
int anotherNum = integer;
// 使用 Integer 的静态方法
Integer intFromString = Integer.valueOf("123");
int parsedInt = Integer.parseInt("456");
int compareResult = Integer.compare(3, 5); // Returns: the value 0 if x == y; a value less than 0 if x < y; and a value greater than 0 if x > y
String binaryStr = Integer.toString(8, 2); // Returns: a string representation of the argument in the specified radix.
// 使用 Integer 的实例方法
int intValue = intFromString.intValue();
String stringValue = intFromString.toString();
System.out.println("Integer 值: " + intFromString);
System.out.println("转换后的 int 值: " + intValue);
System.out.println("解析的 int 值: " + parsedInt);
System.out.println("比较结果: " + compareResult);
System.out.println("8转为二进制字符串: " + binaryStr);
System.out.println("Integer 的字符串表示: " + stringValue);
}
}
输出
Integer 值: 123
转换后的 int 值: 123
解析的 int 值: 456
比较结果: -1
8转为二进制字符串: 1000
Integer 的字符串表示: 123
这段代码展示了如何使用 Integer
类及其方法,包括自动装箱和拆箱、使用静态方法创建 Integer
对象和解析字符串为整数,以及使用实例方法获取 Integer
对象的 int
值和字符串表示。