数据类型的转换

显式/隐式转换

隐式转换相对安全,会自动将小瓶水装入大瓶

显式的转换是强制转换,可能你会丢失精度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void testPrimitiveConversion() {
System.out.println("=== 1. 基本类型转换 ===");

// --- 场景 A:从小变大 (自动/隐式) ---
int smallInt = 100;
double bigDouble = smallInt; // 自动变成了 100.0
System.out.println("int -> double (自动): " + bigDouble);

// --- 场景 B:从大变小 (强制/显式) ---
// ⚠️ 风险提示:小数转整数,小数点会被直接切掉(不是四舍五入)
double pi = 3.9999;
int piInt = (int) pi;
System.out.println("double -> int (强制切掉小数): " + piInt); // 结果是 3

// --- 场景 C:恐怖的数据溢出 (Overflow) ---
// byte 的范围是 -128 到 127
int tooBig = 130;
byte b = (byte) tooBig;
// 结果不是 130,而是 -126!为什么?
// 就像汽车里程表跑到最大值后,又从负数开始绕圈了
System.out.println("int(130) -> byte (溢出): " + b);
}

字符与数字

char 底层就是个数字,对应ascii码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Test
public void testCharToNumber() {
System.out.println("\n=== 2. 字符与数字转换 ===");

char c = 'A';

// char 自动变成 int
int code = c;
System.out.println("字符 'A' 对应的数字: " + code); // 65

// int 强制变成 char
int code2 = 66;
char c2 = (char) code2;
System.out.println("数字 66 对应的字符: " + c2); // 'B'

// 实战:小写变大写 (小写a是97,大写A是65,差32)
char lower = 'd';
char upper = (char) (lower - 32);
System.out.println("'d' 变大写: " + upper);
}

字符串与基本类型转换

string to 数字

Integer.parseInt(strPrice);

Double.parseDouble(strRate);

数字 to string

String.valueOf(age);

String s2 = age + “”;

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
public void testStringConversion() {
System.out.println("\n=== 3. String 与基本类型互转 ===");

// --- 场景 A:把 String 变成数字 (解析) ---
String strPrice = "128";
String strRate = "3.14";

// ⚠️ 如果字符串里是 "abc",这里会报错 NumberFormatException
int price = Integer.parseInt(strPrice); // 字符串 -> int
double rate = Double.parseDouble(strRate); // 字符串 -> double

System.out.println("计算结果: " + (price * rate));

// --- 场景 B:把数字变成 String ---
int age = 18;

// 方法1 (推荐):使用 String.valueOf()
String s1 = String.valueOf(age);

// 方法2 (偷懒写法):任何东西 + 空字符串 都会变成字符串
String s2 = age + "";

System.out.println("数字转字符串 s1: " + s1);
System.out.println("数字转字符串 s2: " + s2);
}
}

上一章 目录 下一章
变量与数据类型 java基础 进制与编码