Java面试题——进阶篇

2024最新Java高频精选面试题讲解,高级java开发工程师面试题 至此,文章终于到了尾声。技术能力:先写岗位所需能力,再写加分能力,不要写无关能力;项目经历:只写明星项目,描述遵循 STAR 法则;简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投;以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频[外链图片转存中…(img-laenPCAQ-1711102825640)] 阅读详情

1.JVM调优

转http://t.csdn.cn/PMqyu

1.如果使用合理的 JVM 参数配置,在大多数情况应该是不需要调优的,

JVM 经过这么多年的发展和验证,整体是非常健壮的。个人认为99%的情况下,基本用不到 JVM 调优。

通常来说,我们的 JVM 参数配置大多还是会遵循 JVM 官方的建议,例如:-XX:NewRatio=2,年轻代:老年代=1:2,堆内存设置为物理内存的3/4左右,等等

JVM 参数的默认(推荐)值都是经过 JVM 团队的反复测试和前人的充分验证得出的比较合理的值,因此通常来说是比较靠谱和通用的,一般不会出大问题。

当然,更重要的是,大部分的应用数据量不到几万,这种低压环境下,想让 JVM 出问题,说实话也挺难的。

大部分同学更常遇到的应该是自己的代码 bug 导致 OOM、CPU load高、GC频繁啥的,这些场景也基本都是代码修复即可,通常不需要动 JVM。

当然,俗话说得好,凡事无绝对,还是有一小部分场景,是可能需要用到 JVM 调优的。具体哪些场景,我们在下面介绍。

值得一提的是,我们这边所说的 JVM 调优更多的是针对自己的业务场景对 JVM 参数进行优化调整,使其更适合我们的业务,而不是指对 JVM 源码的改动。

2.忌过早优化。《计算机程序设计艺术》的作者高德纳(Donald Ervin Knuth)曾说过一句经典的话:真正的问题是,程序猿在错误的地方和错误的时间花了太多的时间担心效率问题;过早的优化是编程中所有(或者至少是大部分)罪恶的根源。

忌过早并不是说就完全不管,比较正确的做法应该是给核心服务的一些重要 JVM 指标配上监控告警,当指标出现波动或者异常时,能及时介入排查。

3.优化步骤

1.分析和定位当前系统的瓶颈

1)CPU指标

查看占用CPU最多的进程

查看占用CPU最多的线程

查看线程堆栈快照信息

分析代码执行热点

查看哪个代码占用CPU执行时间最长

查看每个方法占用CPU时间比例

2)JVM 内存指标

查看当前 JVM 堆内存参数配置是否合理

查看堆中对象的统计信息

查看堆存储快照,分析内存的占用情况

查看堆各区域的内存增长是否正常

查看是哪个区域导致的GC

查看GC后能否正常回收到内存

3)JVM GC指标

查看每分钟GC时间是否正常

查看每分钟YGC次数是否正常

查看FGC次数是否正常

查看单次FGC时间是否正常

查看单次GC各阶段详细耗时,找到耗时严重的阶段

查看对象的动态晋升年龄是否正常

2.确定优化目标

定位出系统瓶颈后,在优化前先制定好优化的目标是什么,例如:

将FGC次数从每小时1次,降低到1天1次

将每分钟的GC耗时从3s降低到500ms

将每次FGC耗时从5s降低到1s以内

3、制订优化方案

针对定位出的系统瓶颈制定相应的优化方案,常见的有:

代码bug:升级修复bug。典型的有:死循环、使用无界队列。

不合理的JVM参数配置:优化 JVM 参数配置。典型的有:年轻代内存配置过小、堆内存配置过小、元空间配置过小。

4、对比优化前后的指标,统计优化效果

5、持续观察和跟踪优化效果

6、如果还需要的话,重复以上步骤

不考虑应付面试的因素,升级垃圾回收器确实会是最有效的方式之一,例如:CMS 升级到 G1,甚至 ZGC。

2.垃圾回收机制GC

垃圾回收(GC)是由 Java 虚拟机(JVM)垃圾回收器提供的一种对内存回收的一种机制,它一般会在内存空闲或者内存占用过高的时候对那些没有任何引用的对象不定时地进行回收。

1.如何确定某个对象是垃圾

对于Java对象来讲,如果说这个对象没有被其他对象所引用该对象就是无用的,此对象就被称为垃圾,其占用的内存也就要被销毁;

