#Java:intern #字符串:equals == @FDDLC
发布日期:2021-06-30 21:05:07
浏览次数:2
分类:技术文章
本文共 1021 字,大约阅读时间需要 3 分钟。
一、equals:形式:a.equals(b)
1、用途:比较两个对象是否相等
如果a、b类型不同,结果肯定为false。下面的论述都是a、b类型相同的情况。
2、如果对象所属的类没有重写equals,则调用Object的equals方法:
上面牵扯到==,这里提前讲一下:对于两个对象来说,==比较的是两个对象的引用地址是否相等,即指向的是否是同一个对象。
3、如果对象所属的类重写了equals,则按重写之后的规则进行比较
示例:String类型重写了equals,规则为:如果内容一样,就返回true(与重写前相比,要求放宽了)
二、==
1、用途:
如果两边都是基本类型,或者一边是基本类型,另一边是包装类(会自动拆箱变成基本类型),则比较值是否相等;
如果是对象,则比较引用地址是否相同,即是否是同一个对象。
三、字符串
1、字符串的地位:
a、字符串不是基本类型,但它涉及到一个特殊的东西:字符串池
b、字符串常量(比如String s="abc")保存在字符串池中,即使声明了多个内容相同的字符串常量,字符串池中也只有一个副本(即多个内容相同的字符串常量,地址相同)
c、其他字符串(比如String s1=new String("abc"),s2="123"+s1)和普通对象一样保存在堆栈中
2、示例
System.out.println("abc"=="abc");//true:因为左边和右边都指向字符串池中的同一个字符串,地址相同 System.out.println("abc"==new String("abc"));//false:左边的对象是个特殊对象,保存在字符串池;右边的对象是一个普通对象,不在字符串池 System.out.println(new String("abc")==new String("abc"));//false:两边都是普通对象,且是两个不同的对象
3、intern:
a、用法:
String returnValue=x.intern();
b、作用:
如果字符串池中没有和x内容相同的字符串,则克隆一份x的副本,加到字符串池中,并把字符串池中的副本引用返回。注意:并非原件,而是副本!
如果字符串池中已经存在和x内容相同的字符串,则直接返回字符串池中的引用
c、测试:
1)、示例1
2)、示例2
3)示例3
4)、示例4
5)、示例5
6)、示例6
转载地址:https://liuxingchang.blog.csdn.net/article/details/116516633 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月30日 05时27分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CodeForces - 761C Dasha and Password (思维 暴力)
2019-04-30
POJ - 2481 Cows (树状数组 入门题)
2019-04-30
ACM-ICPC 2018 焦作赛区网络预赛 I. Save the Room
2019-04-30
CodeForces - 987C Three displays (暴力/dp)
2019-04-30
计蒜客 NAIPC 2016 F. Mountain Scenes(dp)
2019-04-30
牛客国庆集训派对Day4——I 连通块计数(思维)
2019-04-30
牛客国庆集训派对Day4——G 区间权值(找规律,双重前缀和)
2019-04-30
牛客国庆集训派对Day5——L 数论之神(找规律/数论)
2019-04-30
CodeForces - 629B Far Relative’s Problem(模拟)
2019-04-30
CodeForces - 1059B Forgery (思维)
2019-04-30
CodeForces - 456C Boredom (dp)
2019-04-30
CodeForces - 960B Minimize the error (思维,贪心)
2019-04-30
CodeForces - 97B Superset (思维/分治/构造)
2019-04-30
CodeForces - 675A Infinite Sequence(简单数论 细节)
2019-04-30
CodeForces - 1042B Vitamins (思维)
2019-04-30