Java中判断字符串是否相等

  • 相等判断操作符`==`
  • 相等判断方法`equals()`
  • `equals()`方法原理
  • 总结

在最近的开发中,我踩到一个坑,过程是这样的。我需要在Java中判断两个字符串是否相等,按照以往的经历使用 == 双等号的操作符来判断,但是在Java中,这样写却没有实现我想要的效果。经过查阅资料后,把得到的经验分享给大家。

相等判断操作符==

Java中,==相等判断符用于判断基本数据类型和引用数据类型。 当判断基本数据类型的时候判断的是数值,当判断引用数据类型时判断变量是否指向同一引用对象。
使用==判断字符串时,判断的是两个字符串是否指向同一个对象。如果两个字符串指向同一个对象,那么它们就是相同的,使用==比较的结果也就是True。如果两个字符串指向不同的对象,那么它们不相同,使用==比较的结果也就是False。
通过字面赋值的时候,相同的字符串会指向同一个对象,例如:

String str1="abcde";// 把"abcde"放入常量池中,编译时产生
String str2="abcde";// 引用常量池中的对象,不会重新创建对象
str1 == str2; //str1和str2指向同一个对象,结果是true

但如果另有一个str3,不是通过这种字面的方式被赋值的,即便str3的值也是"abcde",例如:

String str3 = new String("abcde");//运行时把"abcde"放入堆里面,在堆中创建一个对象
str1 == str3; //str1和str3指向不同的对象,结果是false

相等判断方法equals()

在Java中,可以使用equals()方法判断字符串的内容是否相同。

String str1="abcde";
String str3 = new String("abcde");
str1.equals(str3);//str1和str3的值一样,结果是true
str1 == str3; //str1和str3指向不同的对象,结果是false

equals()方法原理

为什么可以使用equals()方法呢,我们看下String 类中的 equals()方法的源码。

public boolean equals(Object anObject) {if (this == anObject) {    //先比较两个字符串的引用是否相等(是否指向同一个对象), 是直接返回truereturn 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;
}

从上面的源码可以看到, 当调用 String 类型数据的equals()方法时,首先会判断两个字符串的引用是否相等,也就是说两个字符串引用是否指向同一个对象,是则返回true。
如果不是指向同一个对象,则把两个字符串中的字符挨个进行比较。

总结

上述就是我为大家分享的java判断两个字符串是否相等的方法了,如果您也有类似的疑惑,不妨碍参照上述分析进行理解。在不断的学习中,我相信会有更多的经验分享,欢迎大家持续关注。

Java中判断字符串是否相等相关推荐

  1. java中判断字符串是否为数字的方法 StringUtil包函数

    java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){   for (int i = 0; i &l ...

  2. java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号

    java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号 介绍 数据库中很多字段都会限制长度,为了方便用户使用,在前端界面给出限制长度的提示,看网上很多写的获取字符串长度都没有 ...

  3. java中判断字符串是否为数字(正整数)

    标题:java中判断字符串是否为数字(正整数) 遍历s的每一个字符 private boolean isNumeric(String s) {for (int i = 0; i < s.leng ...

  4. java中判断字符串乱码_java中如何判断字符串是否乱码

    java中如何判断字符串是否乱码 发布时间:2020-06-18 13:43:41 来源:亿速云 阅读:113 作者:鸽子 项目中有一个功能 在IE中GET方式提交会产生乱码 但有两个入口都会走这同一 ...

  5. java中判断字符串是否为汉字或其他字符

    在Java中我们需要判断字符串string 是否为合法输入或者是否为中文,Java中对字符及字符串是否为中文的判断调用了Character.UnicodeBlock.在Java中的中文包括:中文汉字. ...

  6. Java中判断字符串是否为数字的五种方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 推荐使用第二个方法,速度最快. 方法一:用JAVA自带的函数 Java代码   public sta ...

  7. 关于java中判断字符串相等==和equal 详解

    ①如果我们定义两个字符串: String c="123";         String d="123"; System.out.println(c==d); ...

  8. Java中判断字符串是否为空

    文章目录 0 写在前面 1 字符串.isEmpty 2 ''.equals(字符串) 3 字符串.length()>0 注意事项 0 写在前面 isEmpty(); "".e ...

  9. java中判断字符串是否为数字的三种方法

    1用JAVA自带的函数 public static boolean isNumeric(String str){for (int i = str.length();--i>=0;){ if (! ...

最新文章

  1. 10拨号拒绝远程连接_ADLS动态拨号vps常见的问题
  2. 烟台大学计算机学院老师,王鹏-烟台大学计算机与控制工程学院
  3. Linux下find用法总结
  4. 从StreamCorruptedException解析值:无效的流头消息
  5. 网络编程之Tcp,udp
  6. 谷歌 CEO 发全员公开信:今年将放缓招聘速度
  7. JQuery中的事件委托
  8. sqoop导入数据(保持一致性)--staging-table
  9. Phonegap 之 iOS银联在线支付(js调用ios端银联支付控件
  10. python逆序输出字符串_Python实现字符串逆序输出功能示例
  11. web安全工具库(笔记)----端口扫描(端口扫描器.exe)
  12. python将姓王的都改成老王_全域明星-第46章:校长姓王,隔壁老王?-爱阅小说网...
  13. PostgreSQL 配置文件 postgresql.conf 及 postgresql.auto.conf
  14. B站哔哩哔哩视频一键下载,这个视频下载工具太给力了
  15. 通证经济大局观(三十):贵族的没落
  16. 网络舆情信息工作怎么做的措施及建议
  17. NIST建议的零信任安全8大应用场景
  18. echarts自适应大小或改变窗体大小自适应大小与浏览器最大最小化事件
  19. 我的世界服务器区块修复,MC新人解决区块错误问题教程详解
  20. 页面跳转问题presentViewController

热门文章

  1. JQuery获取元素的方法总结
  2. php 断言,PHP 断言(assert) 详解
  3. Spring Cloud学习 01 微服务基础
  4. django2.0 在安装mysqlclient 报错ERROR: Command errored out with exit status 1: python setup.py egg_info
  5. 输入一个自然数判断他是几位数,并逆序输出C语言详解
  6. Ansible - 使用CallBack + 如何自定义Callback
  7. 【MVO三维路径规划】基于matlab多元宇宙算法多无人机避障三维航迹规划【含Matlab源码 2579期】
  8. 电量检测+软件施密特触发器逻辑
  9. 土木专业学python有什么用-读土木工程(结构)的学 Python 有用吗?
  10. 用小米路由搭建外网可访问的个人网站