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 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
javascript学习笔记(九) js对象 设计模式
Jun 19 Javascript
javascript scrollTop正解使用方法
Nov 14 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
Jun 26 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
JavaScript生成SQL查询表单的方法
Aug 13 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
Nov 29 Javascript
Node.js获取前端ajax提交的request信息
Feb 20 Javascript
JavaScript之生成器_动力节点Java学院整理
Jun 30 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
Jan 08 Javascript
React Native登录之指纹登录篇的示例代码
Nov 03 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/05/01 PHP
php简单防盗链实现方法
2015/07/29 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
nginx 设置多个站跨域
2021/03/09 Servers
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
vue实现计算器功能
2020/02/22 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
师范应届生语文教师求职信
2013/10/29 职场文书
运动会加油口号
2014/06/07 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
结婚幸福感言
2015/08/01 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript
Java界面编程实现界面跳转
2022/06/16 Java/Android