Android字符串比较为假

时间:2018-10-26 20:12:42

标签: android string compare

我有以下代码:

String week = this.getIntent().getStringExtra("weekNumber");
String correctWeek = Integer.toString(Calendar.WEEK_OF_YEAR);

if (week == correctWeek) {
    correct();
}

else incorrect();

它们都是“ 3”,但是比较结果是错误的,我不知道为什么:

enter image description here

错误在哪里?

3 个答案:

答案 0 :(得分:1)

使用equals()来比较内容的字符串,而不是==

==将检查对象是否相同。

String foo = "foo";

if (foo == foo) {
    // same object, so true
}
String foo1 = "foo";
String foo2 = "foo";

if (foo1 == foo2) {
    // both are string literals set at compile time, so true
}
String foo1 = loadFoo1(); // imagine this returns "foo"
String foo2 = loadFoo2(); // imagine this also returns "foo"

if (foo1 == foo2) {
    // not the same object, and not string literals, so false
}

if (foo1.equals(foo2)) {
    // both strings hold "foo", so true
}

答案 1 :(得分:0)

这两个字符串是单独的对象,并且“ ==”测试其两个操作数是否是相同的精确对象。

要比较字符串,请尝试week.equals(correctWeek)

答案 2 :(得分:0)

“ ==”运算符用于参考比较。它会检查两个对象是否指向相同的内存位置,在比较两个不同的字符串对象时,在您的情况下会返回 false

出于您的目的,您应该使用.equals(),该值用于比较对象中的值。

示例:

String week =  new String("3"); 
String correctWeek =  new String("3"); 
System.out.println(week == correctWeek); 
System.out.println(week.equals(correctWeek));

将输出:

false
true