API文档中写道
规范中关于溢出的所有细节都被忽略了,因为BigIntegers会尽可能地变大以适应操作结果。
这是否意味着BigInteger永远不会溢出,只要您有足够的内存?如果是这样,为什么让一些“类型”溢出而让一些不溢出?
随着语言的发展,它是否会更倾向于隐藏程序员无法处理的溢出机制的类型?
API文档中写道
规范中关于溢出的所有细节都被忽略了,因为BigIntegers会尽可能地变大以适应操作结果。
这是否意味着BigInteger永远不会溢出,只要您有足够的内存?如果是这样,为什么让一些“类型”溢出而让一些不溢出?
随着语言的发展,它是否会更倾向于隐藏程序员无法处理的溢出机制的类型?
假设您有足够的内存来处理它,BigInteger将永远不会溢出。
回答您关于我们为什么让一些类型溢出而不让其他类型溢出的问题:
BigInteger不是真正的类型,它是一个类。它是一个包装类,旨在为您提供与int相同的功能,但允许您使用任何需要的大数,而不必担心溢出。
类型会溢出,因为它们只是几个字节(确切数量取决于类型)的内存,一旦这小小的内存溢出,数字也会溢出。
除非特别设计为这样(或者资源用尽),否则没有类会“溢出”。类是定义了足够的内存容纳其所有内容,这其中大部分是对其他类或其他数据结构的引用。
BigInteger永远不会溢出!它的大小是任意的,因此它可以容纳与您的内存(和Java堆)一样大的数字。
正确的,BigInteger永远不会溢出,它使用软件操作和动态分配来存储任意大小的数字。
就像计算机中的所有事物一样,“任意大小”是指“直到在底层系统上耗尽资源为止”的另一种说法。
int
支持的,那么它显然会在Integer.MAX_VALUE
处溢出。原始类型有明确的溢出边界,而对象的溢出边界取决于它们的支持方式/编程方式。