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 相关文章推荐
javascript 短路法代码精简
Aug 20 Javascript
jQuery 添加/移除CSS类实现代码
Feb 11 Javascript
jQuery图片的展开和收缩实现代码
Apr 16 Javascript
js常用自定义公共函数汇总
Jan 15 Javascript
初识Node.js
Mar 20 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
May 05 Javascript
分享一个插件实现水珠自动下落效果
Jun 01 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
Jul 01 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
微信小程序实现bindtap等事件传参
Apr 08 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
Apr 25 Javascript
在vue中import()语法不能传入变量的问题及解决
Apr 01 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 显示指定路径下的图片
2009/10/29 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
教大家制作简单的php日历
2015/11/17 PHP
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
JS表单传值和URL编码转换
2018/03/03 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
微信小程序搭建自己的Https服务器
2019/05/02 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python imread、newaxis用法详解
2019/11/04 Python
美国宠物商店:Wag.com
2016/10/25 全球购物
蛋白质世界:Protein World
2017/11/23 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
Java基础类库面试题
2013/09/04 面试题
个人实用的自我评价范文
2013/11/23 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP