String类equals()方法详解

下面我们先看一段代码:

这段代码输出的结果为:

ture

true

--------------

false

咋看之下貌似Object类比较特别,那么我们看一下Object下的equals()方法的源代码

Object下的queals()方法十分简单,就是单纯的判断这两个引用是不是指向同一个对象,是的话返回true,不是的话返回false。

可是把这个方法应用在上面代码的String对象身上明显不对,那么String类里面必定重写了equals()方法,来看一下它的源代码:

重这个方法的源代码可以看出,String类的equals()方法时这样运作的:

1)先判断两个引用是否指向同一个对象,是的话直接返回true。

2)判断实参是否是String的一个实例,不是的话直接返回false。

3)实参是String的一个实例,那么把实参的传进来的字符串 逐个字符 与 当前字符对比看看是否一致。

总结:

A)equals()方法:该方法定义在Object类当中,因此Java的每个类都有该方法,对于Object类的equals()方法来说,它判断调用者与传进来的引用时否指向同一个对象。所以对于Object类来说,equals()方法等价于==。

B)对于String类来说,equals()方法判断当前字符串与传进来的字符串的内容是否一致。

时间: 2024-07-28 23:59:20

String类equals()方法详解的相关文章

Object类和String类equals方法有什么区别?

相信很多学习过Java的同学都知道,在比较两个String对象的内容是否相同时是使用equals方法的 如:String str1=new String("A"); String str2=new String("B"); String str3=new String("B"); boolean result1= str1.equals(str2); boolean result2= str2.equals(str3); System.out.p

Java equals方法详解

Java的Object类中定义了equals方法,Object类中的equals方法源代码如下,从源代码中可以看出Object类中的equals方法是用来返回判断两个对象是否指向同一个地址 public boolean equals(Object obj) { return (this == obj); } Ojbect类中的equals方法会被子类重写,例如String会重写equals方法,String的equals方法源代码如下, public boolean equals(Object

java中的String类常量池详解

test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[] args){ String a = "a1"; String b = "a"+ 1; System.out.println(a==b); }//true } test2: package StringTest; public class test2 { /** *

Java中的==和equals方法详解

Java中的==和equals   1.如果比较对象是值变量:只用== 2.如果比较对象是引用型变量: ==:比较两个引用是不是指向同一个对象实例. equals: 首先Object类中equals的实现是直接调用了==操作. 一个自定义类继承自Object且没有重写equals方法,那么其equals操作也是与Object类一样,仅仅是直接调用==操作. 如果一个类重写过equals方法(或者继承自一个重写过equals方法的类),那么效果与==操作不同 如果是你自己定义的一个类,比较自定义类

Android基类设计方法详解

1 为什么要设计基类 为什么要给程序设计基类呢?主要是出于2个原因,一是方便代码编写,减少重复代码和冗余逻辑,优化代码:二是优化程序架构,降低耦合度,方便拓展.修改. ok,编写代码是程序员的第一步,那么第二步就是要编写高质量的代码,代码能实现功能是一方面,写的优美则是另一方面,这也是我们所有攻城狮们应该追求的境界. 2 设计基类的基本思路 那么,哪些东西我们需要抽象到基类中呢? 2.1 重复的代码:如果一个逻辑是大多数子类都需要使用的 2.2 臭而长的代码:典型的findviewbyid.To

String的Intern方法详解

引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存.8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊.它的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中. 如果不是用双引号声明的String对象,可以使用String提供的intern方法.intern 方法会从字符串常量池中查询当前字符串是否存在,

spawn类expect方法详解

本文我们将介绍spawn类的基本方法expect方法,这个方法是用来匹配返回的结果,这个返回的结果是指子程序的返回结果,同时会将匹配的相关信息保存在spawn类的相关属性中. 基本属性包括三个,第一个是before,是匹配点之前的文本,这里的匹配是指用expect这个方法来匹配的结果,那么匹配点之前的文本会放到before,这个实例属性中,并且我们要注意多次匹配时,不包括上次已匹配之前的内容.第二个after,它是用来保存匹配成功的内容,也是同样的是expect这个方法在进行匹配时,匹配成功的内

Java-Arrays类-fill()方法详解

fill()方法使用参考 声明举例: public static void fill(int[] a, form, to, int var) 参数: a--数组 form--替换开始位置(包括) to--替换结束位置(不包括) var--要替换的值 使用参考实例: public class Test { public static void main(String[] args) { int[] a = new int[]{1,2,3,4,5,6}; System.out.println(Arr

基本类型String的原生方法详解

1.字符方法 charAt( index ) 和 charCodeAt( index ) 这两个方法都接收一个参数,即基于 0 的字符索引位置.前者返回对应索引位置的字符,后者返回对应索引位置字符的字符unicode编码(这个返回值是 0 - 65535 之间的整数, 如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN).如: var str = "hello world"; alert( str.charAt(1) ); //charAt(1