大数相乘这个点,在java里算是比较冷门的知识了吧,我一开始也没当回事,然而今年腾讯实习生春招笔试题告诉我实在是too young,在编程题里就有一道大数相乘的题目,结果当时我就懵逼了。现在补一下吧。
BigInteger不是基本数据类型之一,它其实更像String,是Java里的一个类,然而它的初始化方式却没有String那么方便可以直接赋值,而是跟其他自定义的类一样,要调用它的构造器进行初始化。这个类的取值范围原则上是没有上限的,取决于你的计算机的内存,它的构造器有以下几种:
BigInteger构造器
这里面最好用的应该是BigInger(String val)这个构造器吧,可以直接将十进制的字符串格式变成大整数,举例: BigInteger a=new BigInteger(“2222222222222222”); 也可以指定进制: BigInteger v1 = new BigInteger("a846146bbfc6d7bf", 16);
既然不是基本数据类型,所以大数的加减乘除也不能使用+、-、*、/这些运算符号,Java也没有对这些运算符号进行重定义,取而代之的是用一些方法来代替,比如add()、subtract()、mutiply()、divide()这四种方法,它们的使用举例如下: