我搜索并明确指出==
不用于比较字符串变量的内容,而是equals()
。
但是,AS报告equals()
仅适用于API 19(Android 4.4)及以上版本,而且我的目标是API 18(我的唯一手机是Android 4.3)
现在,我正在做if (var1.contains(var2))
或if (array[i].contains(var))
来比较字符串并且它有效,但它对我来说似乎不正确。
在API上实现此目的的正确方法是什么? 19?
感谢。
编辑:澄清(我不知道如何放置内联图片)
与equals()
的比较失败。
答案 0 :(得分:1)
Java JDK 1.0中添加了Object类的equals
函数。
这个版本于1996年1月23日发布。当时它被称为'Oak',所以从技术上讲它甚至早于Java本身。 (source)。
相比之下,Android API 1于2008年9月23日发布released。此时它将使用Java JDK 1.5(最新版本为Java SE 5 Update 16)。
总而言之,{1}} 在API级别18上可用,必定还有其他错误。
在看到发布的代码后,您正在使用equals
,这是一种以空安全方式检查equals()的实用程序方法。
在许多情况下,和你的一样,你不需要额外的空检查,因为你知道至少有一个对象不是null,你可以直接调用equals:
Objects.equals()
您的hourNames数组可能不包含null元素,因此您应将其转换为更易读的顺序:
if("una".equals(hourNames[realHour]))
答案 1 :(得分:0)
使用hourNames[realHour].equals("una")
是的,这是android studio上的一个错误(或者也许来自intellij的想法)。
答案 2 :(得分:0)
由于if (var1.contains(var2))
适用于您,为什么不发布确切的字符串?如果您没有调试功能,我建议使用这些来调试字符串差异点: -
boolean contentEquals(CharSequence cs)
public int compareTo(String anotherString)
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String)
你也可以使用模拟器环境并运行这个小测试: -
String s1 = "Test";
String s2 = "Test";
if (s1.equals(s2))
System.out.println("Equal");
else
System.out.println("Not Equal");