首页 > 编程语言 >2024年150道高频Java面试题(一)

2024年150道高频Java面试题(一)

时间:2024-03-28 23:03:52浏览次数:42  
标签:150 面试题 Java JDK 对象 equals 2024 Person JRE

1. JDK 和 JRE 有什么区别?

JDK(Java Development Kit)和JRE(Java Runtime Environment)是Java技术的两个核心组成部分,它们之间的主要区别如下:

  1. 功能定位
    • JDK:它是提供给Java开发者的软件开发工具包,包含了Java程序开发所需的各种工具,比如编译器(javac)、调试器(jdb)和其他工具(如javadoc、jar等)。
    • JRE:它是运行Java程序所必需的运行时环境,提供了Java虚拟机(JVM)和Java核心类库。
  2. 组成内容
    • JDK包含JRE以及开发工具。也就是说,安装JDK后,不需要单独安装JRE。
    • JRE仅包含运行Java程序所必需的组件,不包含开发工具。
  3. 大小和占用
    • 因为JDK包含了JRE和额外的开发工具,所以它的体积通常比JRE大。
    • JRE只包含运行时所需的组件,因此体积较小。
  4. 使用场景
    • 如果你想编译和创建Java应用程序,你需要安装JDK。
    • 如果你只需要运行Java应用程序,那么只需要安装JRE。

以下是一个简单的表格来展示它们的区别:

组件JDK(Java Development Kit)JRE(Java Runtime Environment)
功能开发和运行Java程序仅运行Java程序
包含编译器(javac)等开发工具Java虚拟机(JVM)和核心类库
大小较大(包含JRE和开发工具)较小(仅运行时组件)
使用者Java开发者Java应用程序的用户

简而言之,JDK是面向开发者的完整工具集,而JRE是面向最终用户运行Java应用程序的轻量级运行时环境。

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

在Java编程语言中,==equals是用于比较的两个基本运算符,它们在比较对象和原始数据类型值时有不同的用途和意义。

  1. ==运算符:
    • ==用于比较两个对象在内存中的地址是否相同,即判断两个引用是否指向堆内存中的同一个对象。
    • 对于基本数据类型(如int、char、float等),==比较的是它们的值是否相等。
    • 对于对象(例如自定义类的实例),==比较的是两个引用是否指向堆中的同一个实例。
    • 使用==比较两个对象时,如果两个对象的成员变量值相同,但它们是不同的对象实例,那么==的结果是false
  2. equals方法:
    • equalsObject类的一个方法,它在默认情况下与==有相同的行为,即比较两个引用是否指向同一个对象。
    • 但是,许多类(如StringInteger等)重写了equals方法,以比较对象的内容或状态,而不是它们的引用。
    • 当一个对象调用equals方法时,可以自定义比较逻辑,通常用于判断两个对象的某些属性是否相等。
    • 对于基本数据类型,不能使用equals,因为它们不是对象。

以下是简单的代码示例说明两者的区别:

class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 重写equals方法,比较属性值
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return age == person.age && name.equals(person.name);
    }
}

public class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = 5;
        // 对于基本数据类型,==比较的是值
        System.out.println(a == b); // 输出:true

        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Alice", 25);
        // 比较两个不同的对象,==比较引用
        System.out.println(person1 == person2); // 输出:false

        // equals方法被重写,比较对象的属性值
        System.out.println(person1.equals(person2)); // 输出:true
    }
}

总结区别:

  • ==用于比较内存地址或基本类型的值。
  • equals用于比较对象的内容,通常适用于那些重写了equals方法的对象。

150 道精选 Java 高频面试题请去公众号:码路向前 。

标签:150,面试题,Java,JDK,对象,equals,2024,Person,JRE
From: https://blog.csdn.net/2401_83617404/article/details/137032011

