比较字符串 bwlow API 18
Compare strings bwlow API 18
查了下才知道==
不是用来比较字符串变量内容的,而是equals()
.
但是,AS 报告说 equals()
仅适用于 API 19 (Android 4.4) 及更高版本,我的目标是 API 18(我唯一的 phone 是 Android 4.3)
所以现在,我正在做 if (var1.contains(var2))
或 if (array[i].contains(var))
来比较字符串,它可以工作,但对我来说似乎不正确。
在 API < 19 岁时实现此目标的正确方法是什么?
谢谢。
编辑:澄清一下(我不知道如何放置内嵌图片)
With ==
With equals()
比较失败 equals()
。
Object class 的 equals
函数是在 Java JDK 1.0 中添加的。
此版本于 1996 年 1 月 23 日发布。当时称为 'Oak',因此从技术上讲它甚至早于 Java 本身。 (source).
相比之下,Android API 1是在2008年9月23日released,此时将与Java JDK 1.5 (最新版本是 Java SE 5 Update 16)。
所以综上所述,equals
在API 18级可用,一定有其他错误。
看到发布的代码后,您正在使用 Objects.equals()
,这是一种以空安全方式检查 equals() 的实用方法。
在许多情况下,就像您的情况一样,您不需要额外的 null 检查,因为您知道至少有一个对象不为 null,您可以直接调用 equals:
if("una".equals(hourNames[realHour]))
您的 hourNames 数组可能不包含空元素,因此您应该将其调整为更易读的顺序:
if(hourNames[realHour].equals("una"))
使用hourNames[realHour].equals("una")
是的,这是 android studio 上的一个错误(或者可能来自 intellij idea)。
既然 if (var1.contains(var2))
适合你,你为什么不 post 确切的字符串呢?如果您没有调试功能,我建议您使用这些来调试字符串中的差异点:-
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)
您也可以使用模拟器 env 和 运行 这个小测试:-
String s1 = "Test";
String s2 = "Test";
if (s1.equals(s2))
System.out.println("Equal");
else
System.out.println("Not Equal");
查了下才知道==
不是用来比较字符串变量内容的,而是equals()
.
但是,AS 报告说 equals()
仅适用于 API 19 (Android 4.4) 及更高版本,我的目标是 API 18(我唯一的 phone 是 Android 4.3)
所以现在,我正在做 if (var1.contains(var2))
或 if (array[i].contains(var))
来比较字符串,它可以工作,但对我来说似乎不正确。
在 API < 19 岁时实现此目标的正确方法是什么?
谢谢。
编辑:澄清一下(我不知道如何放置内嵌图片)
With ==
With equals()
比较失败 equals()
。
Object class 的 equals
函数是在 Java JDK 1.0 中添加的。
此版本于 1996 年 1 月 23 日发布。当时称为 'Oak',因此从技术上讲它甚至早于 Java 本身。 (source).
相比之下,Android API 1是在2008年9月23日released,此时将与Java JDK 1.5 (最新版本是 Java SE 5 Update 16)。
所以综上所述,equals
在API 18级可用,一定有其他错误。
看到发布的代码后,您正在使用 Objects.equals()
,这是一种以空安全方式检查 equals() 的实用方法。
在许多情况下,就像您的情况一样,您不需要额外的 null 检查,因为您知道至少有一个对象不为 null,您可以直接调用 equals:
if("una".equals(hourNames[realHour]))
您的 hourNames 数组可能不包含空元素,因此您应该将其调整为更易读的顺序:
if(hourNames[realHour].equals("una"))
使用hourNames[realHour].equals("una")
是的,这是 android studio 上的一个错误(或者可能来自 intellij idea)。
既然 if (var1.contains(var2))
适合你,你为什么不 post 确切的字符串呢?如果您没有调试功能,我建议您使用这些来调试字符串中的差异点:-
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)
您也可以使用模拟器 env 和 运行 这个小测试:-
String s1 = "Test";
String s2 = "Test";
if (s1.equals(s2))
System.out.println("Equal");
else
System.out.println("Not Equal");