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 相关文章推荐
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
Jan 19 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
Oct 25 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
Dec 28 Javascript
vue-cli创建的项目,配置多页面的实现方法
Mar 15 Javascript
详解vue-loader在项目中是如何配置的
Jun 04 Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
js实现内置计时器
Dec 16 Javascript
Vue实现简单的留言板
Oct 23 Javascript
vue 图片裁剪上传组件的实现
Nov 12 Javascript
js前端对于大量数据的展示方式及处理方法
Dec 02 Javascript
基于element-ui封装表单金额输入框的方法示例
Jan 06 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
Python3中多线程编程的队列运作示例
2015/04/16 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
应用心理学个人求职信范文
2013/12/11 职场文书
将相和教学反思
2014/02/04 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
通用自荐信范文
2014/03/14 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android