第一段Java程序

本文详细介绍了Java编程的基础知识,包括关键字、命名规则、main方法、编译与运行过程。强调了Java的编译型和解释型特性,以及Java虚拟机(JVM)的角色。同时,讨论了JRE与JDK的区别,并提醒了开发者在实际操作中应注意的细节,如文件命名、路径中的空格问题以及安装路径选择。
摘要由CSDN通过智能技术生成

关键字
关键字指的是 Java 系统保留使用的标识符,也就是说,这些标识符只有 Java 系统才能使用,程序员不能使用这样的标识符。

true、false 和 null 也都是 Java 中定义的特殊字符,虽然它们不属于关键字,但也不能被用作类名、方法名和变量名等。另外,上表中的 goto 和 const 是两个保留字 (reserved word)。保留字的意思是,Java 现在还未使用这两个单词作为关键字,但可能在未来的 Java 版本中使用这两个单词作为关键字。

按照 Java 语法的规定,标识符可以由大小写字母、数字、美元符号($)组成,但不能以数字开头,标识符没有最大长度限制。

注意:在 Java 8 版本中,如果在标识符中使用了下划线 _,那么 Java 编译器会将其标记为警告。如果在 lambda(正则)表达式中使用了下划线 _,则直接将其标记为错误。在 Java 10 版本中,在任何情况下使用下划线 _ 都会被标记为错误。

main方法
在 Java 语言中,main() 方法被认为是应用程序的入口方法。也就是说,在运行 Java 程序的时候,第一个被执行的方法就是 main() 方法。这个方法和 Java 中的其他方法有很大的不同,比如,方法的名字必须是 main,方法的类型必须是 public static void,方法的参数必须是一个 String[] 类型的对象等。

编译Java程序
在运行 Java 程序之前,我们首先要将它的代码编译成可执行的程序,为此,我们需要用到 javac 命令

javac -d destdir srcFile

在上述命令中,-d 是 javac 命令的选项,功能是指定编译生成的字节码文件的存放路径(即 destdir)。在这里,destdir 必须是本地磁盘上的一条合法有效路径。而 srcFile 则表示的是 Java 源文件所在的路径,该路径既可是绝对路径,也可以是相对路径。通常,我们总是会将生成的字节码文件放在当前路径下,当前路径可以用点 . 来表示。因此,如果以之前的 first.java 为例,我们可以首先进入它所在的路径,然后输入如下编译命令。

javac -d . first.java

运行上述命令后,会在该路径下生成一个编译后的文件 first.class

运行Java程序

java <main_class_name> # <main_class_name> 表示 Java 程序中的类名

java 命令后的参数应是 Java 程序的主类名(即 main() 方法所在的类),它既不是字节码文件的文件名,也不是 Java 源文件名。例如,我们可以在命令行终端中进入 first.class 所在的路径,输入如下命令。

java first

从 Java 11 开始新增了一个特性:启动单一文件的源代码程序。单一文件程序是指整个程序只有一个源码文件。这时在控制台中使用如下格式即可运行 Java 文件,从而省掉了编译环节。

注意:若之前使用 javac 编译生成了 .class 文件,则会执行失败。

java <Java 文件名>

以上面的 Java 文件 first.java 为例,在运行之前先不编译它,而是希望 Java 启动器能直接运行文件 first.java。此时只需要在控制台中进入到程序目录下,然后运行如下命令即可。

java first.java

高级语言有两种执行程序的方式,分别是编译型和解释型。

编译型语言
编译型语言会使用专门的编译器,针对特定平台(操作系统)将某种高级语言的源代码一次性“翻译”成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行程序的格式,这个转换过程称为编译(Compile)。编译完之后会生成一个可以脱离开发环境的可执行程序,它可以在很多特定的平台上独立运行。

有些程序编译结束后,还可能需要对其他编译好的目标代码进行链接,即需要组装两个以上的目标代码模块才能生成最终的可执行程序,通过这种方式实现低层次的代码复用。

