50个java常见面试题,应对面试官不退让,就是干 50个java常见面试题,应对面试官不退让,就是干 50个java常见面试题,应对面试官不退让,就是干 50个java常见面试题,应对面试官不退让,就是干50个java常见面试题,应对面试官不退让,就是干 50个java常见面试题,应对面试官不退让,就是干 50个java常见面试题,应对面试官不退让,就是干 50个java常见面试题,应对面试官不退让,就是干50个java常见面试题,应对面试官不退让,就是干 50个java常见面试题,应对面试官不退让,就是干 ### Java常见面试题详解 #### 1. JDK与JRE的区别 - **JDK (Java Development Kit)**: JDK 是 Java 开发工具包的简称,它包含了编写 Java 应用程序所需的开发工具、文档以及示例代码等。对于开发者来说,JDK 是必不可少的,因为它包含了 JRE 以及用于编译、调试和部署 Java 应用程序的各种工具。 - **JRE (Java Runtime Environment)**: JRE 是 Java 运行环境,包含了 JVM (Java Virtual Machine) 和运行 Java 程序所需的类库。JRE 主要用于那些只需要运行 Java 程序而不需要进行开发的用户。 简而言之,JDK 包含了 JRE,并额外添加了一些开发工具。如果你是一名 Java 开发者,你需要安装 JDK;如果你只需要运行 Java 应用程序,那么安装 JRE 就足够了。 #### 2. `==` 与 `equals` 的区别 - **基本类型**: 当使用 `==` 比较两个基本类型时,它比较的是它们的值。 - **引用类型**: 对于引用类型,`==` 比较的是它们指向的内存地址,而不是实际的对象内容。这意味着即使两个对象的内容完全相同,只要它们位于不同的内存地址,`==` 也会返回 `false`。 - **`equals` 方法**: 默认情况下,`equals` 方法的行为类似于 `==`,即比较两个对象的地址。但是,大多数情况下,我们都会重写 `equals` 方法来比较对象的实际内容。 #### 3. `final` 关键字的作用 - **常量**: 当 `final` 修饰一个基本数据类型时,该变量成为常量,其值一旦初始化就不能改变。 - **不可变对象**: 当 `final` 修饰一个引用变量时,该引用变量的地址不可改变,但引用的对象本身可以被修改。 - **最终方法**: 使用 `final` 修饰的方法不能被子类覆盖。 - **最终类**: 使用 `final` 修饰的类不能被继承。 #### 4. `Math.round(-1.5)` 的结果 `Math.round()` 方法对数字进行四舍五入处理。对于负数 `-1.5`,`Math.round()` 的行为是将其加 `0.5` 后向下取整。因此,`Math.round(-1.5)` 的结果为 `-1`。 #### 5. String 是否属于基础数据类型 Java 中的基础数据类型包括 `byte`、`short`、`int`、`long`、`float`、`double`、`char` 和 `boolean`。`String` 不属于这些基础类型之一,而是一个对象类型。 #### 6. `String str="i"` 与 `String str=new String("i")` - **字符串常量池**: `String str="i"` 将字符串 `"i"` 放入字符串常量池中。如果 `"i"` 已经存在于池中,就直接引用已存在的实例。 - **新对象**: `String str=new String("i")` 创建了一个新的 `String` 对象并放在堆内存中,即使内容相同,也会创建一个新的对象。 #### 7. 字符串反转 可以使用 `StringBuilder` 或 `StringBuffer` 类的 `reverse()` 方法轻松地反转字符串。 #### 8. `String` 类的常用方法 - **获取功能**: 如 `length()` 获取字符串长度,`charAt(int index)` 获取特定位置的字符等。 - **判断功能**: 如 `equals(Object obj)` 用于比较字符串内容,`contains(String str)` 判断是否包含子串等。 - **转换功能**: 如 `getBytes()` 转换为字节数组,`toLowerCase()` 转换为小写等。 - **其他功能**: 如 `replace()` 替换字符或字符串,`trim()` 去除两端空格等。 #### 9. `new String("a") + new String("b")` 会创建几个对象 这段代码实际上会创建两个 `String` 对象,加上 `String` 常量池中可能已经存在的 `"a"` 和 `"b"` 对象。由于 `+` 运算符会创建一个新的 `String` 对象来存储结果 `"ab"`,所以总共至少会创建三个 `String` 对象。如果 `"a"` 和 `"b"` 都不在常量池中,则会创建四个 `String` 对象。 以上是针对 Java 面试中常见的几个问题及其解答,希望对你有所帮助。
- 粉丝: 3324
- 资源: 145
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助