为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 主方法参数中添加 final 关键字不会产生任何编译错误/异常?

在 Java 主方法参数中添加 final 关键字不会产生任何编译错误/异常?

Smart猫小萌 2021-12-10 17:08:19
在 main 方法参数中添加 final 关键字工作正常。既然我修改了 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]);        }    }}对于通过传递参数来运行程序时的上述编码:javac StackOverFlow Nisrin我的程序输出是hi我还没有收到我的答复。现在与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]);        }    }}它给了我一个错误:args可能未分配最终参数。因为现在我分配str给args.这意味着我通过final在参数中添加关键字并使其在 main 方法(Java 程序的入口点)中保持不变来实现很大的不同。我正在更改主要方法的签名。那为什么我没有收到任何编译错误或运行时错误?
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

final将引用标记为常量。它实际上并没有改变类型。还要注意改变的签名main从来没有一个编译器错误,但它可以经常导致运行时错误。


查看完整回答
反对 回复 2021-12-10
?
www说

TA贡献1775条经验 获得超8个赞

final只告诉“引用是一个常量。不要试图改变它”。这意味着到目前为止该main方法可以正确使用它。

args参数通常用于从执行命令中获取信息。您可能再也没有任何理由在程序中更改其值。


查看完整回答
反对 回复 2021-12-10
  • 2 回答
  • 0 关注
  • 181 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号