English 中文(简体)
命令行的元字符
原标题:Metacharacters at command-line

代码:

string s = "d";

引起编译者错误, 非法逃跑字符 。 理解!

但代码:

class Test
{
public static void main(String[] args)
{
String s = args[0];
System.out.println(s);
}
}

当使用命令 java test d java test " d" test " d" 。 为什么?

连指纹都无法用 : d 而不使用双反鞭 ("\d")。

通过指令线提供的论点是否只作为字符串处理?

我知道它不能提出 < em> compiler 错误 < / em >, 因为命令行提供的参数是在 < / em > 汇编阶段之后的 < em >, 但是它不应该提出一个 < em> 时间例外 或什么的吗?

或者说,一旦我们通过编译阶段,字符串包含的内容并不重要(因为代码被转换成字节码,整个代码结构被修改)?如果是,那么可以请人详细解释。

提前交货!

最佳回答

您不知道 shell 命令行和 Java 是两种不同的语言。 给 shell 的命令行作为 shell 命令解析。 给 < code>java 的 Java 程序被解析为 Java 。

您也可能混淆了 < em> 字符串字串 < / em > (产生字符串的代码) 和 < em> 字符串 < / em > (由字符序列组成的数值) 。

您想要将两个字符 < em> 字符串 < code> d 存储在变量 < code> 中。 您需要构建一个合适的 < em> 字符串 来做到这一点 。

  • To produce the two character string d, one can use a cmd (Windows shell) string literal d.
  • To produce the two character string d, one can use a Java string literal "\d".
问题回答

Doubling backslahes 只是一个语法问题。 在 Java 代码中, 要在引号中代表一个反斜线, 您必须将其输入两次 。 然而, 您真正代表的是一个反斜线 。

当您通过命令行时,不需要逃跑,因为它不是 Java 代码。

通过指令线提供的论点是否只作为字符串处理?

是的,它们重新字符串。字符串 objects 。这很好。

然而,在 code 中,您得到了字符串 literals 。这些是由 Java 编译者在执行时为生成字符串 objects 。逃逸是 Java 语言的一部分,是字符串对象的一部分, not

(请注意,其他一些图书馆,特别是通常的表达方式,可能也 < /em > 有自己的逃避机制,但最重要的是,如果你运行

java Foo d

然后假设您的 shell 不做任何有趣的事情( 这取决于外壳! ), 那么最后你就会有两个字符串: 反斜线, 然后是 < code> d





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签