• 冒险村物语
  • 英雄无敌3塔防
  • 驾考家园手游

Java开发环境搭建(手把手带你开发第一个Java程序)

2022-03-21

c

本文章核心内容:

JDK、JRE、JVM分别是什么以及它们的关系

开发第一个Java程序

Java注释

public class 和 class 的区别

常见的疑惑难点

本篇文章的目标

掌握 Java 的开发环境搭建,会编写 HelloWorld 程序,并能够准确的进行编译和运行;理解path 和classpath 环境变量并可以自行配置。

1. JDK、JRE、JVM 三者关系

在学习 Java 之前,我们需要对一些专业术语有一定的了解,在 Java 中常见的专业术语包括:JDK、JRE、JVM 等,它们分别是什么,它们之间的关系又是怎样的呢,请看下图:


JDK、JRE、JVM 三者关系

上图中我们可以看到,JDK、JRE、JVM 之间存在这样的包含关系:JDK 包含JRE,JRE 又包含JVM。换句话说,只要安装了JDK,JRE 和JVM 则自动就安装了。


2. 开发前的准备工作

2.1 windows 显示文件扩展名

Java 源文件要求文件扩展名必须为.java,不能使用其他扩展名,有些操作系统默认不显示文件扩展名,大家可按照以下步骤,将文件的扩展名显示出来(以 win7 系统为例),请看以下步骤:

第一步:打开电脑桌面上的“计算机”,在菜单栏上找“工具”。

打开桌面上的计算机,菜单栏上的“工具”

第二步:点击“工具”,下拉列表中点击“文件夹选项(O)…”。

文件夹选项

第三步:在弹出的“文件夹选项”对话框中点击“查看”选项卡,在列表中找到“隐藏已知文件类型的扩展名”项,将该项前的“对勾”去掉,最后点击“应用”,点击“确定”即可。

点击“查看”,把上图红框的对勾去掉

以上是win7 操作系统显示文件扩展名的步骤,其它 windows 系列版本的系统和以上操作类似,大家可以自己找一下,并设置好。


2.2 windows 系统的常用 DOS 命令

初次学习Java 编程最好不要一上来就使用集成开发环境IDE,不利于代码的掌握,建议使用文本编辑器,甚至可以使用记事本编写。在这种情况下,我们就需要熟悉一些 dos 命令,接下来我们来看几个常见的dos 命令吧:

打开 DOS 命令窗口,使用快捷键:win + r,输入cmd,回车。

win+r 打开运行窗口,输出cmd,点击确定

dir 命令:查看当前目录下所有的子文件或子目录。

dir 命令查看当前目录下有哪些子目录或子文件

cd  命令:切换路径,使用方法是:cd+目录路径,需要注意的是路径包括相对路径和绝对路径,对于 windows 来说从硬盘的根路径下开始的路径都是绝对路径,例如:C:\Program Files、C:\Program  Files\Java  等,所有的相对路径都是从当前所在目录作为起点开始查找的路径。另外cd ..切换到上级目录,cd \切换到根目录。

cd 命令使用办法

切换盘符:直接输入c:,或者 d:,然后回车即可。切换盘符不需要cd 命令。


切换盘符

del 命令:删除文件或目录,例如:del *.class,删除当前目录下所有的.class 文件。

ipconfig 命令:查看 IP 地址等信息,查看更详细的信息使用ipconfig /all。

ping 命令:查看两台计算机是否可以正常通信,例如:ping 192.168.1.100,正常情况下发送数据包和接收数据包数量相同并且没有延迟的时候表示通信正常,ping 192.168.1.100 -t 表示一直发送数据包和接收数据包,ping www.baidu.com 可以查看电脑是否可以正常上网。

mkdir 命令:创建目录,例如:mkdir abc 表示在“当前目录”下新建abc 目录。

del 命令删除文件

ipconfig 命令:查看 IP 地址等信息,查看更详细的信息使用ipconfig /all。

ping 命令:查看两台计算机是否可以正常通信,例如:ping 192.168.1.100,正常情况下发送数据包和接收数据包数量相同并且没有延迟的时候表示通信正常,ping 192.168.1.100 -t 表示一直发送数据包和接收数据包,ping www.baidu.com 可以查看电脑是否可以正常上网。

