首页 > 编程语言 >为什么Java中的main方法必须是public static void的?

为什么Java中的main方法必须是public static void的?

时间:2024-06-06 23:58:29浏览次数:30  
标签:Java void static JVM 静态方法 返回值 main 方法

当我们创建main方法时,首先都是public、都是static,返回值都是void,方法名都是main,入参都是一个字符串数组。

在以上的方法声明中,唯一可以改变的部分就是方法的参数名,我们可以吧args改成任意我们想要使用的名字。

main方法时JVM执行的入口,为了方便JVM的调用,所以需要将他的访问权限设置为public,并且静态方法会方便JVM直接调用,不需要实例化对象。

因为JVM的退出其实是不完全依赖main方法的,所以JVM不会接收main方法的返回值,所以给main方法定义一个返回值是没有任何意义的,所以main方法的返回值为void。

为了方便main函数可以接受多个字符串参数作为入参,所以他的形参类型被定义为String[]。

为什么main方法是公有的?

Java中,对于main方法来说,我们需要通过JVM直接调用他,那么就需要他的限定符必须是public的,否则的话是无法被访问的。

为什么main方法是静态的?

static是静态修饰符,被他修饰的方法我们称之为静态方法,静态方法有一个特点,就是静态方法独立于该类的任何对象,他不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。

对于main方法来说,他的调用过程就是经历了类加载、链接和初始化的。但是并没有被实例化,这个时候如果想要调用一个类中的方法。那么这个方法必须是静态方法,否则是无法调用的。

为什么main方法没有返回值?

在Java中,程序的退出是由JVM进行控制的,在发生以下两种情况下,程序就会被终止并退出:

1. 所有不是后台守护线程的线程全部终止。

2. 某个线程调用了Runtime类或者System类的exit方法,并且安全管理器并不禁止exit操作。

上面两种情况中,第二种情况一旦发生,JVM是不会管main方法有没有执行完的,他都会终止所有行为并退出,这个时候main方法的返回值是没有任何意义的。

为什么main方法的入参是字符串数组(String[])?

Java应用程序是可以通过命令行接收参数传入的,从命令行传递的参数可以在Java程序中接收,并且可以 用作输入。

因为命令行参数最终都是以字符串的形式传递,并且有的时候命令行参数不止一个,所以就可能传递多个参数。

这个时候,作为Java应用程序执行入口,main方法就需要能够接收这多个字符串参数,那么就使用字符串数组了。

标签:Java,void,static,JVM,静态方法,返回值,main,方法
From: https://blog.csdn.net/weixin_62773644/article/details/139511460

相关文章

  • Java实现常见的排序算法
    ......
  • JavaScript第十一讲:DOM编程“事件”
    前言当涉及到DOM(DocumentObjectModel)的事件时,JavaScript提供了许多内置的事件处理器,用于处理用户在网页上执行的各种操作。1.焦点事件当元素获得或失去焦点时触发。onfocus:当元素获得焦点时触发。onblur:当元素失去焦点时触发。//假设有一个输入框<inputtype="......
  • 【JavaScript函数】
    函数:是被设计为执行特定任务的代码块。作用:代码重用,结构清晰1.1、定义函数定义函数有两种方法:函数声明和函数表达式:1.1.1、函数声明解释:这里声明一个函数f,并传入一个参数a,当函数执行以后,通过return关键字返回了a+1的值。1.1.2、函数表达式通过定义一个匿......
  • JAVA踩坑日记之超隐蔽但常见空指针问题
    今天遇到一个特别难以发现的空指针问题代码如下:BookDetailDtobookDetail=metaDataDetailDao.findBookDetailById(bookId);if(null==bookDetail){bookDetail=metaDataTempDao.findBookDetailById(bookId);}//如果......
  • 有关于JavaSSM项目的前期框架准备
    一、项目准备的工具及框架使用工具:idea创建工程:maven工程使用框架:ssm(spring+springmvc+mybatis)服务器:tomcat二、项目前期内容1、pom.xml导入所依赖的jar包(这里附上代码)<dependencies><!--扫入spring相关依赖--><dependency><group......
  • java后端开发学习路径
    java后端开发学习路径阶段一:Java基础(入门)学习内容:基本语法:变量、数据类型、运算符、控制流、函数等。面向对象编程:类、对象、继承、多态、封装等。常用类库:String、集合框架(List,Set,Map)、IO、多线程等。推荐资源:《Java核心技术卷一》:https://www.am......
  • 【Java】static 修饰变量
    static一种java内置关键字,静态关键字,可以修饰成员变量、成员方法。static+成员变量1.static+成员变量2.类变量图解3.类变量的访问4.类变量的内存原理5.类变量的应用1.static+成员变量成员变量按照有无static修饰,可以分为类变量:static+变量,属于类,仅存一......
  • Spire.PDF for Java 10.6.0 支持 PDF to SVG, Word and OFD
    Spire.PDFforJava10.6.0enhancestheconversionsfromPDFtoSVG,WordandOFDSpire.DocforJavaisaprofessionalWordAPIthatempowersJavaapplicationstocreate,convert,manipulateandprintWorddocumentswithoutdependencyonMicrosoftWord.B......
  • 什么是Web应用--以JavaWeb为例
    Web应用(WebApplication)是指通过Web浏览器访问的应用程序。与传统的桌面应用不同,Web应用运行在服务器上,通过网络传输数据,并在客户端浏览器中显示和操作。这种架构具有跨平台、易于更新和维护等优势。Web服务器的作用Web服务器在Web应用中扮演着重要角色,主要功能包括:接收......
  • java后端开发学习路径
    java后端开发学习路径阶段一:Java基础(入门)学习内容:基本语法:变量、数据类型、运算符、控制流、函数等。面向对象编程:类、对象、继承、多态、封装等。常用类库:String、集合框架(List,Set,Map)、IO、多线程等。推荐资源:《Java核心技术卷一》:https://www.am......