1 Java 基本数据类型的取值范围、语法规则
1. 各数据类型核心规则
(1)byte
类型(选项 A)
- 取值范围 :
-128 ~ 127
(8 位有符号整数)。 - 错误原因 :
128
超出byte
最大值127
,编译报错。
(2)boolean
类型(选项 B)
- 取值规则 :只能是
true
或false
,不能赋值null
(null
是引用类型的默认值)。 - 错误原因 :
boolean i = null
类型不兼容,编译报错。
(3)long
类型(选项 C)
- 语法规则 :
- 长整型字面值需加后缀
L
(大小写均可,但推荐大写L
避免与数字1
混淆)。 - 十六进制表示:
0x
开头(如0xfff
是十六进制,值为4095
)。
- 长整型字面值需加后缀
- 正确原因 :
0xfffL
是合法long
类型赋值(十六进制 +L
后缀)。
(4)double
类型(选项 D)
- 语法规则 :
- 浮点型字面值默认是
double
,加后缀d
/D
可显式声明(也可省略)。
- 浮点型字面值默认是
- 正确原因 :
0.9239d
是合法double
赋值(d
后缀明确类型,符合语法)。
2. 数据类型赋值常见考点!!!!!!!!!!!!!!!!!!!!!!!!!!
类型 | 取值范围 / 规则 | 典型错误案例 |
---|---|---|
byte |
-128 ~ 127 |
byte i = 128; (超出范围) |
short |
-32768 ~ 32767 |
short i = 32768; (超出范围) |
int |
-2^31 ~ 2^31-1 |
无特殊后缀时,大数字需用 L 转 long |
long |
需加 L 后缀(如 100L ) |
long i = 10000000000; (默认 int ,超出范围报错) |
float |
需加 f /F 后缀(如 3.14f ) |
float i = 3.14; (默认 double ,类型不兼容) |
double |
可加 d /D 后缀(也可省略) |
无典型错误,注意精度问题(如 0.1 + 0.2 != 0.3 ) |
boolean |
仅 true /false |
boolean i = null; (类型不兼容) |
char |
单字符(如 'A' )或 Unicode 编码 |
char i = 'AB'; (字符数量错误) |
3. 关键结论
- 范围超界必错 :
byte
/short
/int
等整型赋值时,字面量不能超出类型范围。 boolean
特殊处理 :只能赋值true
/false
,与引用类型(null
)严格区分。- 后缀显式声明 :
long
用L
、float
用f
,避免默认类型导致的兼容问题。
这道题中,选项 C、D 正确 ,A 超出 byte
范围,B 错误赋值 null
给 boolean
。记住这些规则,下次遇到类似题就能秒判对错啦~
2 在 Java 中,boolean
类型绝对不能赋值为 0
或 1
,只能是 true
或 false
。
在 Java 中,boolean
类型绝对不能赋值为 0
或 1
,只能是 true
或 false
。这是 Java 与其他语言(如 C、C++)的重要区别,务必牢记!
1. Java 的严格规则
-
合法值 :仅
true
和false
。 -
错误案例 :
java
javaboolean flag = 1; // ❌ 编译错误:不兼容的类型 if (flag == 1) { } // ❌ 编译错误:无法比较 boolean 和 int
-
底层实现 :Java 的
boolean
在 JVM 中以 1 位存储(理论上),但语言层面禁止与整数互转。
2. 对比其他语言的差异
语言 | boolean 与整数的关系 |
示例 |
---|---|---|
Java | 严格区分,不可互转 | boolean b = true; (仅合法写法) |
C/C++ | 0 表示 false ,非零(如 1 )表示 true |
bool b = 1; (合法) |
Python | 0 和 0.0 等视为 False ,其他数值视为 True |
if 1: print("yes") (合法) |
3. 常见混淆场景
(1)从数据库读取 0/1
转 boolean
需手动转换,不能直接赋值:
java
java
int dbValue = 1;
boolean flag = (dbValue == 1); // ✅ 显式比较,结果为 true
(2)条件判断中的整数
Java 的 if
条件必须是 boolean
类型,不能用整数替代:
java
java
int score = 100;
if (score > 0) { ... } // ✅ 条件表达式返回 boolean
if (score) { ... } // ❌ 编译错误:需要 boolean,得到 int
4. 避坑口诀
"Java 布尔特严格,真假二值别混淆;零一整数不能用,显式比较才是道!"
记住这个规则,考试 / 面试遇到类似题直接秒选正确答案~ 😄
3 **考前必看整理(2)**
我真的有点慌,/(ㄒoㄒ)/,希望不要考的太难吧,但愿,能及格就好,能过就好!
一、死磕 "必考题"(背完稳拿基础分)
1. 数据类型 & 转换(必考选择题)
- 8 大基本类型 :
byte(1), short(2), int(4), long(8), float(4), double(8), char(2), boolean(1)
- 口诀:1244 8821(对应 byte 到 boolean 的位数)
- 类型转换 :小范围→大范围自动转(
byte→int
),大范围→小范围要强转(int→byte
写(byte)
),浮点转整数会丢精度((int)3.9
结果是3
)
2. String 特性(必考)
- 不可变 :
String s = "a"; s += "b";
实际新建了String
对象!拼接用StringBuilder
(单线程)/StringBuffer
(多线程)- 口诀:String 不可变,拼接用 Builder
- 比较 :
equals
比内容(s1.equals(s2)
),==
比地址(s1 == s2
看是否同一对象)
3. 异常处理(流程必考题)
- 执行顺序 :
try
出异常→找匹配的catch
(子类异常在前,父类在后!比如catch (FileNotFoundException)
要在catch (IOException)
前面)→执行finally
(必执行,除非System.exit(0)
)- 口诀:异常 catch 按顺序,子类先抓父类后,finally 必执行
二、代码题 "保命框架"(不会写完整,写框架也给分)
1. 方法定义(背模板)
java
java
// 修饰符 返回值类型 方法名(参数列表) {
// 方法体;
// return 返回值; // void 不用 return
// }
public static int add(int a, int b) {
return a + b;
}
2. 循环结构(for/while 必考)
java
java
// for 循环(遍历数组/集合)
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
// while 循环
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
3. 异常处理(try-catch 模板)
java
java
try {
// 可能出错的代码(比如文件操作、除 0)
int num = 1 / 0;
} catch (ArithmeticException e) {
// 捕获异常后处理
System.out.println("除 0 错误!");
} finally {
// 必执行的代码(关资源、打印日志)
System.out.println("无论对错,我都执行");
}
三、考场 "应急技巧"(不会就蒙,有逻辑地蒙)
1. 选择题不会?看关键词
- 问 "线程安全的集合"→选
Vector
/Hashtable
(虽然过时,但考试常考);问 "高效线程安全"→选ConcurrentHashMap
- 问 "String 拼接效率高"→选
StringBuilder
- 问 "构造方法特点"→选 "与类名同名,无返回值,new 时调用"
2. 代码题写注释 + 框架
- 比如题目要求 "写一个方法计算数组和",就算不会遍历,也写:
java
java
public static int sumArray(int[] arr) {
// 思路:遍历数组,累加元素
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
- 老师看你有思路,步骤对,会给分!
四、最后 1 小时 "急救包"
- 快速过一遍口诀:把数据类型、String、异常的口诀读 3 遍,刻进脑子
- 看错题 / 重点题:把之前练习的错题,尤其是老师强调的题,快速扫一遍答案逻辑
- 深呼吸:别慌,你记住的知识点足够应付基础题,考试时冷静审题,把会的都写上!