java进阶面试篇及答案

本文汇总了208道精心挑选的Java面试题,覆盖Java基础,包括JDK与JRE的区别、==与equals的对比、hashCode与equals的关系等核心知识点。同时,解释了String类的操作、抽象类与接口的区别、IO流分类及其相关方法,旨在提供最新、最实用的面试准备资料。
摘要由CSDN通过智能技术生成

java面试小纲

目前市面上的面试题存在两大问题:第一,题目太旧好久没有更新了,还都停留在 2010 年之前的状态;第二,近几年 JDK 更新和发布都很快,Java 的用法也变了不少,加上 Java 技术栈也加入了很多新的框架,比如 Spring Boot、Spring Cloud 等,但类似的面试题却极少。

 

相比与这些问题,我的这 208 道面试题具备以下优点:

  • 披沙拣金提炼出每个 Java 模块中最经典的面试题;
  • 答案准确,每个题目都是我仔细校对过的;
  • 接近最真实的企业面试,题目实用有效果;
  • 难懂的题目,我加入了代码解析和原理分析。

 

Java 基础

 

1. JDK 和 JRE 有什么区别?

  • JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。

  • JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。

具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。

2. == 和 equals 的区别是什么?

== 解读

 

对于基本类型和引用类型 == 的作用效果是不同的,如下所示:

 

  • 基本类型:比较的是值是否相同;

  • 引用类型:比较的是引用是否相同;

 

代码示例:

String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

 

代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

 

equals 解读

 

equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。看下面的代码就明白了。

 

首先来看默认情况下 equals 比较一个有相同值的对象,代码如下:

 

class Cat {
    public Cat(String name) {
        this.name = name;
    }

    private S
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值