为什么传递给 Java 类的命令行参数似乎被自动转义了,而在实例化的 String 对象中,转义字符 () 似乎被忽略了。
例如,如果以这样的字符串开头:
SELECT * FROM my_table WHERE my_col like 'ABC_\' ESCAPE '\'
我尝试通过这样一个简单的类来运行它:
public class EscapeTest {
public static void main (String[] args) {
String str = "SELECT * FROM my_table WHERE "
+ "my_col like 'ABC_\' ESCAPE '\'";
System.out.println("ARGS[0]: "+args[0]);
System.out.println("STR: "+str);
}
}
我将上面的“SELECT”语句作为命令行参数传递,我得到如下所示的输出:
ARGS[0]: SELECT * FROM my_table WHERE my_col like 'ABC_\' ESCAPE '\'
STR: SELECT * FROM my_table WHERE my_col like 'ABC_' ESCAPE ''
如果我在 Eclipse 调试器中查看 ARGS[0] 的值,我会看到斜杠被转义。为什么会这样?让我觉得有点难以预测。