コード:
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"
。なぜ??
\d
実際には、二重のバックスラッシュ( "\\ d")を使用せずに印刷することもできます。
コマンドラインから提供された引数は文字列としてのみ扱われませんか?
コマンドラインで提供される引数はコンパイル段階の後なので、コンパイラエラーを発生させることはできませんが、実行時例外などを発生させるべきではありませんか?
それとも、コンパイル段階を通過した後は、文字列に何が含まれているかは関係ありません(コードがバイトコードに変換され、コード構造全体が変更されるため)?はいの場合、誰かが詳しく説明してもらえますか。
事前にThnx!!