首页 > 编程知识 正文

Java 基础 —— Hello World

时间:2023-05-03 18:29:28 阅读:128292 作者:296

“Hello,world”程序是在计算机屏幕上输出字符串“Hello,world”的计算机程序,“Hello,world”的中文意思是“你好,世界”。 《The C Programming Language》用作第一个演示程序,非常有名,因此后续的编程人员在学习编程和调试设备时仍然保持了这一习惯。

文章目录Java源程序Hello World编译器可执行程序扩展HelloWorldPATH和CLASSPATH

Java源程序

也称为源代码,是按照一定的未编译编程语言规范编写的文本文件,是一系列人类可读的计算机语言指令。

在现代程序语言中,源代码可以以书籍和磁带的形式出现,但最常见的形式是文本文件,这种典型的形式旨在编译计算机程序。 计算机源代码的最终目的是将人类可读文本翻译成计算机可以执行的二进制指令。 这个过程称为编译,由编译器完成。

Hello World首先,让我们看看使用Java语言编写Hello World源程序的全貌。

公共类hello world { publicstaticvoidmain (string [ ] args ) system.out.println(Helloworld! ' ); }此源程序的代码非常少,但您可以获得以下信息:

用于限定public http://www.Sina.com/http://www.Sina.com/或http://www.Sina.com /的访问级别class 修饰符或库是HelloWorld类标识符的命名,通常HelloWorld类用public限定,必须在名为HelloWorld.java的文件中在类标识符后声明一对大括号或者类成员static关键字用于声明静态成员,其中关键字标识符命名main函数标识符通常为标识符用于定义的帕斯卡命名法main函数是Java程序的主要条目函数标识符之后的小括号对。实例成员一般在此括号中定义。 这些静态成员可用于在程序运行时接受外部输入http://www.Sina.com/string 3358 www.Sina.com /是http://www 定义用于定义的3358www静态函数,此数组的驼峰命令法是args此源程序的main函数的无返回值是Args )为3358www.Sings )函数一般在此大括号中定义。 包含大括号本身的大括号中所有代码的集合称为形式参数完整的函数成员,由函数签名和函数主体组成的System为形式参数包下的类out是System类的静态成员;这是实际参数printstream类的实例;println是out提供的实例成员;http://www. 在代码中调用函数时,成员名称必须在函数名称之后加一对小括号。 如果函数需要传递参数,则' Hello World!' 用双引号直接编写字符串,如,分号表示一行或一段代码的结尾。 作为初学者,可能有不太理解上述内容的部分,但即使不着急,随着学习的进行,这些也会慢慢被理解。 后面会详细叙述。

你在这个源程序中看到了什么样的信息? 请向评论区发送信息!

编译器可执行文件在与源程序相同的目录中运行以下命令,以编译当前创建的源程序

javac HelloWorld.java在编译结束时生成. class文件。 这是一个包含在《搭建本地软件开发环境》中的字节码文件,通过使用以下命令将该字节码文件解释并运行到计算机上:

在DOS中,java HelloWorld可以将多个命令写入一个命令,并按顺序执行。 《常用DOS命令》的文章中提到了这一点。

cls j

avac HelloWorld.java && java HelloWorld

当我们修改源程序中的字面量后,重新执行上述指令,会发现命令行打印了新的字面量信息。但如果字面量中包含中文的话,例如 "您好,世界!",就会乱七八糟的文字,这是因为 javac 指令在编译源程序的时候,默认的字符集不支持中文,我们需要为其指定支持中文的字符集,一般情况下,我们选择UTF-8字符集,修改编译指令如下:

javac -encoding UTF8 HelloWorld.java 拓展 HelloWorld

我们使用 java 指令执行 java 程序的时候,我们采用的指令是:java HelloWorld,我们在第二章节中搭建开发环境的时候说到过我们需要通过配置环境变量使得 java 指令能够在命令行中全局可用。这里的 java 指令实际上就是存在于 Window 操作系统磁盘上一个可执行的程序,也就是 JDK 中 psdst 目录下的 java.exe,如图所示:


到这里我们知道了,之前修改系统环境变量 Path 的值,将该目录加入其中的目的是为了系统能找到这个指令。这个道理就跟我们在某个目录下找到一个可执行程序,双击启动该程序的道理一样。

在指令 java HelloWorld 中,java 程序是系统来执行的,而 HelloWorld 则是系统在执行java 程序的时候我们传递给这个程序的参数。这就好比在第一章提到的 CD 指令一样,当我们给 CD 指令传递参数是 .. 的时候,系统在执行CD这个程序后,会将当前目录切换到上级目录;当我们给 CD 指令传递参数是 / 的时候,系统在执行CD这个程序后,会将当前目录切换到根目录 。话说回来,我们给 java 指令传递的参数是 HelloWorld,那 java 这个程序在执行过程中,会在当前目录和环境变量指定的 CLASSPATH 目录下查找 HelloWorld.class 文件,如果找到了该字节码文件,则通过 JVM 来解释并执行,如果依然找不到这个源程序,则会提示 错误: 找不到或无法加载主类 HelloWorld

注:关于 CLASSPATH 的详细说明请参考文末的 PATH 和 CLASSPATH 段落。

关于 JVM,百度百科上的描述是 —— 它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。那这个虚构的计算机在解释并执行 java 字节码的时候,能像 DOS 那样传递参数吗?

注:此图截自 2020年二月,仅作参考,因为百科上的内容可被编辑,故而,若您看到的说明不是此图上的内容,请以官方的为准。

DOS 在执行一个程序的时候,将程序名后面的文本看作是参数,那么,我们把 JVM 也看作是一个计算机操作系统的话,那大致可以这样理解:


换句话说,站在 DOS 的角度,传递了 HelloWorld 和 Hello 两个参数;而在 JVM 的角度,传递了Hello这一个参数。那既然我们传递了参数给 HelloWorld 程序,那 HelloWorld 程序如何接收到该参数,并作出相应的处理呢?

在上文中,我们看到 main 函数的形式参数 args 貌似都没有什么用处,实际上他就是为了接收外部传递的参数而存在的,关于形式参数的用法将会在后面分享函数的章节中详细为大家介绍。修改 HelloWorld.java 的代码如下:

public class HelloWorld {public static void main(String[] args) {System.out.println("您好,世界!");if(args == null || args.length < 1) {return;}for(int i = 0; i < args.length; i++) {System.out.println("得到第" + (i + 1) + "个形参的值:" + args[i]);}}}

然后我们在 DOS 终端中输入如下指令:

cls && javac -encoding UTF8 HelloWorld.java && java HelloWorld Hello World

得到的结果如下图所示:


在修改之后的源程序中,用到了后面章节才有的条件语句,循环结构等,如果初学者看不懂这部分,仅作了解即可。

PATH 和 CLASSPATH

PATH 是一个系统全局变量,其值表示的是该操作系统中可执行文件的搜索路径。使得在 DOS 中执行某个命令的时候不需要自己手动查找该命令所在的磁盘的具体位置。其值具体格式是:

<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

在上一个章节中,在 PATH 变量的值的后面增加了 %JAVA_HOME%psdst ,其目的是为了在 DOS 中执行 java 指令的时候,让系统能够到我们安装的 JDK 目录下进行查找。

所以,PATH 是 Windows 操作系统中可执行文件的搜索路径集合。
同理,CLASSPATH 是 JVM 可被解释并执行的字节码文件的搜索路径集合。

所以,当我们在 CLASSPATH 中配置了 HelloWorld 程序所在目录后,达到的效果是:即便 DOS 终端驻留的目录不是 HelloWorld 程序所在目录,也能通过 java HelloWorld 成功执行该程序。

JDK的内置库中包含了一些工具包,在 dt.jar 和 tools.jar 中,推荐的 CLASSPATH 配置是:

.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。