Java基本数据类型

数字

整数

Integer / int

  • 32位有符号整数,具体范围是:-231 (-2147483648) ~ 231 -1 (2147483647)
  • 大致范围:正负2*109 不用管溢出,1010 不行
  • Integer接受null, int不接受
  • Integer需要是用equals判断相等(直接用==会判断是否是同一个对象,而非是否数值相等),但>=与<=可以可以正常使用
  • Integer.parseInt返回int,Integer.valueOf返回Integer

Long / long

  • 64位有符号整数,具体范围是 -263 (-9223372036854775808) ~ 263 -1 (9223372036854775807)
  • 大致范围:-9*1018 ~ 9*1018
  • 默认值是0L

Byte / byte

  • 8位有符号整数,具体范围是 -128 ~ 127

Short / short

  • 16位有符号整数,具体范围是-32768 ~ 32767

小数

Float / float

  • 有符号32位IEEE754标准的浮点数
  • 符号位(s):1,指数位(E):8,尾数位(M):23
  • 值为 (-1)S * 2E-127 * (1.M)
  • 取值范围:负无穷, -2128 ~ -2-149 ,0,2-149 ~ 2128 ,正无穷
  • 范围不连序,无法表示非常接近0的数
  • 精度有限,7~8位有效位(7准确,8大部分准确)

Double / double

  • 有符号64位IEEE754标准的浮点数
  • 符号位(s):1,指数位(E):11,尾数位(M):52
  • 值为 (-1)S * 2E-1023 * (1.M)
  • 区直单位:负无穷, -21024 ~ -2-1074 ,0,2-1074~ 21024 ,正无穷
  • 精度有限,能保证15~16有效位

其它

Character / char

  • 16位Unicode,范围是0~65535
  • 最小 \u0000
  • 最大 \uffff

Boolean / boolean

  • true / false
  • 使用Boolean(带null)的情况,需要在List, Set, Map等中使用时;或以null表示此值是未知的(如,未填写、还没有进行过判断)

Ref: