Java面试必备知识:&与&&的区别,switch语句的限制

需积分: 0 0 下载量 55 浏览量 更新于2024-07-27 收藏 628KB DOC 举报
"Java面试宝典,涵盖Java基础、逻辑运算符、switch语句、数据类型转换和Unicode字符存储" 在Java编程语言中,面试时常会涉及到一些核心概念和技术细节。以下是对摘要中提到的几个关键知识点的详细解释: 1. **逻辑运算符&和&&的区别** - `&` 和 `&&` 都可用于逻辑与操作,但有区别。两者只有当两侧表达式都为真时结果才为真。不同在于: - `&` 是始终会评估两边的表达式,即使左侧已经确定结果为假,右侧的表达式仍会被计算。 - `&&` 具有短路特性,如果左侧表达式为假,就不会继续计算右侧表达式。例如,在 `if (str != null && !str.equals(""))` 中,如果 `str` 为 `null`,`!str.equals("")` 不会执行,避免了 `NullPointerException`。 2. **switch语句的使用限制** - Java中的 `switch` 语句的条件表达式必须是整数类型(包括 `byte`, `short`, `char` 及其包装类 `Byte`, `Short`, `Character`)或枚举类型。由于 `long` 类型和 `String` 类型不能隐式转换为 `int`,所以它们不能用于 `switch` 语句。Java 7开始支持枚举类型,而Java 14引入了`switch` 表达式,允许 `String` 类型的 `switch`。 3. **数据类型转换问题** - 当 `short s1 = 1; s1 = s1 + 1;` 时,`+` 操作会导致两个 `short` 类型相加结果提升为 `int` 类型,然后尝试赋值回 `short`,导致编译错误,需要显式转换(如 `s1 = (short) (s1 + 1);`)。 - 而 `short s1 = 1; s1 += 1;` 使用了复合赋值运算符,Java编译器会处理这种类型提升,因此无需显式转换。 4. **char型变量存储中文汉字** - `char` 类型在Java中用于存储Unicode编码的字符,而Unicode字符集中包含了大量汉字,所以 `char` 变量完全能够存储中文汉字。每个 `char` 变量占两个字节,可以表示65536个不同的Unicode码点,覆盖了大部分常用汉字。 了解这些基础知识对于Java开发者来说至关重要,尤其是在面试中,它们不仅能展现你对语言特性的掌握,还能反映出你对编程实践中细节问题的关注。深入理解这些知识点将有助于你在面试中脱颖而出,提高成功入职的机会。