java为什么是静态的_为什么Java主要方法是静态的?

Java main()方法的方法签名为:

public static void main(String[] args){

...

}

此方法是否有理由是静态的?

#1楼

我认为关键字“ static”使main方法成为类方法,并且类方法只有它的一个副本,并且可以被所有人共享,而且,它不需要对象作为参考。 因此,在编译驱动程序类时,可以调用main方法。 (我只是在Java的字母级别,如果我错了,抱歉)

#2楼

main()是静态的,因为; 在应用程序生命周期的这一点上,由于还没有实例化对象,因此应用程序堆栈本质上是过程性的。

这是一块干净的石板。 此时,即使没有声明任何对象,您的应用程序仍在运行(请记住,存在过程和OO编码模式)。 您作为开发人员,通过创建对象实例并根据其中编译的代码,将应用程序变成面向对象的解决方案。

面向对象之所以伟大,有数百万个显而易见的原因。 但是,大多数VB开发人员在其代码中定期使用诸如“ goto”之类的关键字的日子已经一去不复返了。 “ goto”是VB中的一个过程命令,由其OO对应部分替代:方法调用。

您也可以将静态入口点(main)视为纯粹的自由。 如果Java具有足够的差异来实例化一个对象,并且仅在运行时向您呈现该实例,那么您将没有选择但是要编写一个过程应用程序。 对于Java来说,这听起来是难以想象的,但可能有许多情况需要使用过程方法。

这可能是一个非常模糊的答复。 记住,“类”仅仅是相互关联的代码的集合。 “实例”是该类孤立,生活和呼吸自发的一代。

#3楼

任何应用程序的真正入口都是静态方法。 如果Java语言支持将实例方法作为“入口点”,那么运行时将需要在内部将其实现为静态方法,该方法构造对象的实例,然后调用该实例方法。

鉴于此,我将研究选择以下三个选项之一的基本原理:

今天我们看到的是一个static void main() 。

在新构造的对象上调用的实例方法void main() 。

使用类型的构造函数作为入口点(例如,如果入口类称为Program ,则执行将有效地包含new Program() )。

分解:

static void main()

调用封闭类的静态构造函数。

调用静态方法main() 。

void main()

调用封闭类的静态构造函数。

通过有效地调用new ClassName()构造封闭类的实例。

调用实例方法main() 。

new ClassName()

调用封闭类的静态构造函数。

构造该类的实例(然后不执行任何操作,仅返回)。

理由:

我将按照相反的顺序进行操作。

请记住,Java的设计目标之一是强调(尽可能要求)良好的面向对象编程实践。 在这种情况下,对象的构造函数将初始化该对象,但不应对该对象的行为负责。 因此,给出new ClassName()入口点的规范将在每个应用程序上强制“理想”构造函数的设计例外,从而使新Java开发人员感到困惑。

通过将main()用作实例方法,可以解决上述问题。 但是,它通过要求规范列出条目类的构造函数的签名以及main()方法的签名而增加了复杂性。

总而言之, 指定static void main()会创建具有最低复杂度的规范,同时遵守将行为放入方法中的原则 。 考虑到实现main()方法本身直接构造一个类的实例并调用一个实例方法有多简单,将main()指定为实例方法并没有真正的优势。

#4楼

正如我们在这里看到的那样,这只是一个约定:

该方法必须声明为public和static ,它不能返回任何值,并且必须接受String数组作为参数。 默认情况下,第一个非选项参数是要调用的类的名称。 应该使用标准的类名。 如果指定了-jar选项,则第一个非选项参数是JAR归档文件的名称,该文件包含应用程序的类和资源文件,且启动类由Main-Class清单标头指示。

#5楼

public static void关键字意味着Java虚拟机(JVM)解释器可以调用程序的main方法来启动程序(公共),而无需创建类的实例(静态),并且程序不会将数据返回给Java VM解释器(无效)何时结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值