在我看来,这if
语句不起作用。java if语句错误
我在Java的新的,但是我知道C#和C++相当好,但我从来没有见过这样的事:
today=edit[0].substring(0,10);
if (today == edit[0].substring(0,10))
{
pars_prog.addView(name_prog[i]);
}
而且它不会进入IF
功能?
Are if语句与Java(Android)不同吗?
在我看来,这if
语句不起作用。java if语句错误
我在Java的新的,但是我知道C#和C++相当好,但我从来没有见过这样的事:
today=edit[0].substring(0,10);
if (today == edit[0].substring(0,10))
{
pars_prog.addView(name_prog[i]);
}
而且它不会进入IF
功能?
Are if语句与Java(Android)不同吗?
当您使用==
为任何对象引用(不管是字符串或者任何其他非基本类型),它只是比较引用是否相等 - 即是否他们指的是完全相同的对象,或者它们是否都是null。
在这种情况下,您需要确定字符串是否为等于 - 即它们是否代表相同的字符序列。您应该使用该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
谢谢你队友,这正是我一直在寻找的 – MBP
你有比较字符串时使用equals方法..现在你是比较参考,这就是为什么你从来没有进入if块
您正试图==
比较字符串,这是身份比较 - 它将检查这两者是否是相同的实例(在JVM中)而不是比较它们的内容。
改为使用today.equals(..)
。
也就是说,如果出现您正在处理日期,那么String
不是处理此问题的最佳方法。使用Calendar
,Date
(有点过时)或乔达时间DateTime
我不事这得到你的问题,但仍然是不好的做法,使用==那里的操作员如果(今天。equals(编辑[0] .substring(0,10)) – emory
这不是'if'的工作方式不同,它是String对象(因此也是'==')。 '.equals()' – Nanne
从你的编码我将你最好的编码器在这个宇宙.. – K6t