绊夏微凉

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java基本数据类型

整数类型

byte 1个字节 默认值:0 取值范围:-2 ^ (8 - 1) ~ 2 ^ (8 - 1) - 1
short 2个字节 默认值:0 取值范围:-2 ^ (16 - 1) ~ 2 ^ (16 - 1) -1
int 4个字节 默认值: 0 取值范围:-2 ^ (32 - 1) ~ 2 ^ (32 -1) -1
long 8个字节 默认值: 0L 取值范围:-2 ^ (64 - 1) ~ 2 ^ (64 - 1) -1

浮点类型

float 4个字节 默认值:0.0f
double 8个字节 默认值:0.0

布尔类型

boolean 1个位 默认值:false

字符型

char 2个字节 默认值:' '

上述说的1个字节代表8个位

疑惑

疑问:为什么byte的最小值是-2 ^ (8 - 1),而不是-2 ^ 8
答:在存储时最高位作为符号位

疑问:为什么byte的最大值是2 ^ (8 - 1) -1,而不是2 ^ (8 - 1)
答:当符号位为0时,0也在其中

注意事项


  // long类型建议在数值后面加L
  long n = 1L;

  // int类型超过21亿得考虑内存溢出的问题
  int i = 2000000000;
  int j = i * 5;
  System.out.println(j); // 1410065408

  // i * 5 先得出int类型再转化long
  long l = i * 5;
  System.out.println(l); // 1410065408
  // 解决方法
  long l1 = (long) i * 5;
  System.out.println(l1); // 10000000000

  float f = 0.1; // 错误
  float f2 = 0.1f; // 正确

  // 浮点型 有限的离散数据,舍入误差
  float f1 = 0.1f;
  double d1 = 0.1;
  System.out.println(f1 == d1); //false

  double d2 = 232323232323232323.0;
  double d3 = d1 + 1;
  System.out.println(d2 == d3); // true

  // 综上所述 金额的表示推荐使用BigDecimal代替浮点类型
posted on 2021-03-03 11:51  绊夏微凉  阅读(67)  评论(0)    收藏  举报