mkdir 命令:创建目录,例如:mkdir abc 表示在“当前目录”下新建abc 目录。

mkdir 命令创建目录

cls 命令:清屏。

exit 命令:退出 DOS 命令窗口

以上的命令需要大家多敲多练才可以记住


2.3 文本编辑器的安装与配置

任何文本编辑器都可以进行 Java 代码的编写,例如:记事本、editplus、notepad++等,记

事本的文本编辑能力稍弱,没有高亮显示,这里选择 EditPlus。安装双击之后,一直点击下一步就可以了。

在使用该工具之前,我们对该工具进行一个简单的配置,例如:取消自动备份、设置字体大小、设置缩进长度等。首先打开“首选项(P)…”,如下图所示:

菜单栏“工具”,然后“首选项”

打开首选项之后,从左边“类别”中可以找到“常规”,在常规下有字体的设置,这里就不再赘述了,另外除了常规之外,还有“文件”,选中“文件”之后,可以看到右边有“保存时创建备份文件”,将前面的对勾去掉,然后点击应用,这样就可以取消自动备份功能了。如下图所示:

设置字体和取消自动备份

接下来,我们一起来看一下怎么设置制表符的长度,默认是 8 个长度,太长了,代码看起来不是很协调,可以修改一下,点击类别“文件”下的“设置&语法”选项,然后可以看到右侧有“制表符/缩进”,如下图所示:

这里设置缩进长度为 3

到此为止,文本编辑器EditPlus 安装并且配置完成了。当然,EditPlus 还有更强悍的配置, 比如EditPlus 可以配置属于自己的Java 环境,在这里我们就不再配置了,接下来的学习,Java程序的编译和运行,我们统一采用手工的方式进行,这样有利于大家熟练掌握开发步骤。


2.4 常用文本编辑快捷键

使用快捷键可以大大提高开发效率,从现在起我们应该尽可能使用快捷键来代替鼠标,接下来,我给大家列举一下通用的文本编辑快捷键。当然,如果大家想熟练掌握,还是需要后期不断的使用,请看下面列表:

以上是一些比较常见的快捷键,只要大家能够勤加练习,就能够提高操作速度,进而提高 编程速度,最开始的时候可能会不太适应,只要坚持就对了。


3. 开发第一个 Java 程序

3.1 JDK 的下载与安装

Java 语言由 Sun(Sun Microsystems)公司开发,2009 年被 Oracle(甲骨文)公司收购, 所以目前 JDK 需要从 Oracle 下载,Oracle 官网地址是 https://www.oracle.com,这里我们学习 Java10 版本,所以下载 JDK10,具体下载过程如下图所示:


选择JavaSE点击“Download Java SE...”


点击“DOWNLOAD”
选择“Accept...”,然后选择“windows”版

注意: JDK10 要求 windows 操作系统必须是 64bit 的。下载完成之后,直接双击 进行安装,具体步骤如下所示:

点击“下一步”选择JDK10 的安装目录,点击下一步正在安装JDK10
选择JRE10 的安装目录,点击“下一步”正在安装JRE10点击关闭,安装结束

JDK 的下载与安装就完成了。

3.2 JDK 的 bin 目录

JDK 安装结束之后,安装目录下有很多子目录,这里就不再一一赘述,后面用到的时候我们再看,这里重点看一下JDK 的bin 目录,bin 目录下存放的都是运行Java 程序相关的命令, 在windows 操作系统中,以exe 后缀的文件都是可执行文件,或者叫做命令文件,请看下图:

java 和javac 命令的存放位置

通过上图我们可以看到,在 bin 目录下有javac 和java 两个命令,其中 javac 命令是用来编译Java 源程序的,而java  命令是用来运行Java 程序的。其它命令目前我们还用不上,后期用上的话我们再看。


3.3 编写 HelloWorld

以上所说的环境都准备好之后,大家就可以开始编写你的第一个 Java 程序了,由于 Java 程序的基础语法还没有讲解,第一个程序大家只能严格按照以下代码照抄了,以下程序为什么要这么写,大家可以先不需要去了解,因为这第一个程序的最主要目的是为了测试你机器上的

Java  环境是否搭建好了。我们首先新建

文件,具体代码如下所示:

