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?对,我就是这么做的。我只是想确定这是正确的方法。感谢您对空验证的澄清。