2.JVM判断对象是否存活的算法

  • 引用计数算法

一个对象被创建之后,系统会给这个对象初始化一个引用计数器,当这个对象被引用了,则计数器 +1,而当该引用失效后,计数器便 -1,直到计数器为 0,意味着该对象不再被使用了,则可以将其进行回收了。

这种算法其实很好用,判定比较简单,效率也很高,但是却有一个很致命的缺点,就是它无法避免循环引用,即两个对象之间循环引用的时候,各自的计数器始终不会变成 0,所以 引用计数算法 只出现在了早期的 JVM 中,现在基本不再使用了。

  • 可达性分析算法

通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。

3.垃圾回收算法

1.标记 - 清除算法(Tracing Collector)
标记-清除 算法是最基础的收集算法,它是由 标记 和 清除 两个步骤组成的。

标记的过程其实就是上面的 可达性算法(根搜索) 所标记的不可达对象,当所有的待回收的“垃圾对象”标记完成之后,便进行第二个步骤:统一清除。

该算法的优点是当存活对象比较多的时候,性能比较高,因为该算法只需要处理待回收的对象,而不需要处理存活的对象。

但是缺点也很明显,就是在执行完 标记-整理 之后,由于将“垃圾对象”回收掉了,所以原本连续使用的内存块便会变得不连续,这样会导致内存块上面会出现很多小单元的内存区域,这些小单元的内存区域只能够存放比较小的对象,而比较大的对象是无法直接存储的。

2.标记 - 整理算法(Compacting Collector)
上述的 标记-清除 算法会产生内存区域使用的间断,所以为了将内存区域尽可能地连续使用, 标记-整理 算法应运而生。

标记-整理 算法也是由两步组成,标记 和 整理。

第一步的 标记 动作也是使用的 根搜索算法,但是在标记完成之后的动作却和 标记-清除算法 天壤之别,该算法并不会直接清除掉可回收对象 ,而是让所有的对象都向一端移动,然后将端边界以外的内存全部清理掉。

该算法所带来的最大的优势便是使得内存上面不会再有碎片问题,并且新对象的分配只需要通过简单的指针碰撞便可完成。

3.复制算法(Copying Collector)
无论是标记-清除算法还是垃圾-整理算法,都会涉及句柄的开销或是面对碎片化的内存回收,所以,复制算法 出现了。

复制算法将内存区域均分为了两块(记为S0和S1),而每次在创建对象的时候,只使用其中的一块区域(例如S0),当S0使用完之后,便将S0上面存活的对象全部复制到S1上面去,然后将S0全部清理掉。

复制算法的优势是:① 不会产生内存碎片;② 标记和复制可以同时进行;③ 复制时也只需要移动栈顶指针即可,按顺序分配内存,简单高效;④ 每次只需要回收一块内存区域即可,而不用回收整块内存区域,所以性能会相对高效一点。

但是缺点也是很明显的:可用的内存减小了一半,存在内存浪费的情况。

所以 复制算法 一般会用于对象存活时间比较短的区域,例如 年轻代,而存活时间比较长的 老年代 是不适合的,因为老年代存在大量存活时间长的对象,采用复制算法的时候会要求复制的对象较多,效率也就急剧下降,所以老年代一般会使用上文提到的 标记-整理算法。

 

4.Generational Collection(分代收集)算法
        分代收集算法是目前大部分JVM的垃圾收集器采用的算法。它的核心思想是根据对象存活的生命周期将内存划分为若干个不同的区域。一般情况下将堆区划分为老年代(Tenured Generation)和新生代(Young Generation),老年代的特点是每次垃圾收集时只有少量对象需要被回收,而新生代的特点是每次垃圾回收时都有大量的对象需要被回收,那么就可以根据不同代的特点采取最适合的收集算法。

        目前大部分垃圾收集器对于新生代都采取Copying算法,因为新生代中每次垃圾回收都要回收大部分对象,也就是说需要复制的操作次数较少,但是实际中并不是按照1:1的比例来划分新生代的空间的,一般来说是将新生代划分为一块较大的Eden空间和两块较小的Survivor空间,每次使用Eden空间和其中的一块Survivor空间,当进行回收时,将Eden和Survivor中还存活的对象复制到另一块Survivor空间中,然后清理掉Eden和刚才使用过的Survivor空间。

        而由于老年代的特点是每次回收都只回收少量对象,一般使用的是Mark-Compact算法。

        注意,在堆区之外还有一个代就是永久代(Permanet Generation),它用来存储class类、常量、方法描述等。对永久代的回收主要回收两部分内容:废弃常量和无用的类。

