第一个 Java 程序
本节我们将以 Windows
操作系统为例,编写并执行第一个 J**a
程序。在这之前,请确保你的操作系统上已经安装了 JDK
1. 编译程序
大家可能有个疑问,为什么需要编译程序呢?计算机不能直接执行我们编写的源代码吗?
这是由于计算机只能识别由 0 和 1 组成的二进制代码。需要通过编译将源代码转换为计算机认识的二进制代码。
1.1 J**a 中的编译
在 J**a 中,程序不是直接被编译为可执行文件,而是被编译为字节码文件, JVM
(J**a 虚拟机)在运行时执行字节码文件。当我们使用 j**ac
编译器时,J**a 源代码文件被编译为字节码文件,字节码文件以扩展名 .class
的形式保存在磁盘上。当程序运行时,字节码文件将被转换为机器代码,并在内存中执行。
总的来说,J**a 源代码需要被 “转换” 两次才能被计算机执行:
- J**a 源代码被编译为字节码:由 j**ac 前端编译器完成;
- 字节码被编译为机器码:由 JVM 的执行引擎完成。
下图描述了一个 J**a
程序从编写到编译,再到执行的步骤:
1.2 快速执行一个程序
1.2.1 准备工作
为了确保我们人生中第一个 J**a 程序能够顺利执行,请首先确认你已经完成了下面两件事情:
- 已经在你的电脑上成功安装
JDK
; - 有一个文本编辑器。(如 Windows 的记事本,Unix 的 vim)。
1.2.2 编写源代码
新建一个文本,输入如下内容,将其命名为 HelloWorld.j**a
并保存
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Tips:
- 文件名必须与类名同名(类名就是上面第一行代码中
class
后面的HelloWorld
),并且扩展名为.j**a
,文件名和类名都区分大小写,所以请确保文件名和类名大小写保持一致;- 类的命名约定以大写字母开头;
- 上述代码中的所有符号,请使用英文半角;
- 别忽略了代码第三行结尾的分号
;
。
- 文件名必须与类名同名(类名就是上面第一行代码中
class
后面的HelloWorld
),并且扩展名为.j**a
,文件名和类名都区分大小写,所以请确保文件名和类名大小写保持一致; - 类的命名约定以大写字母开头;
- 上述代码中的所有符号,请使用英文半角;
- 别忽略了代码第三行结尾的分号
;
。
下面为实操中的截图。
打开记事本,输入源代码:
点击文件 -> 保存,将文件保存到磁盘(此处保存在桌面上),注意:这里要将文件名命名为 HelloWorld.j**a
,保存类型选择所有文件,编码选择 UTF-8
:
1.2.3 编译后执行
现在,打开你常用的命令行工具。(如 Windows 上的命令提示符、MacOS 上的终端),并进入你刚刚保存 J**a 源代码的目录。
在 Windows
搜索栏中输入 cmd
即可打开:
使用 cd
命令,进入到我们刚刚保存源代码的目录(即进入到桌面目录 cd Desktop
),使用 dir
命令,查看目录下内容:
使用 j**ac
命令编译源代码:
j**ac HelloWorld.j**a
执行编译命令后,你会发现同一目录下会生成一个 HelloWorld.class
文件,这个 HelloWorld.class
就是我们说的字节码文件。接下来就是通过 JVM
执行字节码文件了,输入下面的命令:
j**a HelloWorld
如果一切正常,你会看到屏幕上输出如下内容:
祝贺你!成功执行了第一个 J**a 程序!
Tips:
j**ac
是编译器,而j**a
是虚拟机,先使用j**ac
编译器编译源代码,再使用j**a
虚拟机执行字节码文件。这就是我们上面提到的 j**a 源代码被转换两次到执行的过程。j**a
命令后面的参数是类名。换句话说,我们只需要给虚拟机传递类名作为参数即可,虚拟机会自动查找对应的以.class
为后缀的文件并且执行。
j**ac
是编译器,而j**a
是虚拟机,先使用j**ac
编译器编译源代码,再使用j**a
虚拟机执行字节码文件。这就是我们上面提到的 j**a 源代码被转换两次到执行的过程。j**a
命令后面的参数是类名。换句话说,我们只需要给虚拟机传递类名作为参数即可,虚拟机会自动查找对应的以.class
为后缀的文件并且执行。
2. 理解程序
我们现在对上面的 HelloWorld.j**a
代码进行解析:
public class HelloWorld {
...
}
这段代码表示我们定义了一个公开类,类名为 HelloWorld
,按照约定类名首字母要大写。
public
表示这个类是公开的,class
顾名思义,就是类, public
和 class
都是 J**a 中的关键字,必须小写。 花括号 {}
中间为类的定义。
下面我们来看下花括号中间的 main()
方法代码:
public static void main(String[] args) {
...
}
这段代码表示我们定义了一个入口方法,注意:入口方法是 J**a 程序执行的起点。
public
和 static
分别表示方法是公开的、静态的,void
是方法的返回类型,main
后面的括号 ()
用来将方法的参数括起来,String[]
是参数的类型,args
是参数的名称。J**a 规定,某个类定义的 public static void main(String[] args)
是 J**a 程序的固定入口方法。
在方法内部,有一行代码:
System.out.println("Hello World!");
这行代码的意义就是将 Hello World
这一串字符打印在屏幕上。你可以尝试修改这块内容,将代码中的 Hello World!
,替换为其他内容,例如:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("10站长网");
}
}
保存源代码,打开命令行,重新编译执行,屏幕上输出的内容将会被成功替换。
3. 小结
本小节我们一起完成了第一个 J**a 程序的执行,在这个过程中,我们了解了编译相关的知识,知道了使用 j**ac
命令,可以将一个.j**a
后缀的源代码文件编译成.class
后缀的字节码文件,使用 j**a
命令,可以执行字节码文件。我们也对程序的基础语法有了大致的了解。如果你对程序的理解还有困惑,也不必担心,在后面的章节中,我们将具体学习 J**a 的基础语法,更加游刃有余地阅读、编写程序。
相关文章
- Java中的运算符
- Java中的数据类型
- 黑马程序猿——JAVA高新技术——反射
- Java 函数(方法)
- Eclipse配置Tomcat教程+创建第一个Java Web程序
- 深度剖析Java集合之ArrayDeque
- 回归Java:泛型使用
- Java Reflection(十):数组
- java在Linux执行命令Java在Windows执行命令
- 【Java】整理关于java的String类,equals函数和比较操作符的区别
- java 常用命令
- 《Java 开发从入门到精通》—— 第2章 第一段Java程序 2.1 搭建Java开发平台
- 《Java编码指南:编写安全可靠程序的75条建议》—— 指南17:最小化特权代码
- 《Java编码指南:编写安全可靠程序的75条建议(英文版)》—— 第2章 编写第一个程序 2.1 编写程序所需的工具
- 《像计算机科学家一样思考Java》—— 1.5 第一个程序
- 基于Java(SSM框架)+MySQL开发的小型英语学习网站【100010069】
- Java Design Demo -简单的队列-异步多任务队列(java android)
- java提取字符串数字,Java获取字符串中的数字
- Java日志框架slf4j剖析
- java中文乱码解决之道(三)—–编码详情:伟大的创想—Unicode编码
- 第一次尝试学习java 安装jdk 与配置环境变量 写第一个java程序 并运行
- 浅析Java对集合进行操作时报java.util.ConcurrentModificationException并发修改异常问题:产生原因、单线程/多线程环境解决、CopyOnWriteArrayList线程安全的ArrayList、fail-fast快速失败机制防止多线程修改集合造成并发问题
- Java魔法堂:初探MessageFormat.format和ChoiceFormat
- 微信小程序 获取小程序码和二维码java接口开发
- Java高手速成│编写你第一个数据库程序
- linux下Java程序中插入DB中国的数据乱码问题
- java常见面试题及答案 11-20(JVM)
- Java-安装与配置JDK运行第一个Java程序
- java程序中的ibatis连接mySql的基本实例
- Java idea 常用快捷键
- Java @Data报错 或者 程序包lombok不存在
- 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....
- Java //PP1.9 编写一个程序,显示如下的菱形形状,不能有任何多余的字符出现。