注  此篇为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;
}

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

如若转载 请注明出处

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

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

    彻底弄懂Java中的equals()方法以及与"=="的区别 一.问题描述:今天在用Java实现需求的时候,发现equals()和“==”的功能傻傻分不清,导致结果产生巨大的偏差. ...

  2. java中“==”和equals方法的区别,再加上特殊的String引用类型

    ==和equals的区别: 1.==是运算符,而equals是基类Object定义的一个方法,并且equals使用==定义的 2.进行比较时,分为  基本数据类型  的比较和  引用数据类型 的比较 ...

  3. Java 字符串比较,String 中的一些方法 == 和 equals 的详解

    "==" 是比较的是两个对象的内存地址,而equals方法默认情况下是比较两个对象的内存地址. 1.String str = "hello"  生成的字符串,首 ...

  4. String类中的equals()方法:

    String类中的equals()方法: public boolean equals(Object anObject) { //如果是同一个对象 if (this == anObject) { ret ...

  5. String中的“equal方法”和“==”

    二话不说,先来说下重写的事情: 在Java中,String .Math.还有Integer.Double....等这些封装类重写了Object中的equals()方法,让它不再比较其对象在内存中的地址 ...

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

    1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:St ...

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

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...

  8. 重写Object类中的equals方法

    Object是所有类的父亲,这个类有很多方法,我们都可以直接调用,但有些方法并不适合,例如下面的student类 public class Student { //姓名.学号.年纪 private S ...

  9. JAVA中复写equals方法

    在JAVA中“==”用于比较两个引用对象的地址是否相同.但是如果我们想比较两个对象的内容是否相同,通常会覆写equals方法.equals方法用来比较两个对象的内容是否相等. package org. ...

随机推荐

  1. 修改NavigationBar的分根线颜色

    [self.navigationController.navigationBar setShadowImage:[Static ColorToImage:[Static colorWithHexStr ...

  2. Ubuntu 下 mysql 卸载后重安装时遇到的问题

    卸载mysql报错解决方法1 dpkg: error processing mysql-server (--configure): dependency problems - leaving unco ...

  3. Myeclipse下配置struts2和hibernate

    最近维护一个项目,是用struts2做的,所以特意学了下struts的入门,否则代码都看不懂啊.下面记录下过程.Myeclipse 版本为2014.struts2,hibernate为4.1. 1.既 ...

  4. 漫谈JS 的继承方式

    一.原型链原型链的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法.每一个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的指针.如果:我们让 ...

  5. 一次漫长的服务CPU优化过程

    从师父那里接了个服务,每天单机的流量并不大,峰值tips也并不高,但是CPU却高的异常.由于,服务十分重要,这个服务最高时占用了100个docker节点在跑,被逼无奈开始了异常曲折的查因和优化过程. ...

  6. Redis在实际项目中的一应用场景

    1.在游戏的等级排名,可以将用户信息放入到redis的有序集合中,然后取得相应的排名,不用自己写代码去排序. 2.利用rediss的数据特性的自增,自减属性,可以将项目中的一些列入阅读数,点赞数放入到 ...

  7. 微信iOS版更新:可批量管理不常联系的朋友

    iOS版微信更新了v6.5.13版本,在新版本当中微信新增加了可批量管理不常联系的朋友功能,同时在群资料页可以查看最近收到的小程序,不过据网友爆料,腾讯在新的更新日志当中已经删除了“批量管理不常联系的 ...

  8. 【开发者笔记】java 利用jna调用c#的dll

    一.需求阐述: 如果我们的项目利用c#开发,到了开发后期需要和java组进行合作,其中有一部分业务逻辑利用c#已经code completed,那么我们可能会考虑用java来调用现成的c#dll实现需 ...

  9. mysql基础测试

    mysql基础测试 测试原因   为什么需要做性能测试 模拟比当前系统更高的负载,找出性能瓶颈 重现线上异常 测试不同硬件软件配置 规划未来的业务增长   测试分类   性能测试的分类 设备层的测试 ...

  10. cmd 导出导入数据库

    cmd导出 1.