Java 将字符串与API 18进行比较
我搜索并弄清楚,Java 将字符串与API 18进行比较,java,android,string-comparison,Java,Android,String Comparison,我搜索并弄清楚,=不是用来比较字符串变量的内容,而是用来比较equals() 然而,据报道,equals()仅在API 19(Android 4.4)及以上版本上可用,我的目标是API 18(我唯一的手机是Android 4.3) 所以现在,我正在做if(var1.contains(var2))或if(array[I].contains(var))来比较字符串,它可以工作,但对我来说似乎不正确 在API
=
不是用来比较字符串变量的内容,而是用来比较equals()
然而,据报道,equals()
仅在API 19(Android 4.4)及以上版本上可用,我的目标是API 18(我唯一的手机是Android 4.3)
所以现在,我正在做if(var1.contains(var2))
或if(array[I].contains(var))
来比较字符串,它可以工作,但对我来说似乎不正确
在API<19上实现这一点的正确方法是什么
谢谢
编辑:为了澄清(我不知道如何放置内联图像)
与
equals()
比较失败该类的equals
函数是在Java JDK 1.0中添加的
该版本于1996年1月23日发布。当时它被称为“Oak”,所以从技术上讲它甚至比Java本身还要早。()
相比之下,Android API 1是在2008年9月23日发布的。此时,它将使用JavaJDK1.5(最新版本是JavaSE5Update16)
总之,equals
在API级别18上可用,肯定还有其他错误
看到发布的代码后,您将使用
Objects.equals()
,这是一种以空安全方式检查equals()的实用方法。在许多情况下,像您的情况一样,您不需要额外的null检查,因为您知道至少有一个对象不是null,您可以直接调用equals:
if("una".equals(hourNames[realHour]))
您的hourNames数组可能不包含null元素,因此您应该将其转换为更可读的顺序:
if(hourNames[realHour].equals("una"))
使用
hourNames[realHour].equals(“una”)
是的,这是android studio上的一个bug(或者可能来自intellij idea)。既然如果(var1.contains(var2))
对您有效,为什么不发布准确的字符串?如果您没有调试功能,我建议您使用这些来调试字符串中的差异点:-
boolean contentEquals(CharSequence cs)
public int compareTo(String anotherString)
您还可以使用simulator env运行以下小测试:-
String s1 = "Test";
String s2 = "Test";
if (s1.equals(s2))
System.out.println("Equal");
else
System.out.println("Not Equal");
在我看来,
string1.equals(string2)
不可用的可能性很小。它在Android 2.2(Froyo)上也能工作。我是说。。。它适用于所有Android版本:它是Java。它不会显示任何错误,只是无法进行比较,即使字符串相同。什么是bug?对,我就是这么做的。我只是想确定这是正确的方法。感谢您对空验证的澄清。