最近刚开始学习JAVA,下面是遇到的一些问题,在网上查看了很多资料和一些牛人的技术博客,自己才稍稍领悟,在这里做些总结和整理。有些牛人对知识点的理解很完美,这里就直接借鉴了。
注:本人菜鸟一枚,错误之处望留言指正。
1、写JAVA代码时,最先写的这两行到底是什么意思?
1. public class HelloWorld { 2. public static void main(String[] args) { 3. 4. } 5. }
在这里首先说下,定义一个方法的语法:
访问修饰符 返回值类型 方法名(参数列表) { 方法体 }
- 访问修饰符:方法允许被访问的权限范围,比如,public、protected、private 或者省略。其中public表示该方法可以被其它任何代码调用
- 返回值类型:定义方法的返回值的类型,如果方法不需要返回任何值,则返回值类型指定为void;如果方法需要返回值,则需要指定返回值的类型,并且在方法体中添加一条return语句用来返回值
- 方法名:定义的方法的名字,必须使用合法的标识符
- 参数列表:传递给方法的参数列表,参数可以有多个,也可以没有,多个参数之间用逗号隔开。每个参数由参数类型和参数名组成,以空格隔开
在这里先来了解一些与Java相关的名词:
Java Virtual Machine,简称JVM;它是运行所有Java程序的抽象计算机,是Java语言的运行环境,JVM读取并处理编译过的与平台无关的字节码(class)文件。
Java语言是跨平台的,就是因为有JVM的存在。而JVM不是跨平台的,不同的操作系统需要安装与此对应的JVM。在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机,由Java虚拟机负责Java程序在该系统中的运行。
在Java编程中,JVM会首先查找类中的main方法,因为main方法是Java程序的入口(关于程序的入口,其它的情况在这里不讨论),如果找不到main方法,程序会报错(我是在DOS界面中分布运行Java程序的,在程序的编译阶段不会报错,在程序的执行阶段会报错,提示:“在类中找不到main方法,请将main方法定义为:public static void main(String[] args) …”Java程序的执行阶段是由JVM参与的,编译阶段JVM是不管的)
main方法的public修饰符
public表明允许系统中任何位置的类都可以访问它。当然,JVM也可以轻松的访问执行它。
main方法的static修饰符
这里先说说类的实例化:
如果被调用的方法声明为static,可以在其它方法中直接调用。如果被调用方法没被static修饰(不是静态方法),调用时需要通过类的实例化进行调用(因为静态方法随着类的加载而加载,其先存在,对象后存在。一个已经存在的方法去调用还不存在的方法(没被static修饰),就要先创建那个方法的对象,创建对象的过程,就称为实例化。然后通过对象去调用那个方法。这个过程就是类的实例化)
1. 因为main方法是静态的,JVM调用这个方法时就不需要创建任何包含这个main方法的实例。
2. 如果main方法不声明为静态的,JVM就必须创建main类的实例,但是构造器可以被重载(个人理解,“构造器”就是,和类名相同但无返回值的方法),JVM就没法确定调用哪个main方法。
main方法返回值为void
main方法作为程序的入口和出口,是没有返回值的,main方法不同于其它方法,其它方法可以有返回值,这样在程序中调用该方法是,可以获取返回值,而main方法是由JVM调用的,如果main有返回值,那这个返回值返回给谁呢,肯定返回给JVM,那么这个返回还有意义吗。
(String[] args)
函数的参数,参数类型是一个数组,该数组中的元素是字符串。JVM在调用主函数时,传入的是new String[0];
程序第一行的“public class HelloWorld”也就很好理解了,指定类名Helloworld的权限为public(公有的)