Java 如何对能够';不能存储在一个变量中

Java 如何对能够';不能存储在一个变量中,java,integer,Java,Integer,在Java中,我希望能够对非常大的整数(不能长时间存储)执行操作,我该如何做呢 处理这一问题的最佳方法是什么,表现良好?我应该创建包含多个长变量的自己的数据类型吗 例如: public class MyBigInteger{ private long firstPart; private long secondPart; ... } public MyBigInteger add(long a, long b){ MyBigInteger res; /

在Java中,我希望能够对非常大的整数(不能长时间存储)执行操作,我该如何做呢

处理这一问题的最佳方法是什么,表现良好?我应该创建包含多个长变量的自己的数据类型吗

例如:

public class MyBigInteger{
    private long firstPart;
    private long secondPart;

   ...
}

public MyBigInteger add(long a, long b){
    MyBigInteger res;

    // WHAT CAN I DO HERE, I guess I could do something with the >> << operators, but I've never used them!

    return res;
}
公共类MyBigInteger{
私人长第一部分;
私人长第二部分;
...
}
公共MyBigInteger添加(长a、长b){
MyBigRes;

//在这里我能做些什么,我想我可以用>>做些什么。你应该检查java类。它完全满足你的需要。

你有没有考虑过标准库类,它支持任意精度的整数?

如果数字很长,我建议将它们存储在一个链接列表中(每个节点一个数字)或者一个文件(在这种情况下,io访问延迟会出现),然后进行一位一位的加法,这是我们在二年级时手动进行的。

如果您确实需要高性能,BigInteger/BigDecimal不会剪切它。我使用了这个库,它对我来说非常有用。

应该使用BigInteger.valueOf(long)而不是先转换成字符串,然后再转换成BigInteger。@ColinD我记不清所有的API:)哈哈,我喜欢你在使用“MyBigInteger”时如此接近,但到目前为止。如果您要编写自己的,您可以看看BigInteger是如何工作的,并根据您的需要对其进行定制。有趣的是,他们的Apinteger类扩展了Aportional和Apfloat。我想知道他们是如何通过这种层次结构实现高性能的。
import java.math.BigInteger;

public class BigIntegerTest {

    public BigInteger add(long a, long b){
        BigInteger big1 = new BigInteger(Long.toString(a));
        BigInteger big2 = new BigInteger(Long.toString(b));

        return big1.add(big2);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new BigIntegerTest().add(22342342424323423L, 234234234234234234L));
    }

}