理解 Java 中的变量声明、基本类型和引用类型
Java 是强类型语言,每个变量都必须声明其类型。基本数据类型直接存储值,而不是引用。
| 类型 | 大小 | 默认值 | 说明 | 示例 |
|---|---|---|---|---|
byte | 8 位 | 0 | 有符号整数 | byte b = 100; |
short | 16 位 | 0 | 有符号整数 | short s = 1000; |
int | 32 位 | 0 | 整型(最常用) | int age = 20; |
long | 64 位 | 0L | 长整型 | long big = 100000L; |
float | 32 位 | 0.0f | 单精度浮点 | float f = 3.14f; |
double | 64 位 | 0.0d | 双精度浮点(最常用) | double d = 3.14159; |
boolean | 1 位 | false | 布尔类型 | boolean flag = true; |
char | 16 位 | ' ' | 单个 Unicode 字符 | char c = 'A'; |
// 声明并初始化
int age = 20;
double price = 19.99;
boolean isAvailable = true;
char grade = 'A';
// 先声明,后赋值
int score;
score = 85;
// 同时声明多个变量
int a = 1, b = 2, c = 3;
// 常量(不可修改)
final double PI = 3.14159;
// PI = 3.14; // 错误!无法修改常量
// 自动类型转换(隐式):小范围 → 大范围
int num = 100;
long bigNum = num; // 自动转换
double d = num; // 自动转换
// 强制类型转换(显式):大范围 → 小范围,可能丢失精度
double pi = 3.99;
int i = (int)pi; // 结果是 3,小数部分被截断
// 字符和整数之间的转换
char c = 'A';
int ascii = c; // 65,自动转换
char newC = (char)66; // 'B',强制转换
强制类型转换可能导致数据丢失。例如 (int)3.99 结果是 3(不是四舍五入)。如果转换超出目标类型的范围,结果会溢出。
double d = 7.8;
int result = (int)d + 2;