Java面试 - String和Integer对象 == 和 equals比较 问题汇总

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

== 和equals()

== 它的作用是判断两个对象的地址是不是相等,即判断两个对象是不是同一个对象
基本数据类型比较的是值,引用数据类型比较的是地址
equals() 是判断两个对象是否相等,如果没有重写equals() 方法,就和两个等号的意思是一样的

为什么要有hashcode?

为了减少equals()的比较次数,只要当hashcode相同的时候才会进行equals()的比较,极大提高了效率

为什么重写了equals()后就要重写hashcode方法

如果不重写hashcode方法的话,两个对象进行比较的时候就会调用object类的hashcode方法来计算hashcode,而object类的hashcode方法是通过内存地址来计算hashcode的,就可能会导致该class的两个对象无论如何都不会相等的

java对象的四种比较方式

== equals compareTo compare
如何保证元素唯一性?
根据比较元素的返回值是否为0来决定
向TreeSet中添加的数据,要求是相同类的对象
两种排序方式:自然排序(实现Comparable接口)
添加的类实现comparable接口,重写comparaTo()方法
和定制排序comparator
Comparator com = new Comparator(){
//重写compara方法
}
自然排序中,比较两个对象是否相等的标准是:comparaTo() 返回0
定制排序是 compare() 返回0

String类的比较

https://juejin.cn/post/6844903497708601351#heading-9
https://juejin.cn/post/6

IntegerStringequals方法 所以a == b, c == d返回都为false。上面这段代码首先规定了一个范围,默认是-128-127之间,如果参数中的i在这个范围之内,则返回一个数组中的内容,如果不在这个范围,则new一个新的Integer对象并返回。如上所示Object类的equals方法使用的是==比较方式,如果是两个引用类型,比较的就是两个引用地址是否相等。equals方法是Object类中的方法,java中所有的对象均继承自Object类,也就继承了equals方法,Object类equals方法的实现。 阅读详情

相关推荐

java integer 相等,java基本对象Integer,String比较相等及equal案例说明

Integer i = new Integer(100);Integer i2 = new Integer(100);if(i == i2){System.out.println("AAAAAAAAAA");}if(i.intValue() == i2.intValue()){System.out.println("BBBBBBBBBB");}String i3 = "100";String i4...

weixin_35976993的博客 781

IntegerString比较解析

