面试学习(1)

本文详细介绍了Java中的JDK、JRE、JVM的区别,重点讲解了hashCode与equals的作用和区别,以及String、StringBuffer和StringBuilder的异同。对于Java开发者准备面试或深入理解Java内存管理有很大帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标:

  • Java面试题
  • MySQL面试题
  • Redis面试题

学习内容:

2024-01-22:

  • JDK、JRE、JVM的区别

  • hashCode与equals之间的关系

  • String、StringBuffer、StringBuilder的区别


具体内容:

JDK、JRE、JVM的区别

概念

JDK,Java标准开发包,提供了编译、运行Java所需的各种工具和资源,包括编译器、运行时环境以及Java类库

JRE,Java运行环境,用于运行Java的字节码文件。包含了JVM以及JVM所需的类库。

注:普通用户只需要JRE来运行Java程序,开发这必须安装JDK来编译、调试程序

JVM,Java虚拟机,是JRE的一部分,是整个Java跨平台最核心的部分,负责运行字节码文件


执行流程

Java代码->编译器Javac(编译)->字节码->执行字节码程序JVM(Java虚拟机)执行


使用场景

开发:开发程序需要JDK编译源文件

运行:运行已编译好的Java字节码文件(*.class文件),只需要JRE

JVM在执行Java字节码时候会把字节码解释为机器指令,不同操作系统的机器指令不同,运行在上面的JVM也是不同的,不管什么代码,只要编译后是Java字节码,那它就能在JVM上运行;

注:JDK包含JRE,JRE包含JVM


hashCode与equals

概念

hashCode:返回的是对象对应的内存地址

equals:比较两个对象的引用是否是同一个内存地址

equals与==的区别

Java类型区分为基础数据类型和引用基础类型。基础类型(byte, short, int , long , float , double , boolean , char)

基础类型:比较两个值是否相等

引用类型:比较所指向的对象内存地址

总结:

  1. 若==两侧都是基础数据类型,判断左右两边数据的值是否相等
  2. 若==左右两边都为引用数据类型,则判断左右两边对象的内存地址是否相同,若相同则一定是同一个对象
  3. equals默认比较的是两个对象的内存地址,在没有重写equals的情况下,与==比较结果相同
  4. equals用于比较引用类型是否相等,满足equals判断规则的前提下,两个对象只要规定的属性相同就认为两个对象是相同的

hashCode

hash算法是通过特定的数学函数运算或其他算法,转换为相应的数据存储地址。

hashCode包含了hash算法。

hashCode和equals的关系

总结:

  1. 调用equals返回了true的两个对象必须有相等的hashCode
  2. 如果两个对象的hashCode返回值相同,但是调用他们的equals不一定返回ture

String、StringBuffer、StringBuilder的区别

String:常量,值不可变,重新赋值只是把字符串地址变更为新的地址

StringBuffer:变量,线程安全

StringBuilder:变量,线程不安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值