main 函数
package cn.icnfox.Java;
public class MainDemo {
public static void main(String[] args) {
}
}
对于练习时常两年半的Java练习生( 手动鸡你太美 ヽ(✿゚▽゚)ノ ),对这一段代码肯定都能做到倒背如流,因为实在是太熟悉了,基本每天都要接触到,但是小妖精们真的懂'main'函数吗?
逐个分析
- public:开放,代表看该函效访问权限是最大的。
- static:静态,代表主函数随着类的加载就已经存在了。
- void:主函数没有具体的返回值。
- main:不是关键字,但是是一个特殊的单词,可以被jvm识别,程序的入口。
- (string[] args):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。
- 主函数是固定格式的:jvm识别。
'main'函数哪一部分可以修改?
'main'函数是固定格式的,作为类的入口被JVM所识别,但并不是不可以一成不变的,'main'函数有一个部分是可以改变的,
他就是'args'
'args'是参数的变量,是可以修改成任意符合变量规则的名称的,但是为什么大家书写'main'函数都用'args'呢?其实老美刚开始写的不是'args',而是'arguments'是自变量的意思,中国程序员简化成了'args',并且,慢慢变成了一个默契。
'main'函数传入的参数到底是什么呢?
(string[] args),首先我们可以看懂传入的是一个String类型的数组,不妨用代码检测下
代码
package cn.icnfox.Java;
public class MainDemo {
public static void main(String[] args) {
System.out.println(args);
}
}
运行结果
[Ljava.lang.String;@15db9742
从运行结果上我们可以看出,[代表数组,java.lang.String代表String类型,@15db9742代表地址值
那传入的这个Stirng类型的数组的长度是多少呢?答案是0
jvm在调用主函数时,传入的是new string[0];
代码
package cn.icnfox.Java;
public class MainDemo {
public static void main(String[] args) {
System.out.println(args);
System.out.println(args.length);
}
}
运行结果
[Ljava.lang.String;@15db9742
0
可以给'main'函数传入参数吗?
答案是可以的,直接上代码试验下,方法有很多种,我只选取了其中一种
代码
package cn.icnfox.Java;
public class MainDemo {
public static void main(String[] args) {
String[] arr= {"11","22","3"};
MainDemo2.main(arr);
}
}
class MainDemo2 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
运行结果
11
22
3
'main'函数可以被重载吗?
答案是可以的,直接上代码试验下
代码
package cn.icnfox.Java;
public class MainDemo {
public static void main(String[] args) {
System.out.println("Hello World");
}
//main函数的重载
public static void main(String[] args,int x) {
System.out.println("Hello World-重载");
}
}
运行结果
Hello World