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