【问题标题】:Why can't we declare fields as public inside main method in Java? [duplicate]为什么我们不能在 Java 的 main 方法中将字段声明为公共的? [复制]
【发布时间】:2017-04-08 17:53:39
【问题描述】:

我只是想用不同的访问说明符在 Java 类的 main 方法中声明字段。但是我不能将带有访问说明符的字段声明为公共的,这有什么原因吗?

【问题讨论】:

  • 首先想一想——你为什么要这样做,你会达到什么目的?由于您知道方法的局部变量仅在同一方法中可见,即使您可以命名public 或类似名称,它对变量和您的程序有什么影响?答:没有,所以 Java 不允许你这样做。

标签: java


【解决方案1】:

您不能为局部变量声明访问说明符,因为这些变量的生命周期是局部的,例如对于 main 方法,在内部声明的任何变量只能在 main 方法内部访问。从 tutorialspoint 中查看有关局部变量的资源:

https://www.tutorialspoint.com/java/java_variable_types.htm

【讨论】:

    【解决方案2】:

    访问说明符用于fields 中的class。您使用访问说明符来定义如何从外部访问此字段。但是方法中声明的变量是local variables。这些局部变量不能在此方法块之外访问。所以没有理由为它们使用访问说明符。

    【讨论】:

      【解决方案3】:

      您不能在方法内定义公共元素。该元素在方法执行时存在,并且无法在该 main 方法之外访问。

      【讨论】:

        【解决方案4】:

        方法中的字段是方法的本地字段,因此没有访问修饰符。

        访问修饰符应用于类级别,即

        public class Person {
        
          private String name
        
          public String getName() {
            return this.name
          }
        
        }
        

        【讨论】:

          【解决方案5】:

          局部变量不能公开。 public、private、proctacted 仅用于类级别成员。

          假设如果可以这样做,那么您如何从方法或类中访问它。 所以在 locel 成员之前指定范围是没有任何意义的。

          【讨论】:

            【解决方案6】:

            在方法中声明的变量(又名局部变量)只能在方法中访问。方法返回后,方法中的所有局部变量都变得不可访问。您可以将所有局部变量视为private

            那为什么会这样呢?

            局部变量的目的是在方法执行期间临时存储数据。众所周知,一个方法要么某事,要么返回某事,或两者兼而有之。当一个方法在做这项工作时,可能会创建对象来帮助该方法正在做的任何事情。并且对象存储在变量中。由于这些变量仅帮助方法完成其工作,因此在方法完成其工作(返回)后不需要它们。

            看到了吗?它们是暂时的。从另一个范围访问它们是没有意义的。

            【讨论】:

              猜你喜欢
              • 2023-03-23
              • 2013-09-08
              • 2019-06-20
              • 2021-02-11
              • 2017-09-13
              • 2023-03-13
              • 1970-01-01
              • 2011-11-20
              • 1970-01-01
              相关资源
              最近更新 更多