#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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:#Java命令:java、javap #Java反汇编:简单的例子 @FDDLC
下一篇:#力扣 LeetCode1380. 矩阵中的幸运数 @FDDLC

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月30日 05时27分16秒