Java与JavaScript中判断两字符串是否相等的区别


Posted in Javascript onMarch 13, 2017

JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等

直接用==,这与C++里的String类一样.而Java里的等号则是判断两字符串的引用是否一样,判断实体需要用equals()方法,或

者compareTo()方法,这里需要强调的是equals()方法的参数类型,其参数类型绝对不是String类,而是Object类,咱不止一次看

到国内一些教程写的是String类(o(?□?)o)

大家可以看看JDK的源码:

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;
  }

我们可以看到参数类型为Object类,顺带也说说这个代码,首先判断两者引用是否相同,如果引用相同的话实体自然相同.接下来就涉及到类的转换:

我们将子类创建的对象赋给父类,我们称之为上转型对象。在此基础上,还可以将父类对象转换成子类对象.简单来说,类之间的转换是有一定的条件的,并且需要用instanceof来判断。

每个类中的equals()方法来源于Object类,这样也不难理解equals()方法的参数类型是Object类。值得一提的是,Java中String类的compareTo()

方法:

public int compareTo(String anotherString) {
    int len1 = value.length;
    int len2 = anotherString.value.length;
    int lim = Math.min(len1, len2);
    char v1[] = value;
    char v2[] = anotherString.value;
    int k = 0;
    while (k < lim) {
      char c1 = v1[k];
      char c2 = v2[k];
      if (c1 != c2) {
        return c1 - c2;
      }
      k++;
    }
    return len1 - len2;
  }

compareTo()中参数为String类,因为String类实现了Comparable接口.基本上绝大多数类都实现了这一个接口(ps:一个来源于继承,一个来源于接口这就是两者参数类型不一致的原因诶)。

以上所述是小编给大家介绍的Java与JavaScript中判断两字符串是否相等的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
学习ExtJS form布局
Oct 08 Javascript
浅析tr的隐藏和显示问题
Mar 05 Javascript
javascript ajax的5种状态介绍
Aug 18 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
Mar 13 Javascript
动态加载jQuery的两种方法实例分析
Jul 17 Javascript
jQuery查找节点并获取节点属性的方法
Sep 09 Javascript
jQuery实现动态添加tr到table的方法
Dec 26 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
Jul 13 Javascript
jQuery常用选择器详解
Jul 17 jQuery
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
一文了解vue-router之hash模式和history模式
May 31 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
Javascript中字符串相关常用的使用方法总结
Mar 13 #Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 #Javascript
js实现手机发送验证码功能
Mar 13 #Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 #Javascript
原生js实现吸顶效果
Mar 13 #Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
Mar 13 #Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 #Javascript
You might like
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
一个简单的PHP&amp;MYSQL留言板源码
2020/07/19 PHP
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
php通用防注入程序 推荐
2011/02/26 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
python获取Linux发行版名称
2019/08/30 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
民政局副局长民主生活会个人对照检查材料
2014/09/19 职场文书
小学教学工作总结2015
2015/05/13 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
关于python爬虫应用urllib库作用分析
2021/09/04 Python
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android