equals()

equals() 方法用于将字符串与指定的对象比较。

String 类中重写了 equals() 方法用于比较两个字符串的内容是否相等。

语法
public boolean equals(Object anObject)
参数
  • anObject – 与字符串进行比较的对象。
返回值

如果给定对象与字符串相等,则返回 true;否则返回 false。

实例
public class Test {public static void main(String args[]) {String str1 = new String("hello");String str2 = str1;String str3 = new String("hello");boolean retVal;retVal = str1.equals(str2 );System.out.println("返回值 = " + retVal );retVal = str1.equals( str3 );System.out.println("返回值 = " + retVal );}
}

以上程序执行结果为:

返回值 = true
返回值 = true

使用 ==equals() 比较字符串。

String 中 == 比较引用地址是否相同,equals() 比较字符串的内容是否相同:

String s1 = "Hello";              // String 直接创建
String s2 = "Hello";              // String 直接创建
String s3 = s1;                   // 相同引用
String s4 = new String("Hello");  // String 对象创建
String s5 = new String("Hello");  // String 对象创建s1 == s1;         // true, 相同引用
s1 == s2;         // true, s1 和 s2 都在常量池中,引用相同
s1 == s3;         // true, s3 与 s1 引用相同
s1 == s4;         // false, 不同引用地址
s4 == s5;         // false, 堆中不同引用地址s1.equals(s3);    // true, 相同内容
s1.equals(s4);    // true, 相同内容
s4.equals(s5);    // true, 相同内容
源码
 public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

先比较指针地址是否相同

 在比较是否字符串

​ 比较字符串数组长度是否相等

​ 倒叙比较字符是否相等

【Java源码分析】String 比较 equals相关推荐

  1. 【Java源码分析】Java8的HashMap源码分析

    Java8中的HashMap源码分析 源码分析 HashMap的定义 字段属性 构造函数 hash函数 comparableClassFor,compareComparables函数 tableSiz ...

  2. Java源码分析之HashMap(JDK1.8)

    一.HashMap概述 HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现.与HashTable主要区别为不支持同步和允许null作为key和value.由于HashMap不是线程 ...

  3. 坦克大战java源码分析(上)

    坦克大战源码分析 一.mytank07.java文件分析 注:至上而下将不懂的语句.结构体含义.代码作用等作出解释: 1.包的使用 package com.haiding.tank_7; 包语句的语法 ...

  4. 【Java源码分析】Java8的ArrayList源码分析

    Java8的ArrayList源码分析 源码分析 ArrayList类的定义 字段属性 构造函数 trimToSize()函数 Capacity容量相关的函数,比如扩容 List大小和是否为空 con ...

  5. python打蛇_hprose for java源码分析-1 初识

    1.1初识 hprose是个开源RPC框架.支持语言 JAVA, C#,C++,Python,PHP等一系列语言.这里着重分析下hprose for java源码. 可以到https://github ...

  6. 【Java源码分析】LinkedHashSet和HashSet源码分析

    类的定义 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, ...

  7. java 源码分析_Java 源代码编译成 Class 文件的过程分析

    原标题:Java 源代码编译成 Class 文件的过程分析 在上篇文章< Java三种编译方式:前端编译 JIT编译 AOT编译 >中了解到了它们各有什么优点和缺点,以及前端编译+JIT编 ...

  8. Java源码分析 AbstractList的迭代器实现(Itr和ListItr)

    Itr和ListItr的简介 AbstractList的有两个内部类实现了迭代器,一个内部类Itr实现了Iterator接口,一个内部类ListItr实现了ListIterator接口,后者其实就是前 ...

  9. 【JAVA源码分析——Java.lang】String源码分析

    String 基本实现 初学java经常会误认为String是java基本类型,实际上String并非Java基本类型,String本质上是对char数组的封装. 以下是String实现相关源码 /* ...

最新文章

  1. 用神经网络分类远和近
  2. 中国靶材行业投资价值与发展机遇研究报告2022版
  3. Django模型(二)
  4. CentOS修改主机名(hostname)
  5. [RabbitMQ]RabbitMQ概念_四大核心概念
  6. maven 构建依赖树_Maven构建依赖项
  7. JNA—JNI终结者
  8. python爬取新闻存入数据库_python 爬取古诗文存入mysql数据库的方法
  9. 如何提高VS2010的性能,VS2010不再…
  10. date工具类 DateUtils.java
  11. datatables 树形表格 java数据组装_实学:Java开发自己的博客系统-第三十篇(后台添加栏目功能-4)...
  12. 福州大学 Problem 2169 shadow
  13. hdu1527取石子游戏---(威佐夫博弈)
  14. Rplidar学习(二)—— SDK库文件学习
  15. 【转载】从创业者角度看《印度合伙人 Padman》后的一点感受
  16. 机器学习笔记(八):强化学习
  17. 密码校验规则前台验证
  18. PDF文件中电子签名(安全性、有效性、合法性)验证指南
  19. 定制婚礼小程序开发功能
  20. 头哥实践教学平台 CC++程序设计(计算机程序设计)基本输入输出

热门文章

  1. (SCI论文写作)使用Visio导出图片时,边角有黑色框线和大块留白的解决办法(PDF,jpg,png等多格式通用)
  2. 前端JS获取当前使用的操作系统类型
  3. 多传感器融合定位 课程概述
  4. gtsam配置MATLAB toolbox
  5. 新网站500内部服务器错误,解决网站http服务器内部500错误
  6. 快速排斥实验amp;跨立实验 判断两直线是否相交
  7. 常用数学符号的读法及其含义
  8. Starry Night
  9. 用了这种键盘后,我发现了新世界!
  10. 小明和小强推理老师的生日