-6

私はこのコードを持っています、

class Test
{
    public static void  main(String args[])
    {
        String x = "Hello";
        String y = "Bye!";
        System.out.printf("This is %s, this is %s", x);
    }
}

そしてJavaコンパイラはそれをコンパイルしましたが、明らかにエラーがあります。私の質問は、コンパイラがこのエラーをキャッチしなかったのはなぜですか? この小さな間違いさえキャッチできない場合、静的型付けの利点はどこにありますか?

4

3 に答える 3

1

エラーはコンパイル時エラーではなく実行時エラーであるためです。2 つの %s の文字列置換は実行時に行われます。コンパイラーは、y パラメーターが「欠落」していることを認識していません。

于 2013-08-31T14:03:34.223 に答える
0

printf() メソッドに渡された (静的) 型は正しいです。これは不正な引数であり、実行時まで発見されません。

これはInteger.parseInt("foo")、正しい型の不適切な値がメソッドに渡される無数の他のケースと何ら変わりはありません。

于 2013-08-31T14:03:49.350 に答える