Integer在遇到运算符时会进行自动拆包。缓存存储的范围为-128~127 字符串缓存。package com.jvmtest; public class ZhiDongZhuangXiang { public static void main(String[] args) { Integer a=1;//Integer a = Integer.valueOf(1); Integ...

dhfzhishi的专栏 5178

Java IntegerString比较操作

// [-128,127] 自动装箱(box),同值是同一个对象 Integer a = 1; Integer b = 1; System.out.println("i1:" + (a == b)); // true// 不在[-128,127]装箱的Integer,值相同也不是同一个对象 a= 128; b = 128; System.out.println("i2:" + (a == b));

huabinzheng的博客 3824

关于Integer、 int、 String比较判别

当int Integer 数据类型进行比较Integer会进行自动拆箱操作,所以只会比较实际的值 Integer是int的封装类,一般来说基础变量(int)赋值给Integer对象将自动装箱(Auto Boxing)并为Integer对象分配堆空间 String 的机制是String s="hello" 创建对象时同样是现在常量池中找,若没有就创建,若有则返回地址引用

ZM1984L的博客 868

Java面试——从JVM角度比较equals==的区别

1. Java中数据类型分类 1.1基本数据类型 又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(==),比较的是他们的值。 1.2复合数据类型 当复合数据类型用(==)进行比较比较的是他们在内存中的存放地址。 当复合数据类型之间进行equals比较时,这个方法的初始行为是比...

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 1万+

Java面试知识点(十一)关于integerstring==equals判断

一、integer== public class Test03 { public static void main(String[] args) { Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150; System. out.println( f1 ==...

程序员世杰 4660

==比较地址,equals比较值?错了!!【一文搞懂==equals 的底层区别】

“你是如何理解==equals的?” 迄今最完整的回答!

1万+

面试官:Javaequals == 的区别?很多人答错

本文深入解析了Javaequals==的区别。==比较基本类型的值或引用类型的地址,而equals默认比较地址但可被重写(如String比较内容)。文章详细讲解了String常量池、包装类缓存池等机制,并提供了代码示例实际应用场景(如集合去重)。最后总结了两者的核心区别,指出面试中仅回答"比较地址/内容"是不够的,需深入理解底层原理。附完整面试题库链接。

huazaijake的博客 413

Java对象比较==equals()的深度解析

Java编程中,对象比较是基础但关键的操作,涉及引用比较与内容比较两种机制。==运算符用于比较基本数据类型的值或对象的引用地址,而equals()方法则用于比较对象的内容逻辑相等性。理解这两种比较方式的区别对于避免常见编程错误至关重要,特别是在处理字符串、集合框架自定义对象时。从JVM实现层面看,==直接比较栈顶引用,性能更高;而equals()作为方法调用更灵活但开销略大。实际开发中,正确使用比较机制能提升代码健壮性,如在哈希集合操作时必须保持equals()与hashCode()的一致性。掌握这些核

weixin_34327223的博客 363

Java==equals() 的区别

Java==equals()的区别: ==用于基本类型比较值,引用类型比较内存地址 equals()是Object类方法,默认比较地址,但String/包装类等通过重写实现内容比较 关键区别:==判断"是否同一个对象",equals()判断"逻辑是否相等" 注意事项:字符串常量池、包装类缓存、equals与hashCode契约 实用建议:比较对象内容用equals(),基本类型用==,null安全比较推荐"常量.equals(变量)"

2303_77517907的博客 1032

java面试中 “ == equals “ 的区别

Java面试==equals的区别是高频考点。==是运算符,比较基本类型的值或引用类型的地址;equals是方法,默认比较地址但可重写为比较内容。关键区别在于:基本类型只能用==,引用类型equals可自定义比较逻辑。需特别注意String常量池复用Integer缓存机制带来的==比较陷阱,以及重写equals时要遵循自反性、对称性等原则。面试应答应先概括核心区别,再分场景举例说明,最后总结最佳实践:基本类型用==,引用类型比较内容用equals比较对象同一性用==。掌握这些细节能避免常见面试陷阱。

2403_85172219的博客 474

equals==有什么区别?

对于 Object 来说,equals 是用 == 实现的,所以二者是相同的,都是用来比较两个对象的引用是否相同的,但 Java 中的其他类,都会重写 equals 让其变为值比较,而非引用比较,如 Integer String 都是这样。

码上言 1096

你真的知道 == equals 的区别吗?

Java== equals 的区别,感觉只有很少的人能才完全说正确。 常见的错误回答就是:== 基础类型对比的是值是否相同,引用类型对比的是引用是否相同;而 equals 则是比较的值是否相同。 至于为什么说它是错的,看完本文对 == equals 的解读,你就知道了。 1、== 解读 对于基本类型引用类型 == 的作用效果是不同的,如下所示: 基本类型:比较的是值是否相同;...

磊哥聊Java 1314

面试官:请说说==操作符equals(),从基本数据类型引用数据类型两个角度谈谈

本篇主要讲解一道java面试题:==操作符equals()的知识点,可以说是高频面试题了,快来看看。

知识记录 2057

面试中问到==equals()的区别与用法

1、背景介绍 == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象比较的是真正意义上的指针操作。 equals 用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。 2、基本数据类型 byte,short,char,int,long,fl...

G探险者的博客 4283

javaequals==【各种包括面试题】

javaequals==【各种包括面试题】 1.对于java== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型。 byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 基本数据类型比较(string 除外), ==比较值; 2.复合(引用)数据类型(类) ...

qq_40332727的博客 718

Java==equals的区别及正确使用场景

Java编程中,对象比较是基础但容易出错的操作。==操作符比较基本数据类型的值或引用类型的内存地址,而equals()方法用于比较对象的内容。理解二者的本质区别对编写健壮代码至关重要,特别是在处理字符串比较、集合操作等场景时。本文通过实际案例剖析==equals()的底层原理,解释为何在HashMap等集合中使用时必须同时重写equalshashCode方法,并给出枚举比较、数组比较等特殊场景的最佳实践。掌握这些知识能有效避免生产环境中的逻辑错误安全漏洞,提升代码质量。

weixin_34405557的博客 265

Java==equals()的区别

&emqe;在Java学习面试中经常遇到这个问题,虽然简单,但是值得深究一下。 一、对于基本数据类型 先看一下下面的代码: int a = 123; int b = 123; System.out.println(a == b);//结果为:true String s1 = "123"; String s2 = "123"; System.out.println(s1 == s2);//结果为:true String s3 = new String("123"); System.out.pr

hongfenglx的博客 334
上一篇: Java面试题-各种流程问题
下一篇: Java面试 - Java集合
张子枫的男朋友呀
博客等级 码龄9年 3粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值