String中的equals方法解析 jdk1.7

注  此篇为jdk1.7中的源码解析

equals()方法中的判断分一下步骤

1先判断内存地址是否相同  如果内存地址相同 那么字符串就是相同的 返回true

2 判断当前字符串和参数字是否属于同一类    如果不相等 返回false

3比较字符串长度(也就是char[]数组)是否相等  不相等返回false

4 逐个字符比较 如果不相等 返回false

下面贴上源码

  public boolean equals(Object anObject) {
        if (this == anObject) {// 1先判断内存地址是否相同  如果内存地址相同 那么字符串就是相同的 返回true
            return true;
        }
        if (anObject instanceof String) {//2 先判断当前字符串和参数字是否属于同一类
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {//3比较字符串长度(也就是char[]数组)是否相等  不相等返回false
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i]) //4 逐个字符比较
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

此篇为个人原创 如有雷同 纯属巧合   如有错误 请各位提醒

如若转载 请注明出处

原文地址:https://www.cnblogs.com/guoyafenghome/p/8893166.html

时间: 2024-10-06 22:52:50

String中的equals方法解析 jdk1.7的相关文章

【转】彻底弄懂Java中的equals()方法以及与"=="的区别

彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差.所以,我决定花费时间把equals()和“==”的功能彻底弄懂,前事不忘后事之师嘛,分享给大家,希望对大家理解equals()和“==”的功能有所帮助. 二.分析探索解决问题的方法:1.Object 中的equals()方法: (1)通过查找API,说明如下: equalspublic boolean equ

问题1、java.lang中String类和Object类中的equals方法比较

String类中的equals方法重写了Object类中的equals方法,下面通过代码来比较二者的不同之处: 一.String类 1. String s1 = "String"; String s2 = "String"; System.out.println(s1 == s2 ); System.out.println(s1.equals(s2));

Java中“==”与equals方法的区别

1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:String类对equals进行了重写:1)若是同一个对象,返回true: 2)若不是,则比较它们的值,值相同,返回true 重写代码: public boolean equals(Object anObject) { if (this == anObject) { return true; } if

重写object类中的equals方法

package equalsdemo; /* * 重写object中的equals方法 */ public class equalsdemo { public static void main(String[] args) { person p1 = new person("zhangsan",54); person p2 = new person("zhangsan",54); if (p1.equals(p2)) { System.out.println(&qu

JAVA中复写equals方法

一般说来,所有类都应该复写Object中的equals方法.步骤大概分三步: 1) 判断两个对象地址是否一致 2)判断第二个对象是否为同一个子类实例 3)判断内容是否一致 class Person { public int age; public String name; public Person(int age, String name) { this.age = age; this.name = name; } public boolean equals(Object obj) { //第

C#中==与Equals方法的区别

usingSystem;using System.Collections.Generic;using System.Linq;using System.Text; namespace ConsoleApplication1{    class Person    {        private string name;        public string Name        {            get { return name; }            set { name

java中‘==’和‘equals()’方法的有趣探索

这两天在看周志明的<深入理解java虚拟机>,受益颇多,根据书中的启示,对java中'=='和'equals()'方法的区别做了一些探索. 首先,为了更快地让进入状态,我们先来所几个判断题,例程如下,请判断各个System.out.println()输出的结果. <pre name="code" class="java"> public static void main(String[] args) { Integer a =1; Integ

Object 类中的 equals方法

1 相等与同一 如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等.如果两个引用对象指的是同一个对像,则称这两个变量同一.Object类中定义的equals 函数原型为:public boolean equals(Object);他是判断两个对象是否同一,并不是是否相等. 2 equals方法 由于Object 类是所有类的最高基类,所有其他类都继承类Object类的equals()方法,定义原型如下: public boolean equals (Object x){ return

如何重写Java中的equals方法

Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型,不论是对象数组,列表等都扩展了Object类.了解学习Object中方法的设计原理和实现方式有助于更好的学习理解java语言.下面,我们首先学习一下Object中的equals方法. 判断两个对象相等时,JVM首先查找两个对象的hashCode, 如果两者hashCode不同,则返回false;如果