Skip to content

常用类

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 包中,因此在使用时无需显式导入。

主要特点和用途

  1. 包装基本类型‌:Integer 类允许将 int 类型的数据作为对象来处理,使得基本类型的数据可以作为对象存储在集合(如 ListSet)中,或者作为其他对象的属性。
  2. 提供实用方法‌:Integer 类提供了多种静态方法来处理 int 类型的数据,例如比较两个整数值的 compare(int x, int y) 方法,将字符串转换为整数的 parseInt(String s) 方法等。
  3. 自动装箱和拆箱‌:Java 5 引入了自动装箱(autoboxing)和拆箱(unboxing)机制,允许 Java 编译器在需要时自动地将 int 转换为 Integer,或将 Integer 转换为 int。这简化了代码,减少了手动转换的需要。
  4. 处理空值‌:使用 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 值和字符串表示。

更新时间: