一. 引言
继上一篇《JDK基础知识》,在文章的末尾我们使用文本编辑器编写了第一个Java程序,并通过命令行执行相关命令成功编译运行后,大家是否对Java的程序世界有了一丝期待,接下来,就让我们认识一下Java程序。
二. 认识Java程序
存储格式
Java程序代码被保存在一个个 .java 文件中,.java 文件又称Java源代码文件,所以 .java 文件就是Java程序的存储格式。
基本单位
Java语言是面向对象的,面向对象的语言有一个共同的特点——基本单位都是class(类)
类是什么?
从开发者的角度来解释:类是一个模板,它描述一类对象的行为(method)和属性(field)
从初学者的角度来解释:类是对同一类事物归纳总结的产物,它包含此类事物的一些功能和特征
基本结构
格式
[package [包名]]
[访问修饰符] class {类名} {
[静态变量]
[静态代码块]
[成语变量]
[构造函数]
[成语方法]
[静态方法]
}
- [] 表示可选填
- 访问修饰符有:public、默认、protected、private
- 每个 .java 文件中仅可包含一个 public 类
完整示例
package com.test;
public class FirstClass {
/**
* 静态变量
*/
public static String staticName = "";
// 静态代码块
static {
staticName = "FirstClass";
System.out.println("FirstClass static code block end.");
}
/**
* 成员变量
*/
private String name;
/**
* 空构造函数
*/
public FirstClass() {
System.out.println("FirstClass empty constructor method end.");
}
/**
* 支持传参的构造函数
*
* @param name 赋给成员变量name的值
*/
public FirstClass(String name) {
this.name = name;
}
/**
* 成员方法
*
* @return 返回成员变量name的值
*/
public String getName() {
return name;
}
/**
* 静态方法
*
* @return 返回静态变量staticName的值
*/
public static String getStaticName() {
return staticName;
}
/**
* main方法
*/
public static void main(String[] args) {
FirstClass firstClass = new FirstClass();
System.out.println(firstClass.getName());
System.out.println(FirstClass.getStaticName());
}
}
结构说明
术语 | 说明 |
---|---|
包名 | 通过package关键字修饰,后面的名称一般是公司域名倒过来 例:www.apache.org,那么包名就是:org.apache开头 |
静态变量 | 类中通过static关键字修饰的变量,只能通过 类名.变量名 的方式去访问该成员变量,当然还受到访问修饰符的限制,类独有,对象.变量名 无法访问 |
静态代码块 | 类中 static { …代码块 } 的结构代码,即为静态代码块,静态代码块的执行时机是:类被初始化。类被初始化的情况有多种,此处不做介绍 |
构造函数 | 类的构造函数和创建对象直接相关,简单理解就是通过此函数(方法)构造一个对象,如果某一个类未声明构造函数,那么在编译期,编译器会在生成的class文件中生成一个空构造函数 |
成员变量 | 类的对象的变量,通过 对象名.变量名 访问,每个对象专享,当然还受到访问修饰符的限制 |
静态方法 | 类中通过static关键字修饰的方法,只能通过 类名.方法名 的方式去调用,当然还受到访问修饰符的限制 |
成员方法 | 类的对象的方法,通过 对象名.方法名 访问,每个对象专享,当然还受到访问修饰符的限制 |
main方法 | Java程序运行的入口,每个Java应用程序有且仅有一个main方法,main方法体的格式固定为示例中的那样 |
行结束符 | ; (标识行结束,使用英文 ; 号) |
单行注释 | // 注释 |
多行注释 | /* 内容 */ (中间内容可换行) |
Javadoc注释 | /** 内容 */ (中间内容可换行,一般用于变量、方法上进行说明,最终通过 Javadoc 可生成类说明文档) |
三. 了解Java程序的运行过程
我们编写好的Java程序,也就是一堆 .java 文件,是不能直接运行的,需要先通过Java编译器(javac) 编译成 .class 文件,编译好的 .class 文件再通过Java虚拟机(JVM) 翻译成当前硬件环境和操作系统平台下的机器码,再去由操作系统执行机器码。
Java源文件 -> Java编译器 -> .class文件[平台无关] -> Java虚拟机 -> 机器码
这也就很好的解释了,为啥Java程序的口号是:one write run anywhere(编写一次到处运行)。因为 .class 文件是和平台无关的,只需要开发适应平台的 Java虚拟机 即可,同一份 .class 文件,通过各个平台的 Java虚拟机 会被解释成 适用此平台的机器码。