Java:比较字符串时顺序有区别吗?

问题描述 投票:0回答:4

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

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());
java string comparison
4个回答
10
投票

这不是性能问题。即使

NullPointerException
返回
br.readLine()
,第二个版本也不会产生
null
。不过第一个确实如此。


3
投票

这并不是更好或更快,但如果您知道存在

CONSTANT_STRING
,那么您保证如果您采用第二种方式,您将永远不会得到
NullPointerException


2
投票
如果两个比较字符串的长度不同,

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

正如您在其他答案中看到的,第二种方法不会发生

NullPointerException
。所以,第二种方法更好。


1
投票

public 抽象? String CONSTANT_STRING = "常量字符串";

© www.soinside.com 2019 - 2024. All rights reserved.