我注意到有些人在将两个字符串比较时似乎有所不同,例如将变量与常量进行比较时。例如,假设我们有一个常量字符串和一个输入法:
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());
答案 0 :(得分:10)
这不是性能问题。即使br.readLine()返回null,第二个版本也不会产生NullPointerException。第一个确实如此。
答案 1 :(得分:3)
它并不是更好或更快,但如果您知道 CONSTANT_STRING
存在,那么您保证如果您以第二种方式执行此操作,您将永远不会获得NullPointerException
。< / p>
答案 2 :(得分:2)
equals()
类的 String
方法将返回false
。仅当两个字符串的长度相等时才会比较内容。所以订单不会影响性能。
正如您在其他答案中所看到的,第二种方法不会发生NullPointerException
。所以,第二种方法更好。
答案 3 :(得分:1)
public abstract?字符串CONSTANT_STRING =“常量字符串”;