1

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

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

4 回答 4

10

这不是性能问题。第二个版本永远不会产生 NullPointerException,即使 br.readLine() 返回 null。第一个虽然。

于 2013-01-04T10:23:32.783 回答
3

它不是更好或更快,但如果你知道CONSTANT_STRING存在,你保证NullPointerException如果你用第二种方法你永远不会得到。

于 2013-01-04T10:23:38.573 回答
2

equals()如果两个比较字符串的长度不同,则类的方法String将返回。false只有当两个字符串的长度相等时,它才会比较内容。所以顺序不影响性能。

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

于 2013-01-04T10:29:08.627 回答
1

公共摘要?String CONSTANT_STRING = "一个常量字符串";

于 2013-01-04T10:26:09.237 回答