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 vvorld 在线加密破解方法
Nov 13 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
Jan 15 Javascript
JQuery插入DOM节点的方法
Jun 11 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
判断是否存在子节点的实现代码
May 18 Javascript
jQuery自定义数值抽奖活动代码
Jun 11 Javascript
微信和qq时间格式模板实例详解
Oct 21 Javascript
webpack多页面开发实践
Dec 18 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
jQuery实现form表单基于ajax无刷新提交方法实例代码
Nov 04 jQuery
jquery+ajax实现异步上传文件显示进度条
Aug 17 jQuery
element-ui和vue表单(对话框)验证提示语(残留)清除操作
Sep 11 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
Yii配置文件用法详解
2014/12/04 PHP
js 匿名调用实现代码
2009/06/19 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
jquery 动态创建元素的方式介绍及应用
2013/04/21 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
python模块之time模块(实例讲解)
2017/09/13 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
django 自定义过滤器的实现
2019/02/26 Python
用Python写一个模拟qq聊天小程序的代码实例
2019/03/06 Python
python中比较两个列表的实例方法
2019/07/04 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
经理职责范文
2013/11/08 职场文书
2014年稽查工作总结
2014/12/20 职场文书
公司承诺函范文
2015/01/21 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
二手房购房意向书
2015/05/09 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android