在java主方法参数中添加最后一个关键字不会';我没有给出任何编译错误/异常?

在java主方法参数中添加最后一个关键字不会';我没有给出任何编译错误/异常?,java,Java,在主方法参数中添加最后一个关键字可以正常工作。为什么它没有给出任何编译器错误/异常,因为我已经修改了java的标准main方法 public class StackOverFlow { public static void main(final String... args) { System.out.println("Hi"); } } 现在看看我的代码: public class StackOverFlow { public static v

在主方法参数中添加最后一个关键字可以正常工作。为什么它没有给出任何编译器错误/异常,因为我已经修改了java的标准main方法

 public class StackOverFlow {

    public static void main(final String... args) {
        System.out.println("Hi");

    }
}
现在看看我的代码:

public class StackOverFlow {

    public static void main (String... args) {

        String[] str = {"I ", "haven't ", "received ", "my ", "answer." };
        args[0] = "hi";
        System.out.println(args[0]);
        args =str;
        for(int i=0; i<args.length; i++) {
            System.out.print(args[i]);
        }

    }

}
公共类堆栈溢出{
公共静态void main(字符串…参数){
String[]str={“我”、“还没有”、“收到”、“我的”、“答案”。};
args[0]=“高”;
System.out.println(args[0]);
args=str;

对于(int i=0;i
final
将引用标记为常量,它实际上不会更改类型。还要注意,更改
main
的签名是从不编译器错误,但它经常会导致运行时错误。

final
将引用标记为常量,它实际上不会更改。)他输入。还要注意,更改
main
的签名是从不编译器错误,但它经常会导致运行时错误。

final
只告诉“引用是一个常量,不要试图更改它”。这意味着到目前为止,
main
方法可以正确使用它。
args
参数通常用于从execute命令获取信息。您可能再也没有任何理由在程序中更改它的值。

final
只告诉“引用是一个常量,不要尝试更改它”。这意味着到目前为止,
main
方法可以正确使用它。
args
参数通常用于从execute命令获取信息。您可能再也没有任何理由在程序中更改它的值了。

您能解释一下“它经常导致运行时错误”的含义吗我的意思是,如果您将
main
的签名更改为不再是入口点,代码仍将编译。您将无法运行它。因此,这是一个运行时错误(不是编译器错误).好的,那么你的意思是它不再是JRE可以用来运行程序的主要方法了。请注意检查我修改过的问题并进行指导。你能解释一下“它经常导致运行时错误”是什么意思吗我的意思是,如果您将
main
的签名更改为不再是入口点,代码仍将编译。您将无法运行它。因此,这是一个运行时错误(不是编译器错误)。好的,那么你的意思是,它不再是JRE可以用来运行程序的主要方法。请注意检查我修改过的问题,并请指导。@Andreas好的,我确实理解args是一个对象字符串数组,所以它是final/常量,但它不会使其中的每个元素都是常量。但我的问题是我我正在更改主方法的签名。添加
final
后仍然可以运行程序的事实表明您没有更改签名。签名由方法名称和参数类型决定。参数修饰符(
final
和注释)没关系。@Andreas好的,我知道args是一个对象字符串数组,所以它是final/常量,但它不会使其中的每个元素都是常量。但我的问题是我正在更改main方法的签名。添加
final
后仍然可以运行程序,这表明您没有更改签名。Th签名由方法名和参数类型决定。参数修饰符(
final
和注释)无关紧要。
public class StackOverFlow {

    public static void main (final String... args) {

        String[] str = {"I ", "haven't ", "received ", "my ", "answer." };
        args[0] = "hi";
        System.out.println(args[0]);
        args =str;
        for(int i=0; i<args.length; i++) {
            System.out.print(args[i]);
        }

    }

}