==和equals

在Java中,使用字符串常量"a"可以直接创建一个字符串对象,因为Java会将所有的字符串常量都保存在一个字符串常量池中,如果使用相同的字符串常量创建字符串对象,则会指向同一个对象,这样就可以避免不必要的内存浪费。

而对于 "new String("a")" 这种方式,实际上会创建两个对象。第一个对象是字符串常量"a",它会保存在字符串常量池中;第二个对象是通过构造函数创建的字符串对象,它保存在堆内存中。因此,总共会创建两个对象,一个在字符串常量池中,一个在堆内存中。

需要注意的是,如果字符串常量池中已经存在相同的字符串常量,则不会重复创建,而是直接返回该字符串常量的引用。因此,如果再使用相同的字符串常量创建字符串对象时,也只会创建一个对象。

1、String这个类的内部结构是,他有一个字符数组属性,

HahsCode得到的是什么,得到的是通过字符数组里面的每一个元素,转成10进制相加,比如1是49,2是50

equals先是比较地址,是否一样,不一样在比较字符数组的长度和每个数组的内容。

2、包装类型的类里面,其实有个对应的基本类型属性,这和包装类型的值是一样的。

包装类型的equals比较的是什么?包装类型的equals是,把包装类型转成基本类型,然后在比较值是否相等。

hasHcode是怎么得到的,hashCode是拿到这个包装类型里面的基本类型所对应的值,然后转成hash码。

3、"==" 如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。

4、equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。注意String和包装类型的equals比较特殊,他是先比较地址,然后在比较内容。

相关推荐
用户298698530146 小时前
Python 实战:将 HTML 批量转换为 Markdown
python·html·markdown
hhcgchpspk6 小时前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
小小张说故事7 小时前
Python 里 copy.copy() 和 deepcopy() 到底差在哪:拆开 __copy__、__deepcopy__ 和那个防止无限递归的 memo 字典
python
vipxieliang7 小时前
Python collections:高效容器与实战案例
后端·python
青少儿编程课堂7 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
特创数字科技7 小时前
写了个 Windows 下载器:一键拉 GitHub / Gitee 源码,带 SHA256 校验
python·github
白杨尚青7 小时前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
.道阻且长.7 小时前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
starzy19908 小时前
深入理解Scala匿名函数:函数式编程基石
开发语言·scala
郝学胜-神的一滴8 小时前
AI 编程智能体 27:吃透MCP通信机制
人工智能·python·langchain·wpf·numpy·scikit-learn