在我看来,这个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语句是否有所不同?
答案 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
不是处理这个问题的最佳方式。使用Calendar
,Date
(有点过时)或joda-time DateTime
答案 2 :(得分:0)
比较字符串时必须使用equals方法。现在你正在比较引用,这就是为什么你从不输入if块