第一个Java程序
代码
-
/** * 一个简单的Java应用程序 */ public class FirstSample { public static void main(String[] args){ System.out.println("Hello World!"); } }
解释
-
public
- 访问修饰符,控制程序的其他部分对这段代码的访问级别
-
class
- 关键字,表示类
-
FirstSample
- 类名
- Java中类名的命名规定
- 以字母开头,后面可以跟字母和数字的任意组合,长度基本上没有限制
- 类名不能是Java保留字
-
main方法
- Java 1.4之后强制main方法必须是public
- main方法必须是static
- 返回值类型为void,main方法没有为操作系统返回“退出码”(程序退出时的状态码),如果main方法正常退出,那么Java应用程序的退出码为0。如果希望在终止程序时返回其它的“退出码”,需要调用System.exit方法
- 退出码其实是约定俗成的。一般约定[0,99]内整数代表正常退出,[100-199]代表警告退出,大于等于200代表异常退出,但是不同的操作系统却不同。
- Java中,默认的正常退出码为0,非零值表示不正常退出(目前测试非正常退出的退出码为1)
- System.exit(int status)可以指定退出码
- 程序运行到该方法所在的那一行代码会直接退出程序,并返回指定的退出码,后面的代码不再执行
- 底层调用方法是Runtime.getRuntime().exit(status);
- JVM总是从指定类中的main方法的代码开始执行
-
System.out
- System为类,out是System类中的静态成员变量,是一个PrintStream对象的引用
- println是PrintStream类中的实例方法,将传递给它的字符串参数显示在控制台上
- println方法和print方法的区别
- println方法的实现是先调用print方法向控制台输出,然后调用newLine方法输出换行
- print方法的实现是将接收到的参数转为String类型然后调用write方法向控制台输出
- 调用指定对象的toString方法
- write方法和newLine方法的实现与IO流相关
-
运行
-
编译阶段
-
javac FirstSample.java
-
编译阶段检查语法错误
-
如果没有语法错误,则根据java源文件生成字节码文件FirstSample.class
-
如果一个源文件中有多个类,则会生成多个字节码文件
-
-
运行阶段
-
java FirstSample
-
注意,执行java字节码文件是通过类名,不用加后缀.class
-
java.exe命令启动JVM,JVM启动类加载器ClassLoader
-
ClassLoader找到相应的.class文件,并将该文件加载到JVM中
- 默认情况下,ClassLoader在当前路径下寻找指定类名对应的.class文件
- 可以通过Java环境变量classpath指定路径
- 如果不指定路径,则需要切换路径到.class文件所在的目录下,再通过java命令运行程序
-
JVM将.class字节码文件解释成二进制文件
-
操作系统执行二进制文件,并与硬件平台交互
-
-