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 遍,刻进脑子
- 看错题 / 重点题:把之前练习的错题,尤其是老师强调的题,快速扫一遍答案逻辑
- 深呼吸:别慌,你记住的知识点足够应付基础题,考试时冷静审题,把会的都写上!