在这里大家需要注意的是,在照抄以上程序的时候,一定要注意标点符号都是半角形式, 还需要注意字母的大小写。大家编写好以上程序之后,使用快捷键ctrl + s 完成保存。


3.4 编译 HelloWorld 程序

编写完以上的 Java 程序并保存之后,接下来我们对以上的程序进行编译,编译 java 程序需要使用JDK bin 目录下的javac.exe 命令,我们先来看看这个命令是否可以在 DOS 命令窗口中使用。打开 DOS 命令窗口,输入javac,然后回车执行,如下图所示:

测试javac 命令

根据以上测试结果,可以看到 javac 命令是无法执行的,出现的错误提示信息是“'javac‟ 不是内部或外部命令,也不是可运行的程序或批处理文件”。这说明 windows 操作系统没有找到javac.exe 文件。接下来我们将所在的 “C:\Users\Administrator”目录切换到“C:\Program Files\Java\jdk-10\bin”目录下再来测试,如下图所示:

切换到bin 目录下再次测试javac 命令

通过上图我们可以看到,当我们将所在的当前目录切换到 bin 目录之后,查看了 bin 目录下确实存在 javac.exe 文件,然后执行 javac 命令,结果javac  命令找到了并且也运行了,根据测试结果可以得出这样的结论:windows   操作系统默认是从当前所在的路径下查找可执行命令文件的。换句话说,以后我们每一次使用 javac  这个命令的时候都需要先切换到 bin 目录下。这岂不是很麻烦,有什么解决办法吗?我们先来研究一下ipconfig 命令的执行原理,请看下图:

测试ipconfig 命令

通过上图我们可以看到,先将目录切换到“C:\Users\Administrator”下,并且使用 dir 命令查看ipconfig.exe 文件,发现当前目录下ipconfig.exe 文件并不存在,然后输入 ipconfig 命令并执行,发现该命令是可以执行的,换句话说windows 操作系统可以找到ipconfig.exe 文件,那么ipconfig.exe 文件在哪个目录下呢,请看下图:

ipconfig.exe 在这里

我们可以看到ipconfig.exe 文件实际上是在“C:\Windows\System32”目录下。那么 ipconfig

命令为什么在命令窗口可以直接执行而不需要切换到命令所在目录呢?

实际上这是因为windows 系统中的环境变量path 在起作用。我们打开环境变量(在桌面上“计算机”图标上点击右键->属性->高级系统设置->环境变量),可以看到 windows 系统有以下的默认配置,请看下图:

windows 自带的path 环境变量配置

我们 可以看 到 windows 系统有一 个默认的系 统变量 path , path 变量中 有“C:\Windows\System32;”路径。

我们来做一个实验,把上图 path 环境变量当中的“C:\Windows\System32;”删掉(鼠标双击Path,将“C:\Windows\System32;”删除,注意:System32 路径后面的半角分号也需要删除), 然后点击确定。将所有的 DOS 命令窗口全部关闭(注意:修改了任何环境变量,DOS 命令窗口都需要关闭之后重新打开,这样新的环境变量才会生效),打开一个新的 DOS 命令窗口, 测试ipconfig,如下图所示:


测试ipconfig 命令

根据以上测试,ipconfig 命令无法执行了,windows 操作系统已经找不到ipconfig.exe 文件了,也就是说windows 是从环境变量path 中指定的路径下查找命令的。

接下来我们再重新恢复 path 环境变量的配置,配置环境变量 path 的步骤是这样的:在桌面计算机图标上点击鼠标右键,继续点击属性,在弹出的窗口上选择高级系统设置 ,然后在弹出的系统属性窗口上点击环境变量,此时会弹出以下窗口:

配置环境变量的窗口

通过上图我们可以看到环境变量包括用户变量和系统变量两种,在这里简单说明一下,配 置用户变量表示只对当前用户有效,例如在“Administrator 的用户变量”中配置环境变量的话, 这个环境变量只对“Administrator”用户有效。配置系统变量则表示对使用该计算机的所有用户有效。

我们继续配置环境变量path,在上图的系统变量当中找到path 环境变量,点击“编辑”, 将“C:\Windows\System32;”添加到 path 环境变量当中(注意:环境变量 path 当中有很多路径, 路径和路径之间必须使用半角的英文分号进行分隔),然后点击确定,重新配置了环境变量需 要关闭所有 DOS 命令窗口,打开一个新的DOS 窗口测试ipconfig 命令,如下图所示:

