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 相关文章推荐
js checkbox(复选框) 使用集锦
Apr 28 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
Apr 09 Javascript
JS的Document属性和方法小结
Sep 17 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
Jun 21 Javascript
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
详解基于vue-cli配置移动端自适应
Jan 13 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
Sep 04 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使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
arguments对象
2006/11/20 Javascript
用javascript获取textarea中的光标位置
2008/05/06 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
浅谈python数据类型及类型转换
2017/12/18 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Python3匿名函数用法示例
2018/07/25 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
Python基于内置函数type创建新类型
2020/10/22 Python
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
如何设置Java的运行环境
2013/04/05 面试题
什么是servlet链?
2014/07/13 面试题
护理个人求职信范文
2014/01/08 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
售后求职信范文
2014/03/15 职场文书
会议欢迎标语
2014/06/30 职场文书
借款协议书
2014/09/16 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