深入理解Java的main方法
一、简单介绍
在我们的Java程序中都会出现一个名称为main的方法,我们发现没有这个方法我们的程序就无法运行。
其实任何一个Java程序的运行入口都是这个main方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同:方法名称必须为main,且必须由 public static void 修饰以及入参必须是一个String类型的数组。
public class Test{public static void main(String[] args){System.out.println("我是任何一个Java程序的入口方法");}
}
二、详细分析
(1)main()方法为何必须被声明为public static void?
①必须由public修饰的原因是:main方法是要被JVM加载的,所以需要最高的访问权限。
②必须由static修饰的原因是:首先我们知道在java中调用一个方法,要么是通过实例对象调用,要么是直接通过类名调用。而JVM在调用我们的main方法是需要直接通过类名调用的,不会生成一个实例对象来调用,所以必须由static修饰。
③必须由void修饰的原因是:main方法执行完毕时,并不需要有相关返回值返回,所以void修饰即可。
(2)为什么方法名称必须为main,以及入参必须为String类型的数组?
这其实是java的规定,大家直接记住就好。不过虽然入参类型固定,但入参名称我们可以自定义。
(3)注意事项
由于我们的main方法被static修饰,所以它其实也是一个静态方法,所以在main方法中我们可以直接调用本类的静态方法和静态属性,但不能直接调用本类中的非静态方法或非静态属性,必须创建该类的一个实例对象后,才能通过这个对象去调用本类中的非静态成员。
三、main方法可不可以被重载、继承、重写、以及被其他方法调用?
(1)main()被重载测试:
(2)main()被继承与重写测试:
我们使用Student2类继承了Student类,Student2类里我们没有写main()方法却发现出现了小红三角,可以运行,而且运行结果也说明了子类继承了父类中的main()方法。那么既然可以继承,那么可不可以重写main()呢?当然是不可以的啦,因为被static修饰的方法可以被继承但不允许被重写,即使你发现子类中可以出现一个和父类静态方法具有相同的返回值类型、方法名称、参数列表等的静态方法,那么这其实只是对父类对应的方法进行了隐藏,而不是我们所谓的方法重写。总之记住一句话,静态方法可以被继承但不可以被重写。只有普通方法才可以在继承之后被重写。
(3)main()被调用测试:
根据运行结果我们可以知道main方法可以被其他方法调用。
四、总结
main方法可以被重载、被继承、被其他方法调用,但不可以被重写。
也就是说,main方法除了作为程序入口,被虚拟机调用之外,其他的方面和一个普通的静态方法是一致的。
深入理解Java的main方法相关推荐
- 今天终于搞懂了:为什么 Java 的 main 方法必须是 public static void?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:suo.im/6v9d64 为什么 main 方法是 ...
- java中main方法前的public static void及其后面的(String[] args)【笔记自用】
为什么Java的main方法必须是public static void? 一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理 ...
- 关于java中main方法为什么必须是静态的
Main方法是我们学习Java编程语言时知道的第一个方法,你是否曾经想过为什么main方法是public.static.void的.当然,很多人首先学的是C和C++,但是在Java中main方法与前者 ...
- 你知道为什么Java的main方法必须是public static void?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://suo.im/6v9d64 Main 方法是我 ...
- main方法_你知道为什么Java的main方法必须是public static void?
来源:http://suo.im/6v9d64 Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public.static.void 的.当然, ...
- Java执行main方法,异常为:could not find the main class.program will exit
Java执行main方法,异常为:could not find the main class.program will exit 参考文章: (1)Java执行main方法,异常为:could not ...
- 为什么Java的main方法必须是public static void?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://suo.im/6v9d64 Ma ...
- 有初学的同学问你为什么Java的main方法必须是public static void?请告诉ta!
相信这个问题你也思考过?但是如果让你说起来,你知道怎么叙述吗?或者说怎么说明白. 问题:为什么Java的main方法必须是public static void? 科班出身的话,相信大家都是先学习的C ...
- 在JAVA语言程序中main_在Java程序main方法中,正确的参数是
[单选题]下列叙述中,错误的是 [填空题]Access属于()数据库,Access中,不允许在主关键字字段中有重复值或(). [单选题]如下哪些字符串是Java中的标识符? [填空题]常用的基本电量传 ...
最新文章
- 完全理解Python迭代对象、迭代器、生成器
- 建立注册DLL和反注册DLL文件的快捷方式
- 一个算法同时解决两大CV任务,让目标检测和实例分割互相帮助,地平线实习生论文被AAAI 2020收录...
- golang中的优雅中止
- 阶段-关口系统---学习笔记
- 【图像】jpg与jpeg的区别
- 串口通信模块5:串口操作自定义类(3)
- 通过GitHub Pages创建个人主页
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- 程序员的自我修养(2)——计算机网络(转) good
- android在activity中锁屏解锁后重走OnCreate的问题的解决办法
- in最多可以放多少?_新手开店,放多少商品才能获取最多流量?
- python获取文件修改时间与创建时间
- Android 对应的xml配置值,颜色表
- ImportError: No module named matplotlib.pyplot
- xp系统如何打开端口服务器,xp系统如何开启445端口?
- 史上最全的美国留学资料,从此不用找中介
- “堆排序算法”(C语言实现)
- html的excel表格自动换行,excel自动换行总结
- 快乐美工:一键解决模糊图片高清精准优化