测试ipconfig 命令

我们可以看到 ipconfig 命令又可以执行了。根据以上讲解,我们怎么让 javac 命令可以使用呢?非常简单,我们只要把“C:\Program Files\Java\jdk-9.0.4\bin;”路径配置到环境变量 path 当中即可(配置过程可以参见 ipconfig 的配置过程),配置完成之后,再次测试javac 命令, 如下图所示:

测试javac 命令

到此为止,javac 命令终于可以使用了。另外,在 javac 命令后面添加“-version”参数可以

查看编译器的版本,如下图所示:


查看编译器版本

到这里,大家应该掌握环境变量path 的作用以及配置了吧!

通过以上的配置,javac 命令已经可以使用了,那么它具体怎么使用才能编译java 程序呢, 接下来我们详细的讲解一下javac 命令的具体使用办法。

javac 命令的语法格式是:“javac 源文件路径”,非常简单,就是 javac 命令后面加上java 源文件的路径,之前我们讲解cd 命令的时候说过路径包括绝对路径和相对路径。也就是说javac 后面的源文件路径可以是绝对的也可以是相对的,如下图所示:

编译之前

通过上图,我们可以看到,在java 源程序编译之前,只有一个文件“HelloWorld.java”。继续看下图:

编译之后(绝对路径方式)

我们可以看到,javac 命令后面使用了java 源文件的绝对路径,编译之后,生成了一个新 的文件“HelloWorld.class”,我们称为字节码文件。另外,这也说明java    源文件没有语法错误,通过了编译。那么,除了这种绝对路径的方式,相对路径的方式应该怎么做呢?请看下图:


编译之后(相对路径方式)

我们可以看到先使用cd 命令将目录切换到chapter01 目录下,为什么要切换到该目录下呢, 这是因为HelloWorld.java 文件就在chapter01 目录下。这样一来,当前目录下存在HelloWorld.java 文件,则直接使用“javac  HelloWorld.java”进行编译。这种方式就表示使用了相对路径,记住:相对路径表示从当前所在的路径下作为起点开始找。细心的同学应该可以看 到新生成的HelloWorld.class 文件的最后修改时间变成了 11:24,这说明编译通过了。

我们把HelloWorld.java 文件中的程序故意修改让其出现错误,请看以下代码:

从以上的代码中可以看到main 方法的参数应该是(String[] args),结果写成了(Strin[] args), 这种情况下语法是错误的,那么此时编译会发生什么呢,请看下图:

编译器报错测试

我们可以看到,编译器报错了,字节码文件并没有生成,并且提示了很详细的错误信息, “错误:找不到符号”就表示某种类型未定义。以后开发中大家可能还会经常遇到这样的错误。

通过以上的测试,可以得出这样的结论:

java 源代码中存在语法错误,在编译的时候编译器会提示错误消息,并且不会生成 class 字节码文件。在以后的学习过程当中,编译错误的这些提示信息可以积累一下,有利于大家以后的开发。


3.5 运行 HelloWorld 程序

程序通过以上的编译之后,接下来我们就可以运行程序了。在这里先给大家普及一下,在Java 中有一个“类名”的概念,什么是类名呢,假设字节码是 A.class,则类名为 A,字节码是B.class,则类名为 B。之前生成的字节码文件是,那么类名则为 HelloWorld。

程序怎么运行呢,这个时候就需要借助JDK bin 目录下的java.exe 命令了,我们先来测试

这个命令是否可以在 DOS 窗口中使用,请看下图:

测试java.exe 是否可用

经过测试,我们看到 java.exe 命令是可以在 DOS 窗口中直接使用的,其实只要 javac.exe 可以使用,那么java.exe 就一定可以使用,因为javac.exe 和java.exe 都在JDK 的bin 目录下, 之前的课程中这个目录已经配置到环境变量path当中,所以这里java.exe 肯定也是可以使用的。