因为编译型语言是一次性编译成机器码,所以可以脱离开发环境独立运行,而且通常运行效率较高。但因为编译型语言的程序被编译成特定平台上的机器码,所以编译生成的可执行程序通常无法移植到其他平台上运行。如果需要移植,则必须将源代码复制到特定平台上,针对特定平台进行修改,至少需要采用特定平台上的编译器重新编译。现有的 C 和 C++ 等高级语言都属于编译型语言。

解释型语言
解释型语言会使用专门的解释器将该语言的源程序逐行解释成特定平台的机器码并立即执行,解释型语言通常不会进行整体性的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。可以认为:每次执行解释型语言的程序都需要进行一次编译,因此解释型语言的程序运行效率通常较低,而且不能脱离解释器独立运行。但解释型语言有一个优势——跨平台比较容易,只需要提供特定平台的解释器,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令。解释型语言可以方便地实现源程序级的移植,但这是以牺牲程序执行效率为代价的。现有的 Ruby、Python 等语言都属于解释型语言。

Java 程序则要先编译、后运行

Java 语言比较特殊,由 Java 编写的程序必须经历编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是 *.class 文件,例如之前编译生成的 first.class 文件)。当然,这种字节码必须使用 Java 解释器来解释执行。正因为如此,我们可以认为 Java 既是一种编译型语言,也是一种解释型语言。

在 Java 语言中,负责解释执行字节码文件的是 Java 虚拟机(Java Virtual Machine,JVM)。所有平台上的 JVM 向编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。在一些虚拟机的实现中,还会将虚拟机代码转换成特定系统的机器码执行,从而提高执行效率。

Java 中的命名规则有很多,例如变量命名规则和类命名规则等。下面讲解的是 Java 源文件的命名规则。在编写 Java 程序时,源文件的名称不能随便起,需要遵循下面两条规则。

  • Java 源文件的后缀必须是 .java,不能是其他文件后缀名。
  • 一般来说,可以任意命名 Java 源文件,但是当 Java 程序代码中定义了一个 public 类时,该源文件的主文件名必须与该 public 类(也就是说,该类在定义中使用 public 关键字来修饰)的类名相同。由此可以得出一个结论:因为 Java 源文件的文件名必须与 public 类的类名相同,所以一个 Java 源文件里最多只能定义一个 public 类。

根据上述规则,我们可以得出命名程序文件的如下 3 个建议。

  • 一个 Java 源文件只定义一个类,不同的类使用不同的 Java 源文件定义。
  • 将每个 Java 源文件中单独定义的类都定义成 public。
  • 保持 Java 源文件的主文件名与该 Java 源文件中定义的 public 类同名。

Java 程序里的关键字全部是小写的,无需大写任何字母

main() 方法的问题

如果需要用 Java 解释器直接运行一个 Java 类,则这个 Java 类必须包含 main() 方法。在 Java 中必须使用 public 和 static 来修饰 main(),并且必须使用 void 来声明 main() 方法,而且 main() 方法的形参只能是一个字符串数组,而不能是其他形式的参数。对于 main() 方法来说,修饰它的修饰符 public 和 static 的位置可以互换,但其他部分则是固定的。

在定义 main() 方法时也需要注意大小写的问题,如果不小心把方法名的首字母写成了大写,编译时不会出现任何问题,但运行时将引发错误,因为找不到 main() 方法。

空格问题是初学者很容易犯的一个错误, Windows 系统中的很多路径都包含空格,例如 C 盘中的 Program Files,而这个文件夹恰好是 JDK 的默认安装路径。如果 CLASSPATH 环境变量包含的路径中含有空格,则可能会引发错误。所以推荐大家在安装 JDK 和 Java 相关程序/工具时,不要安装在包含空格的路径里,否则可能引发错误。

对于很多初学者来说,对 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 程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值