### Java面试宝典知识点解析 #### 一、Java基础部分 **1. 一个 ".java" 源文件中是否可以包括多个类(不是内部类)?有什么限制?** 在一个 `.java` 文件中,确实可以定义多个类,但是有以下几点需要注意: - 只能有一个公共类(public class),并且该类的名字必须与文件名相同。 - 其他类(非公共类)可以在同一个文件中定义,但它们不能声明为 `public`。 **2. Java有没有goto?** Java 语言最初设计时是有 `goto` 语句的,但最终被移除了。目前,Java 中不存在 `goto` 关键字。然而,通过使用标记化的 `break` 和 `continue` 语句可以模拟 `goto` 的行为。 **3. 说说 & 和 && 的区别。** - **&** 是按位与运算符,用于操作整数的二进制位,同时也是布尔逻辑运算符,用于短路逻辑与运算。 - **&&** 也是布尔逻辑运算符,但它支持短路运算。如果左侧表达式为 false,则右侧表达式不会被计算。 **4. 在 Java 中如何跳出当前的多重嵌套循环?** 可以通过使用 `break` 语句结合带标签的循环来跳出多重循环。例如: ```java outer: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i == 5 && j == 5) { break outer; } System.out.println(i + "," + j); } } ``` **5. switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?** - `byte` 类型可以用于 `switch` 表达式。 - `long` 类型默认不可以用于 `switch` 表达式,但可以通过强制类型转换来实现。 - `String` 类型自 Java 7 开始可以用于 `switch` 表达式。 **6. shorts1=1; s1=s1+1; 有什么错? short s1=1; s1+=1; 有什么错?** - 对于 `short s1 = 1; s1 = s1 + 1;`,这会导致编译错误,因为 `s1 + 1` 的结果是一个 `int` 类型,不能自动转换为 `short`。 - `short s1 = 1; s1 += 1;` 这种写法是正确的,因为 `+=` 运算符会在赋值之前自动处理类型转换问题。 **7. char 型变量中能不能存储一个中文汉字? 为什么?** 可以。在 Java 中,`char` 类型占用两个字节,因此能够存储一个 Unicode 字符,包括中文汉字。 **8. 用最有效率的方法算出 2 乘以 8 等于几?** 最有效率的方法是使用左移运算符 `<<`。例如:`2 << 3` 将得到 16。 **9. 请设计一个一百亿的计算器** 设计一个能够处理大数值的计算器,可以考虑使用 `BigInteger` 类来进行数学运算。例如: ```java import java.math.BigInteger; public class Calculator { public static void main(String[] args) { BigInteger num1 = new BigInteger("10000000000"); BigInteger num2 = new BigInteger("10000000000"); BigInteger result = num1.add(num2); // 计算两数之和 System.out.println(result); } } ``` **10. 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?** - 如果是基本类型的变量,则一旦被 `final` 修饰,其值就不能再被改变。 - 如果是引用类型的变量,则 `final` 修饰的是该引用,表示该引用指向的对象不能被改变,但对象内部的状态是可以改变的。 **11. "==" 和 equals 方法究竟有什么区别?** - `==` 用来比较两个变量的地址是否相等(即是否指向同一内存位置)。 - `equals()` 方法用于比较两个对象的内容是否相等。对于自定义类,通常需要重写 `equals()` 方法来提供具体的比较逻辑。 **12. 静态变量和实例变量的区别?** - **静态变量**(也称为类变量)属于类,而不是实例,它在类加载时初始化,并且对所有实例共享同一份副本。 - **实例变量** 属于每个实例对象,每个对象都有自己的副本,互不影响。 **13. 是否可以从一个 static 方法内部发出对非 static 方法的调用?** 不可以。`static` 方法属于类级别,而非 `static` 方法属于实例级别。从 `static` 方法中直接调用非 `static` 方法将导致编译错误,因为此时尚未创建任何实例。 **14. Integer 与 int 的区别** - `int` 是基本数据类型,而 `Integer` 是 `int` 的包装类。 - `int` 默认值为 0,而 `Integer` 默认值为 `null`。 **15. Math.round(11.5) 等于多少? Math.round(-11.5) 等于多少?** - `Math.round(11.5)` 结果为 12。 - `Math.round(-11.5)` 结果为 -11。 以上是针对 Java 面试宝典中提到的部分基础知识点的解析,希望能帮助准备面试的朋友更好地理解这些概念。接下来将继续深入探讨更多的高级话题。
剩余135页未读,继续阅读
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助