Java程序入口:main()方法讲解
java程序的入口---main()方法的签名为:public static void main(string[] args) {...} ,其中,
♦ public修饰符:java类由jvm调用,为了让jvm可以*调用这个main()方法,所以使用public修饰符把这个方法暴露出来。
♦ static修饰符:jvm调用这个主方法时,不会先创建该主类的对象,然后通过对象来调用该主方法。jvm直接通过该类来调用主方法,因此使用static修饰该主方法。
♦ void返回值:因为主方法被jvm调用,该方法的返回值将返回给jvm,这没有任何意义,因此main()方法没有返回值。
上面方法中还包括一个字符串数组形参string[] args,根据方法调用的规则:谁调用方法,谁负责为形参赋值。也就是说,main()方法由jvm调用,即args形参应该由jvm负责赋值。但jvm怎么知道为args数组赋值呢?先看下面程序:
public class argstest{
public static void main(string[] args){
//输出args数组的长度
system.out.println(args.length);
//遍历args数组的每一个元素
for(string arg : args){
system.out.println(arg);
}
}
}
上面程序是最简单的“hello world”程序,只是这个程序增加了输出args数组的长度,遍历arg数组元素的代码。使用java argstest命令运行上面的程序,看到程序仅仅输出一个0,这表明args数值是一个长度为0的数组,这是合理的,因为计算机是没有思考能力的,它只能忠诚地执行用户交给它的任务,既然程序没有给args数组设定参数值,那么jvm就不知道args数组的元素,所以jvm将args数组设置为一个长度为0的数组。
改为一下命令运行上面的程序:
java argstest java spring
打印结果为:
2
java
spring
可以得出,如果运行java程序时在类名后面紧跟一个或多个字符串(多个字符串以空格隔开),jvm就会把这些字符串一次赋值给args数组元素。运行java程序时的参数与args数组之间的关系为:第一个参数对应第一个数组元素,第二个参数对应第二个数组元素,... ,以此类推。
如果某参数本身包含了空格,则应该将该参数用双引号""括起来,否则jvm会把这个空格当成参数分隔符,而不是当成参数本身。例如,采用如下命令来运行上面的程序:
java argstest "java spring"
看到args的长度是1,只有一个数组元素,其值是java spring。
问题:如何实现在main()方法执行之前输出"hello world"?
众所周知,在java语言中,main()方法是程序的入口方法,在程序运行时,最先加载的就是main()方法,但这是否意味着main()方法就是程序运行时第一个被执行的模块呢?
答案是否定的。在java语言中,由于静态块在类被加载时就会被调用,因此可以在main()方法执行前,利用静态块实现输出“hello world”的功能,示例如下:
public class test{
static{
system.out.println("hello world");
}
public static void main(string[] args){
system.out.println("hello my world");
}
}
程序运行结果为:
hello world
hello my world
由于静态代码块不管顺序如何,都会在main()方法执行之前执行,因此,以下代码会与上面的代码有同样的输出结果:
public class test{
public static void main(string[] args){
system.out.println("hello my world");
static{
system.out.println("hello world");
}
}
}
关注微信公众号【java典籍】,收看更多java技术干货
▼微信扫一扫下图↓↓↓二维码关注
下一篇: 晋阳失守,李世民为什么装病不出战?
推荐阅读
-
Java开源生鲜电商平台-程序员的沟通的方式与方法
-
Java程序中实现调用Python脚本的方法详解
-
java程序设计报告总结(简单游戏代码编写方法)
-
java程序设计报告总结(简单游戏代码编写方法)
-
Win7系统打开网页提示应用程序已被JAVA安全阻止的解决方法
-
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
-
java 学习笔记(入门篇)_程序流程控制结构和方法
-
java程序调试技巧(NetBeans和eclipse调试java通用方法)
-
android工程下不能运行java main程序的解决方法
-
Java main方法String[]args原理实例解析