Java:比较字符串时是否存在顺序差异?

时间:2013-01-04 10:22:23

标签: java string comparison

我注意到有些人在将两个字符串比较时似乎有所不同,例如将变量与常量进行比较时。例如,假设我们有一个常量字符串和一个输入法:

public final String CONSTANT_STRING = "A constant string";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

首先使用未知输入是否更好或更快:

br.readLine().equals(CONSTANT_STRING)

或将常数与未知数进行比较:

CONSTANT_STRING.equals(br.readLine());

4 个答案:

答案 0 :(得分:10)

这不是性能问题。即使br.readLine()返回null,第二个版本也不会产生NullPointerException。第一个确实如此。

答案 1 :(得分:3)

它并不是更好或更快,但如果您知道 CONSTANT_STRING存在,那么您保证如果您以第二种方式执行此操作,您将永远不会获得NullPointerException。< / p>

答案 2 :(得分:2)

如果两个比较字符串的长度不同,equals()类的

String方法将返回false。仅当两个字符串的长度相等时才会比较内容。所以订单不会影响性能。

正如您在其他答案中所看到的,第二种方法不会发生NullPointerException。所以,第二种方法更好。

答案 3 :(得分:1)

public abstract?字符串CONSTANT_STRING =“常量字符串”;