那么java.exe 具体怎么使用呢,这里需要大家记忆语法,语法格式为:“java  类名”,需要注意的是java 命令后面是类名,而不是 class 文件的名字,也不是class 文件的路径,不能这样 写 java HelloWorld.class , 也 不 能 这 样 写 java E:\course\JavaProjects\01-JavaSE\chapter01\HelloWorld.class,只能这样写:java HelloWorld。

那么它的运行原理是什么呢?

实际上是这样的:在命令窗口中输入“java   HelloWorld”回车之后,先启动的是类加载器(类加载器 ClassLoader 主要的作用是将类名所对应的class 文件装载到 JVM 当中,这里不再赘述,以后再详细学习类加载器),类加载器从硬盘上查找HelloWorld.class 字节码文件(为什么会查找 HelloWorld.class 呢?为什么不是查找 A.class 或者B.class 文件呢?这是因为运行的命令是java  HelloWorld,命令中指定的是HelloWorld 类,则类加载器查找的就是 HelloWorld.class 文件),默认情况下类加载器只从当前路径下查找,查找到之后则将HelloWorld.class 文件加载到JVM 并执行,如果没有查找到则会出现错误信息, 请看下图:

运行HelloWorld 类(正常)

我们可以看到,先使用cd 命令将路径切换到HelloWorld.class 字节码文件所在的目录,并使用dir 命令查看一下,确认当前路径下存在 HelloWorld.class 文件,然后执行 java HelloWorld 命令,执行结果是向控制台输出了“动力节点-口口相传的Java 黄埔军校”。

由于默认情况下类加载器只从当前所在的路径下加载字节码文件,如果该字节码文件不存在会提示什么错误信息呢?请看下图:

运行A 类(错误)

我们可以看到上图中是在chapter01 目录下使用 dir 命令查看 A.class 文件是否存在,结果是A.class 文件在当前目录下是不存在的,我们使用“java A”来执行,发现出错了,错误信息是:找不到或无法加载主类 A。换句话说也就是类加载器在硬盘上找不到 A.class 文件导致的错误。

在上面我们已经说过了:类加载器默认从当前路径下加载字节码,那么可以让类加载器从指定的目录下加载class 文件吗?

答案是可以的,这个时候就需要借助classpath 这个环境变量了(classpath 环境变量隶属于 java 语言,专门给类加载器指路的),接下来我们来设置一下classpath 环境变量,此处把classpath 设置为 E:\,如下图所示:

设置环境变量classpath

配置环境变量 classpath  的时候,这个变量不像 path 是已经存在的,我们只需要修改就行了,而 classpath 是不存在的,这里我们需要新建。在系统变量栏下点击新建即可,变量名填写classpath,变量值填写 E:\,然后点击确定即可。设置完成后关闭所有 DOS 窗口,重新开启新窗口,接下来按照下图操作:

测试环境变量classpath

我们可以看到先使用 cd 命令将目录切换到 chapter01 下,并使用 dir 命令查看,确认HelloWorld.class 文件在当前目录下是存在的,然后使用java HelloWorld 运行程序,结果出错了。错误信息之前我们已经见过了,表达的意思就是 HelloWorld.class 文件没找到。这是为何呢?这是因为当环境变量classpath 设置为固定的 E:\路径之后,类加载器只会从 E:\路径下查找字节码文件,不再从当前路径下加载。我们来试试把 HelloWorld.class 文件放到 E:\目录下呢? 请看下图:

测试环境变量classpath

通过上图我们可以看到,将 HelloWorld.class 文件移动到了 E:\目录下,然后再执行 java HelloWorld,我们可以看到程序正常执行了。

通过以上的测试可以得出,当设置环境变量classpath=E:\的时候,类加载器只去 E:\目录下加载class 文件了,不再从当前目录下加载,也不会去其它目录下加载。大家在这里思考一下, 如果将classpath  配置成一个指定的路径,例如classpath=E:\,这样我们以后的开发会不会很麻烦呢?

答案是非常麻烦,这是因为每一次编译生成的class 文件都要放到 E:\目录下类加载器才能找到,所以目前来说 classpath 环境变量是不需要配置的,因为 classpath 在没有配置的情况下, 类加载器默认会从当前所在的目录下加载 class,也就是说以后要想运行 class 首先要将 DOS 窗口的目录切换(cd 命令)到class 文件所在的位置,然后再运行。当然我们也可以把环境变量classpath 配置为:classpath=.,因为.代表当前路径。


