我有以下代码:
String week = this.getIntent().getStringExtra("weekNumber");
String correctWeek = Integer.toString(Calendar.WEEK_OF_YEAR);
if (week == correctWeek) {
correct();
}
else incorrect();
它们都是“ 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