您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第5章:面向对象基础】_理解main方法
发布时间:2020-12-12 18:37:28编辑:雪饮阅读()
深入static
学习了static关键字的作用后,在回到java中就会明白为什么之前我们好多被main方法调用的方法都需要static关键字来修饰了。
public class TestJava{
public static void main(String args[]){
fun();
}
public void fun(){
System.out.println("hello world");
}
}
D:\>javac TestJava.java
TestJava.java:3: 无法从静态上下文中引用非静态 方法 fun()
fun();
^
1 错误
可以看到main方法也是遵循着static原则的。
面向对象与static
在了解了不少面向对象知识并知道了没有static方法修饰时候main方法是无法调用的,因为main方法本身也是static修饰的,那么像是上面的fun方法,我就偏不给它static修饰,但我还是要在main方法中调用该怎么做呢?
其实没有static修饰的方法就属于类的实例的,那么我们直接在main中实例化当前类的一个实例进行调用即可。如:
public class TestJava{
public static void main(String args[]){
new TestJava().fun();
}
public void fun(){
System.out.println("hello world");
}
}
D:\>javac TestJava.java
D:\>java TestJava
hello world
深入了解java命令行对类名的执行过程
java命令后面跟随的类名的执行其实就是执行这个类名的main方法形同“类名.main”
因为main方法就是static修饰的支持“类名.main”的形式
如:
public class TestJava{
public static void main1(String args[]){}
}
D:\>java TestJava
Exception in thread "main" java.lang.NoSuchMethodError: main
这里就报错了,因为我故意把main方法名写成了main1,所以找不到“类名.main”了
理解arg
main方法中String类型数组args是接收来自命令行“java”后面跟随的类名再后面跟随的参数的,多个参数的形式以空格进行分割,
如:
public class TestJava{
public static void main(String args[]){
for(String x : args ){
System.out.println("参数:"+x);
}
}
}
D:\>java TestJava
D:\>java TestJava arg1 arg2 agr3
参数:arg1
参数:arg2
参数:agr3
exit
exit方法当接收参数值不为0时候就表示退出当前java程序。
如:
public class TestJava{
public static void main(String args[]){
if(args.length<3){
System.out.println("请至少输入3个参数好吧!");
System.exit(1);
}
for(String x : args ){
System.out.println("参数:"+x);
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
请至少输入3个参数好吧!
D:\>java TestJava ar1 arg2
请至少输入3个参数好吧!
D:\>java TestJava ar1 arg2 agr3
参数:ar1
参数:arg2
参数:agr3
参数自身带有空格如何解决?
有种情况,比如你的输入参数是hello world,该参数自身就是空格,如果按照java上面的规则则会被视为hello和world两个参数了。其实对于这种情况可以在参数两边用双引号包裹即可。如:
程序还是继续使用上面的程序,这里暂时不需要程序进行处理,仅仅在于输入参数的方式。
![main.png](/d/file/xuewuzhijing/xindebiji/1e3f8c5964cf9838a2c939153913464a.png)
关键字词:java,面向对象,main