Java程序的基本结构和运行

一. 引言

继上一篇《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虚拟机 会被解释成 适用此平台的机器码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刺客码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值