【Java专题】基本数据类型

本篇记录八个基础数据类型,引用数据类型后续安排。

类型总览

flowchart LR
A[数据类型] --> B[基础数据类型]
B --> F[数值]
B --> D[字符 char]
B --> E[布尔 boolean]
F --> J[整数类型]
F --> K[浮点数类型]
J --> byte
J --> short
J --> int
J --> long
K --> float
K --> double
A --> C[引用数据类型]
C --> G[类 class]
C --> H[接口 interface]
C --> I[数组 array]

整数类型

类型 占用存储空间 表示范围
byte 1字节 2-7 ~ 27 - 1 (-128 ~ 127)
short 2字节 2-15 ~ 215 - 1 (-32768 ~ 32767)
int 4字节 2-31 ~ 231 - 1
long 8字节 2-64 ~ 264 - 1
  • 引用数据类型占据四个字节(指向对象的地址)
  • 一个字节byte对应八个比特位bit
  • 整型常量默认类型是int,所以直接使用大于 2147483647 的数字会报错
  • 数字后边加L表示long类型的数字,如3000000000L

整型类型的四种表示形式

十六进制整数,以0x开头
十进制整数
八进制整数,以0开头
二进制整数,以0b或者0B开头

浮点数类型

类型 占用存储空间 表示范围
单精度浮点数 float 4字节 -3.403E38 ~ 3.403E38
双精度浮点数 8字节 -1.798E308 ~ 1.798E308
  • float 尾数可以精确到七位有效数字
  • double 精度约为 float 到两倍,绝大多数场景都采用 double 类型
  • 浮点数不精确,用来比较会有误差,高精度场景使用BigDecimal进行运算和比较
  • 浮点常量默认类型是double
  • 小数后边加F / f 表示float类型的浮点数,如0.3F

浮点类型的两种表示形式

十进制计数法 -> 3.14
科学计数法 -> 3.14e10 3.14E-9 3.14E10

字符类型

  • javachar用来表示在unicode编码表中的字符
  • 一个char变量/常量只能表示一个字符
  • String 是内置类,不是基础数据类型
  • 单引号抱起来表示char, 双引号包起来表示String

布尔类型

  • 只有两个值 true / false

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class TestVars {
public static void main(String[] args) {
int a = 100;
int b = 0100;
int c = 0b100;
int d = 0x100;
System.out.println(a); // 100
System.out.println(b); // 64
System.out.println(c); // 4
System.out.println(d); // 256

long e = 3000000000L; // 初始值不加L会报错 错误: 整数太大
System.out.println(e);

byte f = 127; // 初始值超过127会报错 错误: 不兼容的类型: 从int转换到byte可能会有损失
short h = 32767; // 初始值超过32767会报错 错误: 不兼容的类型: 从int转换到short可能会有损失
System.out.println(f);
System.out.println(h);

double d1 = 3.14; // 十进制计数法
double d2 = 3.14e1; // 科学计数法
double d3 = 31.4 / 10;

float f1 = 3.14f; // 初始值不加 F/f 会报错 错误: 不兼容的类型: 从double转换到float可能会有损失
System.out.println(d2); // 31.4
System.out.println(d1 == f1); // false 不精确
System.out.println(d1 == d3); // false 不精确

boolean b1 = true;
boolean b2 = false;
}
}