【问题标题】:BigInteger +- operations?BigInteger +- 操作?
【发布时间】:2012-02-22 14:18:46
【问题描述】:

是否有可能以某种方式进行这样的 +- 操作?

BigInteger a = new BigInteger("1");
BigInteger b = new BigInteger("2");
BigInteger result;

a+=b;
//result = a.add(b);

ty

【问题讨论】:

标签: java biginteger


【解决方案1】:

总之,没有。 Java 中没有运算符重载,BigInteger 不是特殊类型之一,编译器魔法支持++= 等运算符。

【讨论】:

  • 再一次,不变性不是不支持算术运算符的语言的原因。 String 也是不可变的,+= 运算符有语言支持。例如:String foo = "foo"; foo += "bar"; 您正在更改引用 foo,而不是它指向的对象的内容。
【解决方案2】:

很遗憾没有。 Java 语言不支持运算符重载。该语法仅适用于通过自动装箱的其他数字基元包装器,这对 BigInteger 没有意义,因为没有等效的基元。

【讨论】:

    【解决方案3】:

    不。 BigIntegers 是不可变的,所以你不能在创建后更改a 的值。而且通常的数学运算符也不能对它们起作用,所以你也不能用a += b

    你需要做你已经注释掉的事情——result = a.add(b);

    【讨论】:

    • 不变性与问题无关。基元也是不可变的,但您可以对它们使用算术运算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    相关资源
    最近更新 更多