基本类型与运算
约 1018 字大约 3 分钟
布欧-Lewyon
2026-05-14
首页 › Java › Java 程序基本结构 › 基本类型与运算
本节覆盖 Java 的基本类型、常见运算符、字符串与数组的入门用法,以及包装类与自动装箱拆箱的直觉,便于写出简单的控制台程序。
基本类型一览
| 类型 | 大致含义 | 默认值(字段上) |
|---|---|---|
boolean | 真 / 假 | false |
byte | 8 位有符号整数 | 0 |
short | 16 位有符号整数 | 0 |
int | 32 位有符号整数 | 0 |
long | 64 位有符号整数 | 0L |
char | 16 位 Unicode 字符 | '\u0000' |
float | 32 位 IEEE 754 浮点 | 0.0f |
double | 64 位 IEEE 754 浮点 | 0.0d |
局部变量使用前必须赋值,不存在「未初始化的默认值」一说;上表默认值仅适用于类的字段在构造完成前的语义。
整数字面量默认为 int,若要 long 需加后缀 L(如 42L)。浮点字面量默认为 double,float 需加 f(如 3.14f)。数字间可插入下划线提高可读性:1_000_000。
类型转换
不同类型的数值在参与运算或赋值时,编译器或运行时会进行类型转换。Java 只允许两种方向的转换:拓宽自动完成,收窄需显式强制。
拓宽(widening):小范围赋给大范围(如 int → long)通常自动完成,因为不会丢失信息。 收窄(narrowing):大范围到小范围需显式强制转换,可能丢失精度或溢出。
long x = 1000L;
int y = (int) x;char 与数值类型之间的转换按 Unicode 码点理解,业务中应谨慎混用。
运算符(常用子集)
- 算术:
+ - * / %。整数相除截断小数部分;取模%符号规则与数学约定一致(注意负数场景)。 - 比较:
== != < > <= >=。对基本类型比较的是值;对引用类型用==比较的是引用是否同一对象(字符串内容比较见下文)。 - 逻辑:
&& || !,具有短路行为:a && b在a为假时不再求值b。 - 三元:
cond ? a : b。 - 自增自减:
++、--前缀与后缀对「表达式的值」有影响,复杂表达式里建议拆开写以提高可读性。
字符串 String
String是不可变类型:任何「修改」都会产生新对象。- 字面量用双引号;常用 API 包括
length()、charAt(int)、substring(...)、isEmpty()等。 - 内容相等应使用
equals(必要时配合Objects.equals防空),不要用==比较两个字符串实例的内容。
String s = "hello";
System.out.println(s.equals("hello")); // true大量拼接优先考虑 StringBuilder(后续章节再展开)。
数组
- 声明与初始化示例:
int[] a = new int[3]; // 长度为 3,元素默认 0
int[] b = {1, 2, 3}; // 字面量初始化
String[] c = new String[] {"x", "y"};- 长度固定:
a.length为元素个数,不是方法调用无括号。 - 多维数组:
int[][] m = new int[2][3];可理解为「数组的数组」,第二维长度可后续再定(锯齿数组)。
包装类与自动装箱
每种基本类型对应一个引用类型(如 int ↔ Integer)。自动装箱把 int 赋给 Integer 时由编译器插入 Integer.valueOf;拆箱则调用 xxxValue()。== 与 equals 在包装类型上容易混淆,比较值时优先用 equals 或拆箱后比较。
小结
- 八种基本类型分为四组:整型(
byte/short/int/long)、浮点(float/double)、字符(char)、布尔(boolean)。 - 类型转换:拓宽自动、收窄需强制;局部变量必须显式初始化,字段有默认值。
- 运算符注意短路(
&&/||)与自增前缀/后缀的区别。 - 字符串
equals比较内容,切忌用==;数组长度是length属性(无括号)。 - 易错:包装类型用
==比较时,Integer在 -128~127 范围内因缓存机制返回true,超出后返回false——始终用equals。 - 思考任务:声明
int a = 5; double b = a;看能否编译(拓宽自动);再尝试double c = 3.14; int d = (int) c;观察小数部分的截断行为。
上一节:Java 程序基本结构
