首页 / Java 入门教程 / 基本数据类型

Java 入门教程

基本数据类型

本教程共 100 篇 · 第 11 篇 · 更新于 2026-08-05 · 约 5 分钟阅读

JavaJava 入门教程基本数据类型primitiveintdoublebooleanchar

本节目标:搞清楚 Java 有哪些内置的基本数据类型,各自占多大内存、能存多大范围,以及写字面量时的各种小写法。

先声明,再用

Java 是静态类型语言。这句话的意思是:每个变量在用之前,必须先说清楚它是什么类型。

比如你要存一个整数,得先写 int age;,告诉编译器「age 是个整数」。之后 age 里就只能装整数,塞别的东西编译器不让。

这种「类型先行」的设计,能在写代码阶段就拦下一大批错误。代价是你得多打几个字,但换来的是稳。

除了 8 种下面要讲的基本类型,Java 还有一类引用类型(比如 String、数组、你自己写的类)。两者最大的区别:基本类型直接存值,引用类型存的是「指向对象的地址」。本章只聊基本类型。

八种基本类型一览

Java 内置了 8 种基本数据类型,分成四类:

类别类型位数取值范围
整数byte8 位-128 ~ 127
整数short16 位-32768 ~ 32767
整数int32 位约 ±21 亿
整数long64 位非常大
浮点float32 位小数,精度有限
浮点double64 位小数,默认用这个
字符char16 位单个 Unicode 字符
布尔boolean1 位true / false

日常写业务,intdouble 用得最多。long 在数量很大(如时间戳、文件大小)时才上。byteshort 多在省内存的数组里出现,初学基本碰不到。

整数类型怎么写

byte b = 100;
short s = 10000;
int i = 100000;
long n = 10000000000L;   // 注意末尾的 L

long 类型的字面量必须在数字后加 L(推荐大写,小写 l 容易和 1 看混)。不加的话,数字默认是 int,超过 int 范围就报错。

Warning

忘了给 longL 是新手高频错误。比如 long x = 3000000000;(30 亿超过 int 上限约 21 亿)会直接编译报错。补上 L 即可。

浮点类型怎么写

带小数点的数默认是 double。要表示 float,得在数字后加 F

double d = 3.14;        // 默认就是 double
float f = 3.14F;        // 必须加 F,否则类型不匹配
Note

浮点数不能用来精确表示钱。比如 0.1 + 0.2 在浮点里并不严格等于 0.3。涉及金额要用 java.math.BigDecimal。这是后面会专门讲的内容,现在先记住「别用 float/double 算钱」。

字符 char 与布尔 boolean

char 存单个字符,用单引号包起来:

char c = 'A';
char zh = '中';

Java 的 char 是 16 位 Unicode,所以一个汉字也能直接存。

boolean 只有两个值,用来表示「真 / 假」:

boolean isOpen = true;
boolean loggedIn = false;

它常用于条件判断。注意 Java 里 boolean 不能当成 01 用——if (1) 这种写法在 Java 是非法的,必须写成 if (flag)

两个容易忽略的点

char 骨子里是个数字。 它存的其实是对应的 Unicode 编码值,所以能直接参与数学运算:

char c = 'A';      // 'A' 的编码是 65
c = (char) (c + 1);   // 65 + 1 = 66,对应 'B'
System.out.println(c);   // 输出 B

大写字母 AZ 的编码是连续的 6590,所以这段能顺推到下一个字母。做这种运算时 char 会先提升成 int,加完还得强转回 char

boolean 不能和其他类型互转。 很多语言里 0 代表假、非 0 代表真,但 Java 不行。boolean 就是独立的类型,既不能把 int 赋给 boolean,也不能把 boolean 当数字用。这是故意设计成这样,避免把「真假」和「数字」混为一谈的坑。

字面量的花样写法

数字字面量不止一种写法,掌握几个常用的就够。

十六进制0x 前缀,二进制0b 前缀(Java 7 引入):

int dec = 26;       // 十进制 26
int hex = 0x1a;     // 十六进制,等于 26
int bin = 0b11010;  // 二进制,等于 26

科学计数法e

double d = 1.234e2;   // 等于 123.4

下划线分隔(Java 7 引入),让长数字更好读,编译器会忽略:

long card = 1234_5678_9012_3456L;
int bits = 0b1010_1100;
Tip

下划线只能放在数字之间,不能开头、结尾,也不能紧贴小数点或 L/F 后缀。写长数字时善用下划线,可读性提升明显。

默认值的小差别

如果你声明一个字段(类的成员变量)却没给初值,编译器会给它一个默认值:数字类型是 0booleanfalsechar\u0000

局部变量(方法里声明的)没有默认值。不赋值就用,编译器直接报错。

public class DefaultDemo {
    int fieldAge;   // 字段,默认 0

    public void test() {
        int localAge;        // 局部变量
        // System.out.println(localAge);  // 报错:可能尚未初始化
    }
}

到底该用哪个类型

面对这么多类型,初学最容易纠结「我该选哪个」。给个简单决策:

  • 存整数,默认用 int;数字特别大(如毫秒时间戳)才上 long
  • 存小数,默认用 double。除非你明确知道在做什么,否则别碰 float
  • 存单个字符用 char;存一段文字用 String(引用类型,后面讲)。
  • 存真假用 boolean
  • byteshort 基本只在「超多数据、要省内存的数组」里才出现,初学阶段可以忽略。

记住:先用 intdouble 打天下,其它的等真遇到场景再说。类型选错大不了改一行,不必在开始就过度纠结。

Note

本章的 8 种基本类型都不是对象。Java 里还有一套对应的「包装类型」(如 Integer 对应 intDouble 对应 double),用于在需要对象的场合使用。它们到后面讲集合、泛型时会出现,现在你只需知道「基本类型存值、轻量高效」就够了。

小结

Java 是静态类型语言,变量必须先声明类型。8 种基本类型分整数、浮点、字符、布尔四类。

long 字面量加 Lfloat 字面量加 F;浮点别用于金额计算。

字面量支持十六进制 0x、二进制 0b、科学计数 e、下划线分隔。字段有默认值,局部变量必须显式初始化。