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

当我们创建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方法就需要能够接收这多个字符串参数,那么就使用字符串数组了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【List,ArrayList与顺序表】

目录 1,什么是List 2,List的使用 3,线性表 4,顺序表 4.1 接口的实现 5, ArrayList简介 6,ArrayList的使用 6.1 ArrayList的构造方法 6.2 ArrayList的常见操作 6.3 ArrayList的遍历 7,…

解决CSDN 导入Markdown图片失效不显示问题

每次将MarkDown文件导入CSDN的时候,有些图片总是由于防盗链的问题导致图片加载不出来,还得手动再导一遍,极其不方便。所以我们能不能建立一个属于自己的图片服务器或者说在线图库呢,而且每次使用Typora插入图片的时候都会自动的上…

JVM学习-Arthas

Arthas Alibaba开源的Java诊断工具,在线排查问题,无需重启,动态跟踪Java代码,实时监控JVM状态Arthas支持JDK6,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的Tab自动补全功能&#…

makefile2

makefile的条件判断 运行make。 替换 make -c make-f …… 还可以 man make来查看其他的make命令。

Java可视化界面

一。使用JFrame(创建窗口)JDialog(创建新窗口) //1.创建一个窗口对象JFrame frame new JFrame("一个文件");//2.创建一个容器Container container frame.getContentPane();//3.为容器添加颜色container.setBackground…

pip 永久换源

一. pip换源 1 永久换源 1.1 配置pip.ini文件 先在此电脑的地址栏中输入%APPDATA% 按回车进行跳转到Roaming文件夹中,如果在此文件夹下没有pip文件夹则新建一个pip文件夹,并且新建文件pip.ini,并在里面输入以下内容(此处示例为阿里源)&#x…

fixdep conf 工具介绍

文章目录 1. fixdep 工具2. conf 工具 1. fixdep 工具 fixdep <depfile> <target> <cmdline> 作用&#xff1a;查找实现目标所用的命令、源码、头文件等全部信息。 参数1&#xff1a;<depfile>编译产生的依赖文件*.d 参数2&#xff1a;<target&…

Vue3的ref创建一个全局变量,非常好用!

1. 前言 Vue3的ref对象我们都知道其用法,通过ref可以创建一个响应式对象使用,同时可以用compute,watch等Vue3的API对其进行操作 不同于Vue2的是,Vue3使用的是组合式API,这也就意味着,我可以在外部单独创建一个ref对象,然后保存,通过导出的方式,给其他的页面使用 理论存在,开始…

SpringBoot高手之路04-Aop

文章目录 AOP 基础AOP概述start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖都会下载下来 AOP快速入门AOP核心概念 切入点表达式-execution AOP 基础 AOP概述 AOP 对特定的方法做增强 AOP 快速入门 start依赖,开发某一个功能,只需要下载这一个依赖,关于他的依赖…

快速上手 ngrok:将你的本地服务一键暴露到互联网,开发者必备技能!

想让外界轻松访问你本地电脑上的项目&#xff1f;试试 ngrok 吧&#xff01;无论是调试 Web 应用&#xff0c;还是进行跨网络测试&#xff0c;ngrok 都能帮你一键创建安全隧道&#xff0c;将本地服务映射到公共 URL&#xff0c;让全球任何地方都能访问。本文详细介绍 ngrok 的安…

【Spring框架全系列】SpringBoot_基础_先知(详细)

文章目录 1.SpringBoot介绍2.创建一个SpringBoot项目3.parent标签 - 父工程4.starter依赖5.启动类和文件打包6.默认配置 1.SpringBoot介绍 Spring阶段最困扰大家的事情是什么&#xff1f; 配置 → 配置魔鬼 快速搭建一个独立的生产级别的Spring应用 快速引入项目相关依赖 开箱…

搜维尔科技:使用 Xsens 动作捕捉技术创建栩栩如生的动画

使用Xsens 动作捕捉技术创建栩栩如生的动画 搜维尔科技&#xff1a;使用 Xsens 动作捕捉技术创建栩栩如生的动画

【WPF编程宝典】第9讲:几何图形

本讲介绍了直线&#xff0c;矩形&#xff0c;椭圆&#xff0c;几何分组&#xff0c;合并&#xff0c;布尔运算等几何图形操作。介绍了更强大的微语言几何图形的应用。 1.路径和几何图形 Path类继承自Shape类&#xff0c;是功能最强大的形状类。path类可以包含任何简单形状、多…

【漏洞复现】I Doc View 在线文档预览 qJvqhFt.json 任意文件读取漏洞(XVE-2024-2115)

0x01 产品简介 iDocView是一个在线文档解析应用&#xff0c;旨在提供便捷的文件查看和编辑服务。 0x02 漏洞概述 iDocView是一个在线文档预览系统 /iew/gJvghftjson 接口处存在任意文件读取漏洞&#xff0c;未授权的攻击者可以利用此接口并携带默认token读取服务器敏感文件信…

表格中附件的上传、显示以及文件下载#Vue3#后端接口数据

表格中附件的上传及显示#Vue3#后端接口数据 一、图片上传并显示在表格中实现效果&#xff1a; 表格中上传附件 代码&#xff1a; <!-- 文件的上传及显示 --> <template><!-- 演示地址 --><div class"dem-add"><!-- Search start -->…

【推荐】用scss循环zoom缩放比例,解决可视化大屏在不同分辨率屏幕下的适配问题

方法1&#xff1a; 指定几种常规屏幕宽度&#xff08;用这种方式就必须要强制用户全屏查看页面&#xff0c;在固定的宽度下才能达到比较不错的显示效果&#xff09; // 适配不同分辨率的页面---------------------------------------- html {overflow: hidden;width: 1920px;…

SQL语句练习每日5题(二)

题目1——查找学校是北大的学生信息 筛选出所有北京大学的学生进行用户调研&#xff0c;请你从用户信息表中取出满足条件的数据&#xff0c;结果返回设备id和学校。 解法&#xff1a;考察where条件语句 select device_id,university from user_profile where university北京…

【随手记】maplotlib.use函数设置图像的呈现方式

matplotlib.use() 函数用于设置 matplotlib 的后端&#xff0c;这会影响图形的呈现方式。不同的后端适用于不同的环境和需求。下面列出一些常用的后端及其描述&#xff1a; 常见后端参数 Agg: 参数&#xff1a;agg描述&#xff1a;基于Anti-Grain Geometry的后端&#xff0c;适…

python数据文件处理库-pandas

内容目录 一、pandas介绍二、数据加载和写出三、数据清洗四、数据转换五、数据查询和筛选六、数据统计七、数据可视化 pandas 是一个 Python提供的快速、灵活的数据结构处理包&#xff0c;让“关系型”或“标记型”数据的交互既简单又直观。 官网地址: https://pandas.pydata.o…

今日arXiv最热大模型论文:大模型都能怎么用?中南大学最新综述:大模型时代的自然语言处理

还记得2022年末ChatGPT的横空出世&#xff0c;带来了整个NLP乃至AI领域的震动&#xff0c;随后如LLaMA、ChatGLM、Qwen等类ChatGPT大模型&#xff08;LLM&#xff09;开始如雨后春笋般涌现&#xff0c;这些先进的模型不仅展示了在零样本学习中的出色表现&#xff0c;还在多种NL…