上一篇
Java中,long类型相加可直接用算术运算符“+”或Long类的sum方法,long a = 5L; long b = 3L; long c = a + b; 或Long num1 = 2L; Long num2 = 3L; Long sum = Long.sum(num1, num2
Java中,long类型的相加操作可以通过多种方式实现,以下是详细的说明和示例:

基本数据类型long的相加
- 直接使用加法运算符:对于两个
long类型的变量,可以直接使用运算符进行相加。
public class LongAddition {
public static void main(String[] args) {
long num1 = 100L;
long num2 = 200L;
long sum = num1 + num2;
System.out.println("Sum: " + sum); // 输出:Sum: 300
}
}
- 注意事项:在进行加法运算时,需要确保结果不会超出
long类型的取值范围(-2^63到2^63-1),如果结果超出这个范围,会发生溢出,导致结果不正确。
包装类Long的相加
- 自动拆箱与装箱:当使用
Long对象进行相加时,Java会自动进行拆箱操作,将Long对象转换为long基本类型,然后进行加法运算,最后再将结果装箱为Long对象。
public class LongAddition {
public static void main(String[] args) {
Long num1 = 100L;
Long num2 = 200L;
Long sum = num1 + num2;
System.out.println("Sum: " + sum); // 输出:Sum: 300
}
}
- 显式拆箱与装箱:也可以显式地进行拆箱和装箱操作。
public class LongAddition {
public static void main(String[] args) {
Long num1 = 100L;
Long num2 = 200L;
long tempSum = num1.longValue() + num2.longValue(); // 显式拆箱
Long sum = Long.valueOf(tempSum); // 显式装箱
System.out.println("Sum: " + sum); // 输出:Sum: 300
}
}
- 使用
Long.sum()方法:Long类提供了一个静态方法sum(),可以用于两个Long对象的相加。
public class LongAddition {
public static void main(String[] args) {
Long num1 = 100L;
Long num2 = 200L;
Long sum = Long.sum(num1, num2);
System.out.println("Sum: " + sum); // 输出:Sum: 300
}
}
处理大数相加
当两个long类型的数值相加可能超出long类型的取值范围时,可以使用BigDecimal或BigInteger类来处理大数相加。
- 使用
BigDecimal:
import java.math.BigDecimal;
public class LongAddition {
public static void main(String[] args) {
long num1 = 9223372036854775807L; // Long.MAX_VALUE
long num2 = 1L;
BigDecimal bdNum1 = new BigDecimal(num1);
BigDecimal bdNum2 = new BigDecimal(num2);
BigDecimal sum = bdNum1.add(bdNum2);
System.out.println("Sum: " + sum); // 输出:Sum: 9223372036854775808
}
}
- 使用
BigInteger:
import java.math.BigInteger;
public class LongAddition {
public static void main(String[] args) {
long num1 = 9223372036854775807L; // Long.MAX_VALUE
long num2 = 1L;
BigInteger bigIntNum1 = BigInteger.valueOf(num1);
BigInteger bigIntNum2 = BigInteger.valueOf(num2);
BigInteger sum = bigIntNum1.add(bigIntNum2);
System.out.println("Sum: " + sum); // 输出:Sum: 9223372036854775808
}
}
归纳表格
| 相加方式 | 示例代码 | 说明 |
|---|---|---|
基本数据类型long相加 |
long sum = num1 + num2; |
直接使用加法运算符,注意溢出问题。 |
包装类Long相加(自动拆箱与装箱) |
Long sum = num1 + num2; |
Java自动进行拆箱和装箱操作。 |
包装类Long相加(显式拆箱与装箱) |
long tempSum = num1.longValue() + num2.longValue(); Long sum = Long.valueOf(tempSum); |
显式进行拆箱和装箱操作。 |
使用Long.sum()方法 |
Long sum = Long.sum(num1, num2); |
Long类提供的静态方法,简化代码。 |
使用BigDecimal处理大数相加 |
BigDecimal sum = new BigDecimal(num1).add(new BigDecimal(num2)); |
适用于需要高精度计算的场景。 |
使用BigInteger处理大数相加 |
BigInteger sum = BigInteger.valueOf(num1).add(BigInteger.valueOf(num2)); |
适用于整数大数相加的场景。 |
FAQs
-
Q:
long类型和Long类型在相加时有什么区别?
- A:
long是基本数据类型,直接使用加法运算符进行相加;而Long是包装类,在相加时会先进行拆箱操作,转换为long基本类型,然后再进行加法运算,最后再将结果装箱为Long对象。
- A:
-
Q: 什么时候需要使用
BigDecimal或BigInteger来处理long类型的相加?
- A: 当两个
long类型的数值相加可能超出long类型的取值范围时,或者需要进行高精度计算时,应该使用BigDecimal或BigInteger来处理,这样可以
- A: 当两个
