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() ...
随机推荐
- 【Spark】ScalaIDE运行spark,A master URL must be set in your configuration
or SparkSession.master("local")
- hiveserver2和zookeeper的HA搭建(转)
最近公司新项目申请资源,虚拟机资源打开时候使用source login.sh的脚本来进行登录注册,好奇心驱使下看了看里面的shell脚本,使用到了hiveserver2的zookeeper连接,百度一 ...
- java语言评价--java帝国
“陛下您想想,我们有很多宝贝,” IO大臣根本不理线程大臣, 继续侃侃而谈:“ 比如IoC, AOP,反射.动态代理.泛型.注解.JDBC.JMS...... 还有我们引以为豪的JVM.这些东西,那些 ...
- strings命令(转)
以前我用strings命令的频率不高, 现在越用越顺手, 而且已经是离不开strings命令了.虽然以前说过strings命令, 但今天还是要说. 主要是两大用途, 下面来说明一下: 一. 确认代码编 ...
- Numpy | 06 从已有的数组创建数组
numpy.asarray numpy.asarray 类似 numpy.array,但 numpy.asarray 参数只有三个,比 numpy.array 少两个. numpy.asarray(a ...
- Numpy | 05 创建数组
ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建. 一.numpy.empty numpy.empty 方法用来创建一个指定形状(shape).数据类 ...
- 基于docker-compose部署 简单nsq 集群
主要目的是搭建一个测试环境,同时使用了nodejs 客户端sdk nsq 简单了解 nsqd:一个负责接收.排队.转发消息到客户端的守护进程 nsqlookupd:管理拓扑信息并提供最终一致性的发现服 ...
- 虔诚的墓主人(BZOJ1227)(洛谷P2154)解题报告
题目描述 小W是一片新造公墓的管理人.公墓可以看成一块N×M的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地. 当地的居民都是非常虔诚的基督徒,他们愿意提前为自己找一块合适墓地. ...
- A%G^C006
AGC006 快乐翻题解\(\sqrt{}\) A Prefix and Suffix 这一场我怎么一道都不会啊/kk https://agc006.contest.atcoder.jp/submis ...
- webgestalt 通路富集分析
http://www.webgestalt.org/ 通路富集分析 参考 http://www.sci666.com.cn/9596.html