java if语句错误

时间:2011-07-23 08:21:45

标签: java android view if-statement

在我看来,这个if声明无效。

我是java的新手,但我对C#和C ++非常了解,但我以前从未见过这样的事情:

today=edit[0].substring(0,10);
if (today == edit[0].substring(0,10))
{
    pars_prog.addView(name_prog[i]);
}

它没有进入IF函数?

Java(Android)中的if语句是否有所不同?

3 个答案:

答案 0 :(得分:4)

当你使用== 任何对象引用(无论是字符串还是任何其他非基本类型)时,它只是比较引用是否相等 - 即它们是否指的是完全相同的对象,或者它们是否都为空。

在这种情况下,您要确定字符串是否相等 - 即它们是否代表相同的字符序列。您应该使用equals方法:

if (today.equals(edit[0].substring(0,10)))

但是,通常在执行此操作时,您应该注意equals调用的目标是非空的,否则您将获得NullPointerException

请注意,C#与类似 - 除了==运算符可以重载, 重载string。如果操作数的编译时类型不是string,那么您仍将获得参考比较:

object text1 = new StringBuilder("hello").ToString();
object text2 = new StringBuilder("hello").ToString();
Console.WriteLine(text1 == text2); // False

答案 1 :(得分:3)

您正在尝试将字符串与==进行比较,这是身份比较 - 它将检查两者是否是相同的实例(在JVM中),而不是比较它们的内容。

请改用today.equals(..)

那就是说,如果出现你正在使用日期,那么String不是处理这个问题的最佳方式。使用CalendarDate(有点过时)或joda-time DateTime

答案 2 :(得分:0)

比较字符串时必须使用equals方法。现在你正在比较引用,这就是为什么你从不输入if块