1. 数据类型

YuJia大约 2 分钟

概览

  • 整型(4)
  • 浮点型(2)
  • 字符型(1)
  • 布尔型(1)

整型(4)

类型占用空间范围
byte1byte-27 ~ 27
long8byte-263 ~ 263
int4byte-231 ~ 231
short2byte-215 ~ 215

类型之间可以进行强制类型转换,但是向下类型强转可能会导致精度丢失,当真的需要强转时,一定要提前思考。

相关信息

当真的需要强转,可以采用如下代码来进行判断

public static void main(String[] args) {
    long longValue = 1234567890123L; // 一个long值

    // 判断是否会导致精度丢失
    if (longValue >= Integer.MIN_VALUE && longValue <= Integer.MAX_VALUE) {
        // 可以进行转换
        int intValue = (int) longValue;
        System.out.println("转换后的int值: " + intValue);
    } else {
        // 会导致精度丢失
        System.out.println("转换会导致精度丢失");
    }
}

不同进制的写法

JDK7以后的特殊写法:可以添加 _ 来让数字更好读

例如:int i = 10_000_000; // 表示1千万

二进制,0B or 0b 开头

byte b = 0b0000_1110; // 或者 0B00001110; 14

十进制, 直接写

int i = 10_000_000;

十六进制, 0x 开头

int i = 0x1F; // 前面是数字0, 不是字母O, 31

八进制,0 开头,不建议使用

int i = 012; // 前面是数字0, 10

注意

Java没有任何无符号(unsigned)表示方法

浮点型(2)

类型占用空间范围
float4byte-3.40282347E+38F ~ 3.40282347E+38F (有效位数为6~7位)
double8byte-1.79769313486231570E+308 (有效位数位15位)

浮点数计算有一个标准叫 IEEE 754
浮点数在平时计算中用得不多,浮点数运算基本全都用BigDecimal来替代了。 在Java中有一个保留关键字,strictfp,是用于计算标准浮点数的,但是在日常生活中极少使用,没有去了解。

char类型(1)

类型占用空间范围
Unicode(默认)2byte0x0000~0xFFFF
UTF-83byte-

int bytes = "中国".getBytes().length; // 6

注意

  1. 最好不要在Java程序中使用char类型,除非确实需要,否则用String类型替代;
  2. 虽然$是合法字符,但是不要在自己的代码中使用,这一般是Java编译器使用的字符;

bool类型(1)

只有truefalse两个值,占1字节