Java 是一种强引用类型语言。这就意味着必须为每一个变量声明一种类型。在Java 中,一共有8种基本类型(primitive type),其中有4种整型、2种浮点类型、1种用于表示真值的boolean类型。

注释:Java有一个能够表示任意精度的算术包,通常被称为“大数值”(big number)。虽然被称为大数值,但它并不是一种新的Java类型,而是一个Java对象。

1字节 = 8bit

4种整型

类型存储大小比特最小值最大值默认值
byte1字节8bit-128(-2^7)127(2^7-1)0
short2字节16bit-3 2768(-2^15)32767(2^15 - 1)0
int4字节32bit-21 4748 3648(-2^31)21 4748 3647(2^31 - 1)0
long8字节64bit-922 3372 0368 5477 5808(-2^63)922 3372 0368 5477 5807(2^63 -1)0L

2种浮点类型

类型存储大小比特取值范围默认值
float4字节32bit大约 ± 3.402 823 47E+38F(有效位数位6 ~ 7位)0.0f
double8字节64bit大约 ± 1.797 693 134 862 315 70E+308(有效位数为15位)0.0d

1种用于表示Unicode编码的字符单元类型

类型存储大小比特最小值最大值默认值
char2字节16bit\u0000(十进制等效值为 0)\uffff(即为 65535)可以储存任何字符

1种用于表示真值的boolean类型

类型存储大小比特备注默认值
boolean0.125字节1bit只有两个取值:true 和 falsefalse

大数值(特殊)

  1. java.math.BigInteger
public BigInteger add(BigInteger other) //和
public BigInteger subtract(BigInteger other) //差
public BigInteger multiply(BigInteger other) //积
public BigInteger divide(BigInteger other) //商
public BigInteger mod(BigInteger other) //余数
public int compareTo(BigInteger other) //如果这个大整数与另一个大整数other相等,返回0;如果这个大整数小于另一个大整数other,返回负数;否则,返回正数。
public static BigInteger valueof(long x) //返回值等于x的大整数
  1. java.math.BigDecimal
public BigDecimal add(BigDecimal value); //加法
public BigDecimal subtract(BigDecimal value); //减法
public BigDecimal multiply(BigDecimal value); //乘法
public BigDecimal divide(BigDecimal value); //除法
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode); //第一参数表示除数, 第二个参数表示小数点后保留位数,第三个参数表示舍入模式,只有在作除法运算或四舍五入时才用到舍入模式
public int compareTo(BigDecimal other); //如果这个大实数与另一个大实数相等,返回0;如果这个大实数小于另一个大实数,返回负数;否则,返回正数。
public static BigDecimal valueOf(long x);
public static BigDecimal valueOf(long x,int scale); //返回值为x或x/10^scale的一个大实数。

舍入模式:

  1. ROUND_CEILING //向正无穷方向舍入
  2. ROUND_DOWN //向零方向舍入
  3. ROUND_FLOOR //向负无穷方向舍入
  4. ROUND_HALF_DOWN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5
  5. ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN
  6. ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6(即四舍五入)
  7. ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式
  8. ROUND_UP //向远离0的方向舍入

需要对BigDecimal进行截断和四舍五入可用setScale方法,例:

public static void main(String[] args)
    {
        BigDecimal a = new BigDecimal("4.5635");
        a = a.setScale(3, RoundingMode.HALF_UP); //保留3位小数,且四舍五入
        System.out.println(a);
    }