2.6 技术解惑
2.6.1 遵循Java源文件的命名规则
Java中的命名规则有很多,例如变量命名规则和类命名规则等。下面讲解的是Java源文件的命名规则。在编写Java程序时,源文件的名称不能随便起,需要遵循下面两条规则。
❑ Java源文件的后缀必须是“.java”,不能是其他文件后缀名。
❑ 一般来说,可以任意命名Java源文件,但是当Java程序代码中定义了一个public类时,该源文件的主文件名必须与该public类(也就是说,该类在定义中使用public关键字来修饰)的类名相同。由此可以得出一个结论:因为Java源文件的文件名必须与public类的类名相同,所以一个Java源文件里最多只能定义一个public类。
根据上述规则,我们可以得出命名程序文件的如下3个建议。
❑ 一个Java源文件只定义一个类,不同的类使用不同的Java源文件定义。
❑ 将每个Java源文件中单独定义的类都定义成public。
❑ 保持Java源文件的主文件名与该Java源文件中定义的public类同名。
2.6.2 忽视系统文件的扩展名
有很多初学者经常犯一个错误,即在保存Java文件时经常保存成形如“*.java.txt”格式的文件名,因为这种格式的文件名从表面看起来太像“*.java”了,所以经常会引发错误。要想纠正这个错误,我们可以修改Windows系统的默认设置。因为Windows系统的默认设置是“隐藏已知文件类型的扩展名”,所以我们只需要取消勾选这个选项即可,如图2-44所示。
图2-44 取消勾选“隐藏已知文件类型的扩展名”选项
2.6.3 环境变量的问题
Java JDK经过几年的发展,已经发展到现在的JDK 10系列。新的JDK更加成熟,速度也更快。但是往往程序员总是难以忘记以前版本的一些特点和用法,经常会不自觉地在新版本中按照旧版本的方式进行操作。例如最常见的就是环境变量问题,2.1.2节已经介绍了设置环境变量的问题。其实对于开发纯Java项目来说,如果使用的是JDK 1.5以上版本,则完全不用画蛇添足般地设置环境变量。
设置CLASSPATH环境变量会比较麻烦,在设置CLASSPATH环境变量后,Java解释器会在当前路径下搜索Java类,例如,在First.class文件所在路径下执行java First命令将没有任何问题。但如果设置了CLASSPATH环境变量,Java解释器只在CLASSPATH环境变量指定的系列路径下搜索Java类,这就容易出现问题。
在当今很多教科书和资料中,都提到在CLASSPATH环境变量中添加dt.jar和tools.jar这两个文件,所以很多初学者会将CLASSPATH环境变量的值设置为如下形式。
D:\Java\jdkl.10.0\lib\dt.jar; D:\Java\jdkl.10.0\lib\tools.jar
这样做会导致Java解释器不在当前路径下搜索Java类,此时如果在文件First.class所在路径下执行java First命令,就会出现图2-45所示的错误提示。
图2-45 错误提示
造成上述错误的原因是找不到类定义,这是由CLASSPATH环境变量设置不正确造成的。所以在此建议广大读者,在设置CLASSPATH环境变量时一定不要忘记在CLASSPATH环境变量中增加“.”,以强制Java解释器在当前路径下搜索Java类。
2.6.4 大小写的问题
Java语言是严格区分大小写的,但是很多初学者对大小写问题往往都不够重视。例如,有的读者编写的Java程序里的类是“first”,但在运行Java程序时使用的是“java First”的形式。所以在此提醒读者必须注意,Java程序中的First和first是不同的,必须严格注意Java程序中大小写的问题。在此建议广大读者,在按照书中实例程序编写Java代码时,必须严格注意Java程序中每个单词的大小写,不要随意编写,例如class和Class是不同的两个词,class是正确的,但如果写成Class,则程序无法编译通过。这是因为Java程序里的关键字全部是小写的,无须大写任何字母。
2.6.5 main()方法的问题
如果需要用Java解释器直接运行一个Java类,则这个Java类必须包含main()方法。在Java中必须使用public和static来修饰main(),并且必须使用void来声明main()方法的返回值,而且main()方法的形参只能是一个字符串数组,而不能是其他形式的参数。对于main()方法来说,修饰它的修饰符public和static的位置可以互换,但其他部分则是固定的。
在定义main()方法时也需要注意大小写的问题,如果不小心把方法名的首字母写成了大写,编译时不会出现任何问题,但运行程序时将引发错误。
2.6.6 注意空格问题
空格问题是初学者很容易犯的一个错误,Windows系统中的很多路径都包含空格,例如C盘中的“Program Files”,而这个文件夹恰好是JDK的默认安装路径。如果CLASSPATH环境变量包含的路径中含有空格,则可能会引发错误。所以推荐大家在安装JDK和Java相关程序/工具时,不要安装在包含空格的路径里,否则可能引发错误。
2.6.7 到底用不用IDE工具
作者对初学者的建议是:在初期尽量不要使用IDE工具,但现在是追求速成的年代,大多数人都希望用最快的速度掌握Java技术。其实市面上的IDE工具居多,除了Eclipse、Jbuilder和NetBeans之外,还有IBM提供的WSAD、JetBrains提供的IntelliJ IDEA、IBM提供的VisualAge、Oracle提供的JDeveloper、Symantec提供的Visual Cafe以及BEA提供的WorkShop,每个IDE都各有特色、各有优势。如果从工具学起,势必造成对工具的依赖,当换用其他IDE工具时会变得极为困难。而如果从Java语言本身学起,把Java语法和基本应用熟记于心,到那时再使用IDE工具便能得心应手。
在我们日常使用的Windows平台上可以选用记事本来编码,如果嫌Windows下记事本的颜色太单调,可以选择使用EditPlus、UltraEdit、VS Code和sublime text等工具。
如果实在要用IDE工具,例如Eclipse,则建议纯粹将它作为一款编辑器来用,所有代码要靠自己一个一个字符敲入来完成,而不是靠里面的帮助文档和操作菜单来完成编码工作。
2.6.8 区分JRE和JDK
对于很多初学者来说,对JDK和JRE两者比较迷糊,不知道它们之间到底有什么异同。
❑ JRE:表示Java运行时环境,全称是Java Runtime Environment,是运行Java程序的必需条件。
❑ JDK:表示Java标准版开发包,全称是Java SE Development Kit,是Oracle提供的一套用于开发Java应用程序的开发包,提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境以及常用的Java类库等。
Oracle把Java分为Java SE、Java EE和Java ME,而且为Java SE与Java EE分别提供JDK和Java EE SDK(Software Development Kit)两个开发包。如果读者只学习Java SE的编程知识,可以下载标准的JDK;如果学完Java SE之后还需要继续学习Java EE相关内容,就必须下载Java EE SDK。因为Java EE SDK版本中已经包含最新版的JDK,所以在安装的Java EE SDK中已经包含JDK。
一般来说,如果我们只是要运行Java程序,可以只安装JRE,而无须安装JDK。但是如果要开发Java程序,则应该安装JDK。安装好JDK之后就自然包含JRE了,也可以运行Java程序。