通俗Java教程:让对编程完全0基础的人学会做一个“Hello world”程序

- 发布于 教程 来自 - Permalink

这篇教程的主要目的是测试HTMLy的功能。

这篇教程旨在教会一个对编程完全0基础的人怎么用java做一个显示Hello world的程序,并且让他理解这个程序工作的原理。其实“完全0基础”这个表述有点不准确,因为它有一个小前提,那就是编程的人首先得知道操作系统的基本用法,比如第一步——创建文件。

创建文件

写java程序之前首先要理解java里的一些关键术语。

首先是“对象”。在java的概念里所有事物全是对象,意思就是:你周围看得见摸得着的东西都是对象,那点虚无缥缈的东西,比如谁的声音和你脑子里边的想法或者那点奇怪的xp也都是对象。 还有一个是“类”。类也属于对象的范畴,用白话来说,类就是一个可以装好多别的东西的东西,比如你可以往里边塞一个整数,一个小数,也可以是一段代码或者别的类。后来你还会接触到好多术语,我边教边解释。

要想写程序,首先要有一个文件放你写的代码,你可以用文件管理器创建一个后缀是.java的文件,比如下边的图创建了一个叫A.java的文件。

enter image description here

Windows系统好像默认不显示后缀,比如新建文本文档时会在文件名输入框里显示“新建文本文档”而不是“新建文本文档.txt”,出现这种情况需要先配置一下文件管理器,具体操作可以自己摸索或者百度直接搜“怎么显示文件后缀”。

写主类代码

用你用着最顺手的文本编辑器(Windows自带的“记事本”对于完全0基础的初学者足够了)打开刚才创建的文件。在java里一个.java文件对应着一个类,这个类的名字(包括大小写)必须和它代码所在的文件的名字一样。

第一行代码是用来声明这个类的,“声明”的意思可以理解为“创建一个新东西”。 代码的第一行为:

public class A

其中public是用来修饰可见性的:我们想让这个类在任何情况下都能被访问到。可见性决定你在什么样的情况下能看见或者用到一个东西,它有4种类型:public,不写,protected,private,被修饰的对象的可用范围依次减小。java里管public这类的能改变对象某些属性的修饰词叫做“关键字”。

class指的是要声明的的对象的类型:我们想要搞一个类(class)出来,所以把类型写成class。

之后我们写一对大括号,大括号括住的东西都属于这个类,我们后来的所有代码都要写在这对大括号里。 综上所述,类的声明语句通常写作:

关键字 class 类名
{
 代码
}

enter image description here

写main函数

接下来我们要声明一个叫“main”的函数。在java里函数指的是一段“打包好了的,可以随时用,还可能会返回什么东西”的代码,它里边的代码可以通过在程序别处的代码里写上函数的名字加一个调用符(一对半角括号,括号里边可能有参数)来执行,比如:

pop();
svr.getPlayerList().getPlayerByName("MCUmbrella");
add(ax, 20000);
new TaskManager().runAsyncTask(new Thread("Task 1"){@Override public void run(){ax*=ax;}});

main函数的声明语句为:

public static void main(String[] args)

static也是一个关键字,指的是这个函数是一个“静态对象”(函数在java里跟类一样,也属于一种对象),我们暂且可以把被它修饰的对象理解为“从代码被编译的时候就存在,到程序停止才消失,可以被其它对象共享”的。

函数的声明跟刚才类的声明差不多,但是多了一个必须有的关键字:返回值的类型。其中void就是返回值的类型,它代表“这个函数不返回任何东西”。函数真的不用返回任何东西的话也不能不写返回值类型,需要把void放在原本该放返回值类型的位置。

main后边的(String[] args)是参数列表,代表这个函数在调用的时候要接受什么东西。String[] args表示main函数接受一个字符串数组,并且管它叫args。

声明语句后边又是一对大括号,它也可以被叫做“函数体”,后来输出“Hello world”的代码必须写在它里边。 综上所述,函数的声明语句通常写作:

关键字 返回值类型 函数名(参数列表)
{
 代码
}

enter image description here

在main函数里写代码

由于这个程序只有一个功能:输出“Hello world”,所以函数体里边的代码也只有一行:

System.out.println("Hello world!");

其中System是java自带的一个类,在任何java程序的代码里都共用。

out是System类里边的一个PrintStream类型的常量。怎么看出来它是常量而不是类的呢?有一个主要原因是它的首字母没大写。写java代码的一个约定俗成的规矩是类的名字首字母是大写的,函数、变量和其它对象的名字首字母是小写的。另外你翻翻java语言的源码也可以发现out在System这个类里边的声明语句是这样的:

public static final PrintStream out;