相关文章

  • 2024年3月28号java学习
    面向对象一个对象的内存图Student s=newStuden();加载new类的.class文件(只需要加载到方法区一次)声明局部变量(s)在堆中开辟一个空间默认初始化显示初始化构造方法初始化将堆内存中的地址值赋值给左边的局部变量this关键字是一个指向方法调用者的内存地址的引用......
  • 2024年天府杯A题详细解题思路
    本次天府杯预估赛题难度A<B,选题人数A:B=4:1。具体的选题比例还需要等今晚各个平台的投票统计结果。下面基于本次选题最多的A题,给大家带来详细解题思路。本次竞赛题目为科研绩效分配方案设计与优化。正好对应了该题目的两个方向方案设计以及优化模型。首先,对于有数据的题目第一......
  • 2024-03-28
    2024-03-28\({\color{Red}\Large到成都集训来了!}\)晚上自习YY的GCD\({\color{Chocolate}Problem}\)\(i\in[1,n],j\in[1,m]\\\m,n\le10^7\),\(T\le10^4\)组询问,求\(\gcd(i,j)\)是素数的\((i,j)\)对数\({\color{Chocolate}Solution}\)\[\begin{align*}......
  • 2024.3.28
    2024.3.28【浮世景色百千年依旧,人之在世却如白露与泡影。】Thursday二月十九<theme=oi-"string">今天神奇模拟赛)A.水水题题目描述给定若干个串,对于每个串,求出所有可能的串使得这些可能的串既是原串的前缀又是原串的后缀。输入格式若干行,表示若干个原串输出格式......
  • [省选联考 2024] 重塑时光
    [省选联考2024]重塑时光因为太弱了而感觉网上过的题解都不够详细清晰!所以写了篇题解!估计也会成为我后面给初中的学弟学妹们讲题的题目之一,前提是没有其他人要选它首先,肯定要将概率转为方案数若我们已经将一个排列划分成了\(k+1\)块(有空的)且已经重新拼接成了一条新的时间线......
  • 面试题:为什么hadoop不适合存储小文件(1、从NN角度去 分析 2、DN角度分析 3、从MR角度分
    NN角度:小文件一旦很多,那么小文件的权限信息,文件大小信息,归属信息等信息就会跟着增加,每一个小文件都会产生这些信息,这些信息一旦多起来,那么NameNode的元数据就会变大,会导致元数据的大小超过小文件大小的总和,会增加NameNode的压力,有可能导致主节点崩溃,用户就无法通信了DN角度:小文件......
  • React — 原理面试题-持续更新
    1.什么是React事件,什么是原生事件?两者的区别在哪儿?React事件:React事件是经过封装和合成的,以保证在不同浏览器上的一致性。在使用React中的事件处理时,你会给JSX元素添加事件处理函数,比如onClick、onChange等,然后在事件处理函数中处理相应的逻辑。React事件的处理方式......
  • 2024年3月28日-UE5-地图触发器,摄像机控制,后期盒子,关卡蓝图
    在全局蓝图里加一句简单的话测试下 然后选打印输入一句话 新建一个触发框 调整位置 然后改名 创建一个平面放到之前触发框的位置 选中关卡触发器,然后打开关卡蓝图然后右键点击,然后选第一个,为这个关卡触发器添加逻辑   当ACTOR进入触发器区域,输出前......
  • 新增文章(2024-3-28)
    //controllerpackagecom.di.bigevent.controller;importcom.di.bigevent.pojo.Article;importcom.di.bigevent.pojo.Result;importcom.di.bigevent.service.ArticleService;importcom.di.bigevent.utils.JwtUtil;importjakarta.servlet.http.HttpServletResponse......
  • 2024天府杯全国大学生数学建模A题思路+模型+代码+论文
    2024天府杯数学建模竞赛A题思路模型代码:3.28第一时间更新,更新见文末名片A题:科研绩效分配方案设计与优化问题背景:科学研究领域的绩效评定有着较大的共性和行业典型特点,在高校科研人员日常管理工作中也是一项较复杂的研究性、政策性工作。科技部、教育部、......