数据类型

1. 分类

  • 基本类型

    1. 数值类型

      1. 整数类型

        byte 占1个字节

        short 占2个字节

        int 占4个字节

        long 占8个字节

      2. 浮点类型

        float 占4个字节

        double 占8个字节

      3. 字符类型

        char 占2个字节

    2. 布尔类型

      boolean 占1,只有true和false。

  • 引用类型

    1. 接口
    2. 数组

2. 默认值

  1. 整型默认值0
  2. 浮点型默认值0.0
  3. boolean和char需指定默认值
  4. String默认值为null

3. 数值表示

  1. 二进制0b

    如:0b1

  2. 八进制0

    如:010

  3. 十进制

    如:10

  4. 十六进制0x

    如:0x10

4. 特殊表示

  1. long值后带L

    如:141231L

  2. float值后带F

    如:0.12F

5. 位运算符

  1. & 同1为1,其余为0
  2. |同0为0,其余为1
  3. ^相同为0,不同为1
  4. !按位取反,1变0,0变1
  5. <<左移,数字扩大两倍
  6. >>右移,数字缩小两倍

6. 扩展

  1. char字符都可以强制转换为int,本质上是Unicode

  2. int转char的时候需要数字前加\u,如:

    char c3 = '\u0061';    //a
    
  3. 字符串与数值拼接

    System.out.println(""+10+20);    //1020
    System.out.println(10+20+"");    //30
    

7. 坑

7.1. 浮点数比较会出现问题

float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);    //false

float d1 = 23232323232323f;
float d2 = d1 + 1;
System.out.println(d1 == d2);    //true

解决方法:

使用BigDecimal类进行比较。

Copyright © rootwhois.cn 2021-2022 all right reserved,powered by GitbookFile Modify: 2022-05-18 16:24:00

results matching ""

    No results matching ""