其中“final”是一个关键字,它代表要把out声明成常量而不是变量。所以out的声明就在向我们表示:它是一个类型为PrintStream的,任何地方都可以访问的静态常量。

println是PrintStream类的一个函数。由于out是PrintStream类型的,所以我们可以通过out来调用println。这个函数里边有一个参数:“ "Hello world!" ”,它就是程序要输出的信息。

"Hello world!"是一个字符串。字符串是java里用的最多的对象类型之一,字符串被表示为一对半角双引号(""),里边可能有字也有可能没字。

下边举几个字符串的例子:

这些是字符串:"Hello""HELL O""1.428571""""浙江温州"" "

这些不是字符串:Hello'HELL O',"I said "hello" and then...","^o^/"。后边两个不行是因为它里边有在字符串里有某些特殊含义的字符(“ `"` ” 和 “ ”)。

不要忘了在函数调用语句的最后加一个半角分号,这是人们经常忽视的一个问题。任何语句(除了带大括号的,比如声明类和函数以及条件控制)末尾都要写一个分号来代表这个语句结束。

下边的图就是典型的Hello world程序的java实现。检查完代码之后记得保存文件。 enter image description here

把代码编译成class文件

打开终端模拟器(Windows管它叫“命令提示符”或者powershell),进入这个文件所在的文件夹。怎么打开终端取决于操作系统的设定。

用Windows的话可以同时摁键盘上的Windows标志键和R键,在屏幕左下角弹出的窗口里边输“cmd”或者“powershell”,再摁回车(Enter键)。进行完一番操作之后屏幕上会弹出一个黑底白字的窗口或者蓝底白字的窗口,那个东西就是终端模拟器。

打开终端模拟器之后,你工作路径在默认情况下应该是你用户的主目录而不是代码文件所在的文件夹,这时候就需要手动改变工作路径。在终端里输“cd”,摁一下空格,再输文件所在的目录,最后摁回车就可以。有点文件管理器可以直接从它上边的路径栏复制完整的路径,这样就能把路径直接粘贴进终端了。值得注意是是,如果你放代码的文件夹名字有空格,或者那个文件夹上层的任何文件夹的名字里有空格,就必须用半角双引号把路径包起来。

切换工作路径的命令看起来像这样:

cd c:/codes

cd "c:/my codes"

cd /mnt/project/test

终端里边那个闪烁的方块左边的一串字能提示你现在工作路径在哪。

如果文件名是“A.java”,检查好工作工作路径之后输“javac A.java”就能编译代码了。如果终端说“找不到javac”之类的话,有可能是你的系统没装java,也有可能是你的系统只装了java的运行时环境而没有装它的编译环境(java运行时环境简称“jre”,编译环境简称“jdk”,jdk包括运行时)。下载jdk可以去https://adoptium.net/releases.html,选择带jdk字样的下载(Windows最好选msi格式的安装包),还可以去https://www.oracle.com/java/technologies/downloads/。一定要记住一点:关键时刻可以百度!

输完刚才的命令之后没有任何输出,只是另起一行,这就代表编译通过了。 enter image description here

运行java程序

继续在终端输“java A”。(注意这次是“java”而不是“javac”)

刚才如果编译“A.java”通过了,工作目录下就会多出一个叫“A.class”的文件,这个就是编译好的java程序。java会检查工作路径下有没有“A.class”这个文件,如果把A换成B那么它就会去检查有没有B.class这个文件。 enter image description here 如果终端输出了“Hello world!”,那么恭喜你,你成功用java写了一个Hello world程序并且让它成功运行了!当然了如果你真打算学java的话,那么只会做这样一个程序可是连掌握java基础都不算的,后边还有好多编程知识需要你学习和掌握,甚至还有一些经验是java代码写多了才能自己总结出来的,什么教程都不能很好地解释清楚。

后记:关于代码格式

没接触过编程的人可能会从教程的几张截图里自己总结出“大括号必须单独一行,不同层的大括号必须错开4个字母”之类的结论,其实这都是不对的,我这样写代码只是为了好看,这样的做法叫有个专业术语叫“缩进”,某些公司也会强制要求程序员按照公司制定的缩进规范把代码写得工整的。说到底,java程序的编译器根本不在乎你的大括号放在哪之类的问题,它只关注你的代码有没有缺关键字啊或者少分号啊那一类的问题。

如果你想的话,可以把整个程序的代码浓缩进单独一行:

public class A{public static void main(String args[]){System.out.println("Hello world!");}}

你还可以把main函数拆散架了写:

public

     static

    void       main(

    String   args[]

           ){

    System.

    out.println(


                  "Hello world!"


    )

    ;
}

这么着干,到头来编译器屁事儿没有,倒是你自个给自个整蒙了,所以保持代码格式工整是有必要的。