Java String.equals对==

问题:

这个代码将一个字符串分成标记并将它们存储在字符串数组中,然后将变量与第一个home进行比较…为什么不工作?

public static void main(String...aArguments) throws IOException {

    String usuario = "Jorman";
    String password = "14988611";

    String strDatos = "Jorman 14988611";
    StringTokenizer tokens = new StringTokenizer(strDatos, " ");
    int nDatos = tokens.countTokens();
    String[] datos = new String[nDatos];
    int i = 0;

    while (tokens.hasMoreTokens()) {
        String str = tokens.nextToken();
        datos[i] = str;
        i++;
    }

    //System.out.println (usuario);

    if ((datos[0] == usuario)) {
        System.out.println("WORKING");
    }
}

回答:

使用string.equals(Object other)函数比较字符串,而不是==运算符。
该函数检查字符串的实际内容,==运算符检查对对象的引用是否相等。请注意,字符串常量通常是“interned”,使得具有相同值的两个常量实际上可以与==进行比较,但最好不要依赖于此。

if (usuario.equals(datos[0])) {
    ...
}

注意:比较是在’usuario’上完成的,因为在你的代码中保证非空,尽管你还应该检查你在datos数组中是否有一些令牌,否则你会得到一个数组的对接异常。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java String.equals versus ==

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 52 = 55