就像你能够到的最大高度一样,java中的数据类型所能表示的数也有其最大限度。
那我们怎么知道其所能表示的最大数和最小数呢?问得好!java的开发者们为每种数据类型封装了一个类,类中的每个方法或者变量都是static,其中就包含了这种数据类型所能表示的最大值和最小值。
首先,请出主角1,int数据类型。
它所对应的封装数据类型是Integer。先来看一下前几行源码。
public final class Integer extends Number implements Comparable<Integer> {
/**
* A constant holding the minimum value an {@code int} can
* have, -2<sup>31</sup>.
*/
@Native public static final int MIN_VALUE = 0x80000000;
/**
* A constant holding the maximum value an {@code int} can
* have, 2<sup>31</sup>-1.
*/
@Native public static final int MAX_VALUE = 0x7fffffff;
}
可以看到这里面列出了最大值和最小值。可以直接调用Integer.MAX_VALUE获得最大值,也可以直接从源码获得。0x表示16进制,7fffffff表示231 -1。
另外,如果想表示非常大非常大的整数或者是浮点数,该怎么办呢?
java里面提供了两个类,分别如下:
BigDecimal:可以表示任意大的浮点数。
BigInteger:可以表示任意大的整数。
现在拿BigInteger来看一下。
先看一下所在位置:
再看一下继承结构:
先来个最简单的使用,直接使用构造函数创建一个非常大的BigInteger对象:
输出如下:
需要注意的一点是,BigInteger可以表示很大的数,但是它的加减乘除也只能在BigInteger之间进行,而且必须使用其所提供的方法,比如求大数的绝对值:
BigInteger类里面提供了很多方法,包括大数之间进行加减乘除的方法,等等,还有一些其他的方法。BigDecimal是一样的。
待续。。