4.典型的垃圾收集器
        垃圾收集算法是 内存回收的理论基础,而垃圾收集器就是内存回收的具体实现。下面介绍一下HotSpot(JDK 7)虚拟机提供的几种垃圾收集器,用户可以根据自己的需求组合出各个年代使用的收集器。

1、Serial/Serial Old
        Serial/Serial Old收集器是最基本最古老的收集器,它是一个单线程收集器,并且在它进行垃圾收集时,必须暂停所有用户线程。Serial收集器是针对新生代的收集器,采用的是Copying算法,Serial Old收集器是针对老年代的收集器,采用的是Mark-Compact算法。它的优点是实现简单高效,但是缺点是会给用户带来停顿。

2、ParNew
        ParNew收集器是Serial收集器的多线程版本,使用多个线程进行垃圾收集。

3、Parallel Scavenge
        Parallel Scavenge收集器是一个新生代的多线程收集器(并行收集器),它在回收期间不需要暂停其他用户线程,其采用的是Copying算法,该收集器与前两个收集器有所不同,它主要是为了达到一个可控的吞吐量。

4、Parallel Old
        Parallel Old是Parallel Scavenge收集器的老年代版本(并行收集器),使用多线程和Mark-Compact算法。

5、CMS
        CMS(Current Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,它是一种并发收集器,采用的是Mark-Sweep算法。

6、G1
        G1收集器是当今收集器技术发展最前沿的成果,它是一款面向服务端应用的收集器,它能充分利用多CPU、多核环境。因此它是一款并行与并发收集器,并且它能建立可预测的停顿时间模型。

Java核心面试题——精选36道核心面试题 目录java核心面试题1、java个版本中更新的重要功能1.1 java 14版本中更新的重要功能1.2 java 13版本中更新的重要功能1.3 java12版本中更新的重要功能1.4 java11版本中更新的重要功能1.5 java10版本中更新的重要功能1.6 java9版本中更新的重要功能1.5 java8版本中更新的重要功能2、java面向对象编程的特征3、 [JVM](https://blog.youkuaiyun.com/issunmingzhi/article/details/104774941)4、J 阅读详情

相关推荐

java面试题

当线程 A 持有独占锁a,并尝试去获取独占锁 b 的同时,线程 B 持有独占锁 b,并尝试获取独占锁 a 的情况下,就会发生 AB 两个线程由于互相持有对方需要的锁,而发生的阻塞现象,我们称为死锁。反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。

m0_74824845的博客 1213

java高级面试题总结

目录1、java基础2、数据库3、java多线程4、jvm、java内存模型5、java框架(spring boot,sprint cloud)6、中间件7、算法8、网络 1、java基础 ###hashmap原理?扩容 ##arraylist原理?扩容 ##jdk1.8新特性? 2、数据库 ##mysql索引优化 https://www.cnblogs.com/qlqwjy/p/8592043....

weixin_40027906的博客 6101

【银河麒麟服务器】银河麒麟V10 SP3高级服务器操作系统网卡配置完全指南:图形界面、Network、NetworkManager、IP 地址、路由与端口聚合详解

本文系统介绍了银河麒麟V10SP4服务器操作系统的网络配置方法,涵盖图形界面、NetworkManager、nmcli命令行等多种配置方式。重点讲解了IP地址设置、路由管理以及端口聚合(Bonding)的实现,包括传统配置文件、nmcli和nmtui三种Bonding配置方案。文章对比了NetworkManager与传统network服务的区别,并提供了常见网络问题的排查建议。通过多种配置方法的详细说明,帮助用户掌握银河麒麟服务器系统的网络管理技能,构建稳定可靠的网络环境。

YHLCCY的博客 5382

【Java面试题】第七期:Java进阶篇,每周10道,根本停不下来~

什么是反射? 描述一下类加载过程? 描述一下有哪些类加载器及其区别? 描述一下类加载机制? 详细描述一下双亲委派模型? 描述一下JVM的内存结构及其作用? 描述一下对象的创建过程? 说一下堆栈的区别? 队列和栈是什么?有什么区别? Java 中都有哪些引用类型?

Technology changes the world of life 1547

TruckSim与Simulink联合仿真中的车轮转角精确控制策略

本文深入探讨了TruckSim与Simulink联合仿真中实现车轮转角精确控制的关键策略。针对多轴车辆路径跟踪时转角指令失灵的常见问题,核心在于正确配置TruckSim转向轴的外部输入模式(Advanced Settings),并确保仿真接口的稳定搭建。文章详细解析了从单轴到多轴协同转向的配置方法,并提供了提升MPC路径跟踪精度的实战技巧与调试经验。

weixin_29035147的博客 367

caverdock如何使用,一文给你多方案教学!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1388

Java面试题-进阶篇(2022.4最新汇总)

Java面试题-进阶篇 1. 基础篇 2. JVM篇 3. 多线程&并发篇 4. Spring篇 5. SpringBoot篇 6. SpringCloud篇 7. Mybatis篇 8. Mysql篇 9. Redis篇 10. RabbitMQ篇 11. ElasticSearch基础篇 12. Linux篇

weixin_45698637的博客 6926

2026最新openclaw(clawbot/moltbot)真正在自己个人电脑上搭建部署,配置飞书远程远程让AI助理操控电脑完成任务,以及结合ollama无限token实现7*24小时工作(附配置)

2026最新openclaw(clawbot/moltbot)真正在自己个人电脑上搭建部署,配置飞书远程远程让AI助理操控电脑完成任务,以及结合 ollama 无限token实现7*24小时工作,以及部署安装需要的 skills 完成复杂的工作任务(附完整可以运行的配置文件)。 很多人已经会配置安装 openclaw 了 ,但是 安装完成之后真正让电脑自动运行起来的很好,完成出色工作的更少,最常见的就是聊聊天,或者执行一些简单的命令,理解要让电脑自动化工作,openclaw、skills、大模型这三样。

代码讲故事 2963

Java进阶面试-高频面试题详解(一)

Java进阶面试-高频面试题详解(一)

chengbo_eva的博客 682

LED灯闪烁实验:实验介绍

每个章节都会单独进行验证工作,例如Simulink开发的应用层软件,会在Simulink-TestHarness中进行仿真,通过Scope示波器模块输出0-1交替的结果。CubeIDE集成双方的代码后,会烧写到开发板中验证是否按照定义的时间进行闪烁。ST-LINK V2是STM32开发生态系统中常用的硬件调试接口,能够连接微控制器与开发环境,实现程序的下载、调试和分析。STM32F103C8T6最小系统板是基于STM32F103C8T6微控制器的开发板,本实验会涉及使用板载的连接PC13引脚的LED灯。

u013288925的博客 457

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

伶俐角少儿编程 639

【Java面试题】第八期:Java进阶篇,每周10道,根本停不下来~

什么是字节码?好处是什么? 什么是Java序列化?何时需要序列化?如何实现序列化? 怎么判断对象是否可以被回收? 说一下 JVM 的垃圾回收器都有哪些?有什么区别? 说一下 JVM 有哪些垃圾回收算法? 详细介绍一下 CMS 垃圾回收器? 什么是STW? 简述分代垃圾回收器是如何工作的? 说一下 JVM 调优的工具? 常用的 JVM 调优的参数都有哪些?

Technology changes the world of life 1410

电子电器架构 -- 汽车零部件DV试验与PV试验的定义及关键差异

电子电器架构 -- 汽车零部件DV试验与PV试验的定义及关键差异

Soly_kun的博客 733

JAVA进阶篇——线程,dubbo面试题总结

Java架构进阶面试及知识点文档笔记这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理Java分布式高级面试问题解析文档其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!互联网Java程序员面试必备问题解析及文档学习笔记Java架构进阶视频解析合集Java分布式高级面试问题解析文档其中都是包括分布式的面试问题解析,内容有。

m0_60607971的博客 1045

图像拼接——ITKMontage

ITKMontage是一个开源的、高性能的图像拼接软件模块。它的核心任务是将多张部分重叠的图像瓦片(Tiles)拼接成一幅完整的大图,专为处理材料显微科学中产生的大规模、高分辨率图像而设计。针对ITKMontage模块中示例进行了修改,解决了没有文件TileConfiguration.txt的情况,以及使用中的一些BUG。ITKMontage可以单独编译,也可以作为ITK的一个模块进行编译,介绍后一种的cmake设置。本文介绍使用ITKMontage模块进行图像拼接的方法。此处省略编译后的库配置。

2301_79131410的博客 100

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java基础进阶篇面试题

java基础&进阶面试题

weixin_53324450的博客 286

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java 并发常见知识点&面试题总结(进阶篇)

关键字解决的是多个线程之间访问资源的同步性,关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在 Java 早期版本中, 属于 重量级锁,效率低下。为什么呢?因为监视器锁(monitor)是依赖于底层的操作系统的 来实现的,Java 的线程是映射到操作系统的原生线程之上的。如果要挂起或者唤醒一个线程,都需要操作系统帮忙完成,而操作系统实现线程之间的切换时需要从用户态转换到内核态,这个状态之间的转换需要相对比较长的时间,时间成本相对较高。庆幸的是在 Java 6 之后 Java 官方

飘然渡沧海的博客 336

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Java面试题】第五期:Java进阶篇,每周10道,根本停不下来~

Object类中常用的方法? Java 中 IO 流分为几种?BIO、NIO、AIO有什么区别? 对面向对象的理解?面向对象语言的三大特征? 多线程创建的各种方式? 进程和线程的区别? 并行和并发的区别? 守护线程是什么? 线程有哪些状态? notify()和 notifyAll()有什么区别? sleep()和 wait()的区别?

Technology changes the world of life 1255

Java面试题总结------进阶篇(不定时更新)

华为的面试题中曾经问过这样一个问题 - “为什么不能根据返回类型来区分重载” 方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能...

qq_40673345的博客 214

【Java面试题】第四期:Java进阶篇,每周10道,根本停不下来~

深拷贝和浅拷贝的区别? Math.round(1.5)和Math.round(-1.5) 分别等于多少? Java中涉及金额的操作,应该使用什么数据类型? HashMap的扩容机制?(JDK1.8) HashMap的put方法的执行流程?(JDK1.8) JDK1.7和JDK1.8两个版本中的HashMap有什么区别? ConcurrentHashMap的扩容机制?(JDK1.8) HashMap类中的成员变量有哪些,分别有什么作用? List和Set的区别? ArrayList和LinkedList的区别

Technology changes the world of life 1162

Java进阶篇(六)——Swing程序设计(上),java面试题,java基础笔试题,BAT

写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。扫码加微信好友进【程序员面试学习交流群】,免费领取。也欢迎各位一起在群里探讨技术。 Swing是GUI(图形用户界面)开发工具包,内容有很多,这里会分块编写,但在进阶篇中只编写Swing中的基本要素,包括容器、组件和布局等,更深入的内容这里就不介绍了。想深入学习的朋友们可查阅有...

agoodcoder777的博客 971

mysql试题百度云_2019年Java面试宝典系列合集·面试题看这篇就够了

本文整理、搜集了网上大部分的Java面试题,并进行了分类,共分为三个篇章,总共52篇,上千道面试题,包含了基础面试题、常见面试题、各知识点面试题附答案、面试题真题以及面试经验。文末附还附赠了面试真题和大厂面经,以及我司整理自毕业学员反馈的450道面试真题,有意者可私信获取。下面是正文:基础篇:动力节点:2019Java面试宝典系列|基础篇1动力节点:2019年Java面宝典系列|基础篇2动力节点:...

weixin_33092503的博客 193

面试题汇总

本文将汇总一系列 Java 面试题,并附上详细的代码示例,可以通过点击进行跳转。持续更新…

Jz_Stu的博客 580

Java高级面试题总结

本文内容涉及中高级面试知识点,涵盖众多大厂面试题

前方一片光明 1万+

【面试】——Java面试题内容总结

往期内容聚合 设计模式内容聚合 面试技术文 Java岗 面试考点精讲(基础篇01期) Java岗 面试考点精讲(基础篇02期) Java岗 面试考点精讲(网络篇03期) Java 面试中遇到的坑 Java面试中遇到的坑【填坑篇】 Java面试中遇到的坑【篇二】 java面试遇到的坑[第三期] java面试填坑解惑篇[三] java面试遇到的坑[第四期] 面试官:你分析...

我爱吃土豆 5921

java面试题及答案2024,java2024最新面试题及答案(之一)

== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。

码界云仓 1526
上一篇: Java面试题——中间件
璞小玉
博客等级 码龄5年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值