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 相关文章推荐
function foo的原型与prototype属性解惑
Nov 19 Javascript
jquery-syntax动态语法着色示例代码
May 14 Javascript
深入讲解AngularJS中的自定义指令的使用
Jun 18 Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 Javascript
JS中使用DOM来控制HTML元素
Jul 31 Javascript
Websocket协议详解及简单实例代码
Dec 12 Javascript
Angular组件化管理实现方法分析
Mar 17 Javascript
原生js FileReader对象实现图片上传本地预览效果
Mar 27 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
JS + HTML 罗盘式时钟的实现
May 21 Javascript
关于Vue中的options选项
Mar 22 Vue.js
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
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
react写一个select组件的实现代码
2019/04/03 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
css3 transform属性详解
2014/09/30 HTML / CSS
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
某公司.Net方向面试题
2014/04/24 面试题
Prototype是怎么扩展DOM的
2014/10/01 面试题
程序员求职信
2014/04/16 职场文书
群教班子对照检查材料
2014/08/26 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
体育个人工作总结
2015/02/09 职场文书
储备店长岗位职责
2015/04/14 职场文书
警示教育片观后感
2015/06/17 职场文书
大学军训通讯稿
2015/07/18 职场文书
检举信的写法
2019/04/10 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang
Oracle中DBLink的详细介绍
2022/04/29 Oracle