4. 对 HelloWorld 程序的解释

HelloWorld 程序的代码如下所示:

接下来,我们对这个代码进行简单的解释,这里只是一个简单的说明,要彻底弄明白还需要后面课程的铺垫,大家耐心等待。对于以上的程序我要说这么几点:

public   表示公开的(关键字,固定写法)

class 用来声明一个类(关键字,固定写法)

HelloWorld 是一个类名(既然是一个名字,就可以改成其它的名字)

public class HelloWorld 表示声明一个公共的类HelloWorld

在 java 编程中,一定要注意成对儿的符号要成对儿写,以上 HelloWorld  当中成对儿的符号包括:小括号(),中括号[],大括号{},双引号""。这些符号在编写的时候建议成对儿编写。

最初学习 java 编程的时候一定要注意代码的格式,要有合理的缩进,什么时候缩进呢?大家需要记住:只要“我”这个大括号{}包含着“你”,那么“你”就应该比“我”低一级,此时“你”应缩进。

类体的概念,在以上程序中 HelloWorld  后面的大括号{},这个大括号{}里被称为类体。如下所示:

public class HelloWorld {

// 类体

}

程序入口,java 中规定程序的入口是一个固定的写法,必须像以下代码一样,不这样写,程序无法执行:

public static void main(String[] args) {

// 方法体

}

以上程序的入口又叫做 main 方法,或者叫做主方法。大家记住固定写法即可。另外在main 方法后面的大括号{}我们称之为方法体,方法体也是由大括号括起来的。

方法体由一条一条java 语句构成,每一条 java 语句必须以“;”结束。方法体当中的代码遵循自上而下的顺序依次逐行执行。

以上对 java 的入门程序 HelloWorld 进行了简单说明,有一些内容现在无法彻底搞明白, 学习后面内容之后大家就理解了。


5. Java 中的注释

5.1 注释的作用

注释是对代码的解释和说明,其目的是让程序员能够更加快速的理解代码。它是编写程序时,写程序的人给一个语句、程序段等的解释或提示,能提高程序代码的可读性。我认为添加注释,是为了程序更容易理解与维护,特别是维护,更是对自己代码负责的一种体现。

注释在编译的时候不会生成到class 字节码文件当中,它只在java 源文件中保留。


5.2 注释的三种方式

Java 语言的注释包括三种方式,它们分别是:

第一种:单行注释,语法格式如下:

// 单行注释,两个正斜杠后面的内容被注释

第二种:多行注释,语法格式如下:

/*

* 这里的注释信息为多行注释:

* 第 1 行注释信息

* 第 2 行注释信息

*/

第三种:javadoc 注释。

/**

* 这里的信息是javadoc 注释

* @author 作者名字

* @version 版本号

* @since 自从哪个版本号开始就存在了

*/

注意:对于 javadoc 注释来说,这里的注释会被JDK bin 目录下的javadoc.exe 命令解析并生成帮助文档(生成帮助文档后期做项目的时候大家会接触到的)。


5.3 注释应该怎么写

编写注释是程序员最基本的素质,养成编写注释的好习惯,要有编写注释的意识。当然, 写注释也是有技巧的,不是所有位置都写,不是把写的代码原版翻译过来,老程序员往往在写 注释的时候,不多不少,能够做到恰到好处,几句话就可以描述清楚程序的核心功能。

通常要在类和接口上写注释,这一部分注释是必须的。在这里,我们需要使用 javadoc 注释,需要标明:创建者,创建时间,版本,以及该类的作用。在方法中,我们需要对入参,出参,以及返回值,均要标明。对常量,我们需要使用多行注释,进行标明该常量的用途。在关键算法上,添加注释并且按照顺序依次标明,写明白该方法为什么这么做。

记住:注释的作用不在于表示代码的含义,而在于表示代码的功能。希望在以后的课程当中通过慢慢的培养,能够写一手漂亮的注释,当然,目前大家只需要掌握注释有哪几种,分别写到什么符号里就行了。


5.4 为 HelloWorld 提供注释

接下来我们为HelloWorld 程序提供简单的注释信息,来练习一下注释的编写:

