欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java与JavaScript中判断两字符串是否相等的区别

程序员文章站 2022-06-02 14:44:16
javascript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在javascript中判断两字符串是否相等 直接用==,这与c++里的stri...

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中判断两字符串是否相等的区别,希望对大家有所帮助