### Java最新面试宝典知识点详解 #### 一、Java基础部分 **1.1 & 和 && 的区别** - **相同点**: `&` 和 `&&` 都可以用作逻辑与运算符,表示逻辑与(AND)。当运算符两侧的表达式结果都为 `true` 时,整个运算结果为 `true`;反之,只要有一方为 `false`,结果即为 `false`。 - **不同点**: - `&&` 具有短路功能:如果第一个表达式为 `false`,则不会计算第二个表达式。例如,在 `if (str != null && !str.equals(""))` 表达式中,当 `str` 为 `null` 时,后面的表达式不会执行,因此不会抛出 `NullPointerException`。 - `&` 不具备短路功能:如果将上面的例子中的 `&&` 改为 `&`,则会抛出 `NullPointerException` 异常。 - `&` 还可以用作位运算符,当其两侧的表达式不是布尔类型时,`&` 表示按位与操作。常用 `0x0f` 与一个整数进行 `&` 运算,以获取该整数的最低四位比特位。 **示例代码**: ```java int x = 33; if (x == 33 & ++y > 0) { // y会增长 } if (x == 33 && ++y > 0) { // y不会增长 } ``` **1.2 如何跳出当前的多重嵌套循环** 在 Java 中,若想跳出多重循环,可以采用以下两种方法: - **使用标号**: 在外层循环前定义一个标号,然后在内层循环体中使用带有该标号的 `break` 语句。 ```java ok: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { System.out.println("i=" + i + ", j=" + j); if (j == 5) break ok; } } ``` - **通过改变外层循环的条件**: 让外层循环的继续执行依赖于内层循环体中的条件。 ```java boolean found = false; for (int i = 0; i < arr.length && !found; i++) { for (int j = 0; j < arr[i].length; j++) { if (arr[i][j] == 5) { found = true; break; } } } ``` **1.3 switch 语句的作用范围** - `switch` 语句可以作用于 `int`、`short`、`char`、`byte`、`enum` 及这些基本类型的包装类。 - `switch` 表达式必须是一个整数表达式或枚举常量。 - `byte`、`short` 和 `char` 类型可以隐式转换为 `int` 类型,因此也可以用于 `switch` 语句。 - `long` 和 `String` 类型不符合 `switch` 的语法规定,并且不能被隐式转换为 `int` 类型,所以不能用于 `switch` 语句。 **示例代码**: ```java public class Test { enum Day {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}; public static void main(String[] args) { Integer a = 0; // int Short b = 0; // short Byte c = 0; // byte Character d = 'k'; // char的包装类 Day today = Day.Saturday; switch (today) { case Sunday: break; case Monday: case Tuesday: case Wednesday: case Thursday: case Friday: case Saturday: default: break; } } } ``` **1.4 关于 `short s1 = 1; s1 = s1 + 1;` 的问题** - `short s1 = 1; s1 = s1 + 1;` 会产生编译错误,因为 `s1 + 1` 的结果会被自动提升为 `int` 类型,再赋值给 `short` 类型时需要显式转换。 - `short s1 = 1; s1 += 1;` 编译正确,因为 `+=` 运算符由 Java 特别处理,能够自动处理类型转换。 **1.5 char 型变量是否能存储中文汉字** - `char` 型变量可以存储 Unicode 编码的字符,包括汉字。这是因为 Unicode 编码字符集中包含了常用的汉字。 - `char` 类型占用两个字节,能够容纳所有 Unicode 字符,包括汉字。 **1.6 最有效率的方法计算 2 乘法** - 使用位移运算符 `<<` 是计算 2 的倍数的一种非常高效的方法。 ```java int result = 2 << 1; // 结果为 4 ``` - 位移运算比乘法运算更快,特别是在处理大整数时效率更高。
剩余63页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助