java main方法
1、问题:Java main方法为什么是 public static void main(String[] args)???
| 序号 | 场景 | 编译 | 运行 | 解释 |
| 1 | public修改为private protected或者去掉 | 正常 | Main Method not public | 只有当main方法在公有级别上时才对JVM可见,所以需要使用public修饰 |
| 2 | 去掉static | Exception in thread "main" java.lang.NoSuchMethodError:main | 如果要使main方法作为程序入口,不必要先去创建该类实例而是直接调用,所以该方法需要用static修饰 | |
| 3 | 修改返回值类型 | JVM对Java程序已经是最底层,由它调用的方法返回值没有任何地方可去,因此main方法不需要返回值,所以使用void修饰 | ||
| 4 | 修改参数类型或添加多个参数 | main方法需要接收命令行传入的参数(参数之间使用空格分隔),java规范使用字符串数组作为main方法的唯一入参,参数名可以不是args,如果不穿参数,该数组是empty而不是null | ||
| 5 | 修改方法名 | 含有main方法的类是Java应用程序,JVM只识别main作为程序入口,所以只能使用main作为方法名 | ||
| 6 | 添加throw Exception | 正常 | main方法可以抛出异常 | |
| 7 | public与static互换位置 | 正常 |
2、问题:main方法作为程序的入口
public class Main
{
static
{
System.out.println("123");
System.exit(0);
} public static void main(String[] args)
{
System.out.println("456");
}
}
运行结果:123
JVM在执行时,首先加载类,然后执行内部的静态块,然后再去调用main方法。
上例中的静态块打印"123"之后 被强制退出程序,就没机会执行main方法了。
java main方法的更多相关文章
- 07 java main方法
1.问题:Java main方法为什么是 public static void main(String[] args)??? 序号 场景 编译 运行 解释 1 public修改为private pr ...
- 从java main方法说开去(转)
刚刚接触java语言时,接触的便为一个java main方法.我们知道这样程序就可以运行了,但是程序是怎么运行起来的我们却不知道. 众所周知,当执行一个java程序时,首先会启动一个JVM虚拟机进程, ...
- 为什么使用Junit Test而不用普通java main方法来完成测试?
因为在程序里边,一个接口对应一个实现方法,而在接口中常常会定义相关的很多方法,所以在测试的时候,如果都在main方法里边进行测试,main方法就会显得臃肿,而且不便于以后其他人测试以及查看测试数据,用 ...
- java main方法背后的故事?(转)
jvm java 看似一种语言,实则一个巨大的体系的王国,开发这么多年了,还是没有搞懂,我以为我懂了,可是过了一段时间又忘了,所以说还是没懂 1.main方法说起 编译完我们的java文件后,需要有个 ...
- public static void main(String[] args){} 关于Java main()方法
是Java程序的入口方法,JVM在运行程序时,会首先查找main()方法. public是权限修饰符,表明任何类或对象都可以访问这个方法: static表明main()方法是一个静态方法,即方法中的代 ...
- Java main方法继承
java中main方法是可以继承的 Test1.java package Variables; public class Test1 { public static void main(String[ ...
- linux shell脚本调用java main方法 代码传值
#!/bin/bash #description: ljdjService export PRG_HOME=/ainmc/work/toptea/dataTransfer PRG_KEYWORD=pr ...
- linux shell脚本调用java main方法 代码
#!/bin/sh # #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用. # #Author: tuda ...
- Java基础学习总结(78)——Java main方法深入研究学习
1.不用main方法如何定义一个类? 不行,没有main方法我们不能运行Java类. 在Java 7之前,你可以通过使用静态初始化运行Java类.但是,从Java 7开始就行不通了. 2.main() ...
随机推荐
- Controller的激活(2)
通过VS 的Controller 创建想到创建的Controller 类型 实际上继承了抽象类System.Web.Mvc.Controller,他是ControllerBase的子类,抽象类Syst ...
- 利用伪寄存器对MSVC++进行调试的介绍
简介 让我们从我写这篇文章的原因开始.一天,一个同事让我帮他调试他遇到的问题.所以我看着他在输入代码,这时我注意到下面一行: int test = GetLastError(); 他这样做是因为他想知 ...
- React 引入import React 原理
本质上来说JSX是React.createElement(component, props, ...children)方法的语法糖. 所以我们如果使用了JSX,我们其实就是在使用React,所以我们就 ...
- [题解向] Luogu2146[NOI2015]软件包管理器
#\(\mathcal{\color{red}{Description}}\) \(Link\) 一道\(zz\)的树剖题\(qwq\). #\(\mathcal{\color{red}{Soluti ...
- Zookeeper——一致性协议:Zab协议
Reference: https://www.jianshu.com/p/2bceacd60b8a 什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 ...
- AttributeError: module 'pytest' has no attribute 'allure'
解决 pip3 uninstall pytest-allure-adaptor pip3 install allure-pytest 参考: https://www.cnblogs.com/lansa ...
- [CMS]凡诺cms 2.1文件包含
0x01 简介 凡诺CMS下载链接:凡诺企业网站管理系统PHP 2.1 安装好了是这样的: 0x02 漏洞复现 在添加频道处上传附件: 根据网站根目录所在位置用../进行跨目录: 然后返回首页点击频道 ...
- zabbix 自动发现 监控 硬盘读写 disk io
直接 上配置: 1.配置文件 cat userparameter_harddisk.conf #discovery hard diskUserParameter=custom.vfs.discover ...
- vi 调到第一行和最后一行
gg 跳到文件第一行Shift + g 跳到文件最后一行 chmod 777 abc.txt
- 【Beta】设计与计划
目录 新增功能描述 小程序:按模块说明需求 用户权限模块 新闻模块 活动模块 社团模块 社团管理模块 小程序:按页面说明需求变化 新闻页 活动页/活动列表页 活动详情页 社团页 某类别社团页 社团详情 ...