【发布时间】:2019-06-13 03:00:49
【问题描述】:
我在 Mac 上使用 Eclipse IDE(版本:3.4.2),遇到了以下问题。
当使用 equal() 或 equalsIgnoreCase() 方法比较字符串时,即使字符串相等,我也会收到 false。例如,下面的代码将以下条件视为 false,即使 values[0] = "debug_mode"
if (values[0].equalsIgnoreCase("debug_mode"))
debug_mode = true;
这是以下循环的一部分:
String value = dis.readLine();
String values[] = value.trim().split("=");
if (values.length >= 2)
{
Config.prnt_dbg_msg(values[0] + "\t" + values[1]);
if (values[0].equalsIgnoreCase("debug_mode"))
debug_mode = isTrue(values[1]);
if (values[0].equalsIgnoreCase("debug_query_parsing"))
debug_query_parsing = isTrue(values[1]);
if (values[0].equalsIgnoreCase("username"))
Connection_Manager.alterAccessParameters(values[1], null, null);
if (values[0].equalsIgnoreCase("password"))
Connection_Manager.alterAccessParameters(null, values[1], null);
if (values[0].equalsIgnoreCase("database"))
Connection_Manager.alterAccessParameters(null, null, values[1]);
if (values[0].equalsIgnoreCase("allow_duplicate_entries"))
allow_duplicate_entries = isTrue(values[1]);
}
我尝试使用value[0].equal("debug_mode") 并得到相同的结果。
有人知道为什么吗?
【问题讨论】:
-
values[0]的实际值是多少
-
你 110% 确定
values[0]包含一个值为“debug_mode”的字符串吗?将其打印到控制台以确保。 -
if 条件之前你能打印 values[0] 吗?
-
@Evan - 甚至 120%,这是我能做到的。我在调试代码期间和标准输出中观察到了这个参数。
-
如果你使用的是调试器,你能进入 equalsIgnoreCase() 看看它在里面做什么吗?
标签: java string string-comparison