通过以上代码我们可以看到,HelloWorld 类上写了一个javadoc 注释,在 javadoc 注释中提供了对这个类的整体描述信息、作者信息、版本号信息等。在 main 方法上提供了 javadoc  注释,对这个方法进行了说明,对参数进行了说明等。在输出信息的那行代码上提供了单行注释, 说明了这行代码的作用。


6. public class 和 class 的区别

在以上的程序中,我们看到HelloWorld 类在定义的时候使用了关键字public,那么一个类声明的时候可以不使用public 吗?我们一起来看看它们有什么区别?

我们先来进行一个实验,看看一个java 源文件中是否可以定义多个class,请看下图:

一个java 源文件中可定义多个class

我们可以看到创建了一个A.java 源文件,在该文件中定义了三个类,分别是 B 类、C 类和

D 类,使用javac 命令编译之后生成了三个字节码,分别是B.class、C.class、D.class。

通过以上的测试可以得出:

一个 java 源文件中可以定义多个 class,并且在编译的时候一个class 会对应编译生成一个class 字节码文件。还有,public 的class 可以没有。

接下来,我们在A.java 源代码中继续定义一个“公开的类E”,请看下图:

public class 的类名要求和java 源文件名一致

我们可以看到,定义公开的类 E 之后,再次编译,编译器报错了。并且提示的错误信息是: 类 E 是公共的,应在名为 E.java 的文件中声明。换句话说在 A.java 文件中定义的公共的类的名字必须是 A,不能是其它名称。也间接说明在同一个 java  文件中公共的类只能有一个(注意:在同一个java 文件中类名不能重名)。

通过以上的测试可以得出:

如果定义 public class 的类,只能定义一个,并且要求此类名必须和 java   源文件名保持一致。(这是规则记住就行,学计算机编程语言有很多知识点在学习的时候很难理解,只能靠记忆,随着后面内容的学习,大家会对以前困惑的知识点有所理解)。

接下来,我们在每一个类的类体当中都定义 main 方法,都写上程序的入口,看看是否可以编译和运行:

每个类中都可以定义main 方法

我们可以看到,在每一个class 中都可以编写main 方法,想让程序从哪个入口进去执行则加载该类即可。

通过以上的测试可以得出:

任何一个 class 中都可以设定程序入口,也就是说任何一个 class 中都可以写 main 方法(主方法),想从哪个入口进去执行,则让类加载器先加载对应的类即可,例如:想让A 类中的main 方法执行,则执行:java A,想让B 类中的main 方法执行,则执行:java B。但实际上,对于一个完整的独立的应用来说,只需要提供一个入口,也就是说只需要定义一个main 方法即可。

还有,在实际的开发中,虽然一个java 源文件可以定义多个class,实际上这是不规范的, 比较规范的写法是一个java 源文件中只定义一个class。


7. 常见的难点解惑

7.1 JDK 常用基本组件

JDK 常用的基本组件包括:javac(编译器)、java(运行 java 程序)、javadoc(提取java 程序的注释信息并生成帮助文档)、jar(打jar 包)、jdb(查错工具)、javap(反编译器)、jconsole(系统调试和内存监控工具)等。

以上有一些组件目前还没有接触到,随着后面内容的学习,大家会接触到的。


7.2 运行时出现“无法加载主类”

遇到这种情况,如下图所示:

无法加载主类

可能有以下几方面原因:

在运行java 程序时,目录没有切换到class 文件所在的路径下。运行时,先使用dir

命令查看当前路径下是否存在xxx.class 文件。

如果切换到 class  文件所在的路径下,还是出现以上问题,说明手动配置了环境变量classpath,并且所配置的环境变量classpath 当中没有当前路径“.”。要么将classpath 删除, 要么在classpath 环境变量中添加当前路径“.”。

总结

本章节的主要内容是带领大家搭建 Java 的开发环境,编写第一个 Java 程序。在这个过程当中经历了JDK 的安装,环境变量path 和classpath 的配置,Java 程序的编写、编译和运行。其中重点是需要大家理解 path 和 classpath 环境变量的作用以及如何配置。另外能够顺利的默写HelloWorld 程序(不参考任何代码)。能够给HelloWorld 程序提供简单的注释信息。


人气推荐

知识阅读

精彩推荐

  • 游戏
  • 软件
查看更多>>