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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
JQuery Dialog的内存泄露问题解决方法
Jun 18 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
Dec 11 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
Aug 30 Javascript
jQuery中wrapAll()方法用法实例
Jan 16 Javascript
js实现Select列表各项上移和下移的方法
Aug 14 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
利用jquery如何从json中读取数据追加到html中
Dec 01 jQuery
React 使用browserHistory项目访问404问题解决
Jun 01 Javascript
详解vue axios二次封装
Jul 22 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
Oct 12 Javascript
详解jenkins自动化部署vue
May 14 Javascript
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采集利器 Snoopy 试用心得
2011/07/03 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
php使用curl访问https示例分享
2014/01/17 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
浅谈python 线程池threadpool之实现
2017/11/17 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Python如何转换字符串大小写
2020/06/04 Python
利用python实现汉诺塔游戏
2021/03/01 Python
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
卫校毕业生自我鉴定
2013/10/31 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
节约用水的口号
2014/06/20 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
维稳承诺书
2015/01/20 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
蜗居观后感
2015/06/11 职场文书
节约用水广告语60条
2019/11/14 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python