课时6: Java 编程起步
摘要:本次分享的主题是 Java 编程起步,主讲人是李兴华。
几乎所有语言的第一个程序都是“ Hello World ”。因为最初 C 语言出场比较早,同学们编写的第一个程序就是“你好,世界!”,就好比就是说我诞生了这个世界,所以从此之后就把这个起步程序都叫 Hello World 。
之后怎么去编写这个程序呢如果要定义 Java 程序的话肯定要通过记事本来进行编写。所有 Java 程序的后缀,都是*. java 程序。建立一个目录保存所有的程序源代码。比如说在 D 盘上,新建一个文件夹叫做 M2DN _ Java 。随后建立 Hello . java 源程序。新建一个文件,管它叫做 Hello . java 。文件建议大家用 editplus 编写。要么用纯记事本,要么用 editplus 。
这里面牵扯到一个文件编码问题。有个工具叫 Sublime Text ,用这个工具的话好用,但是编码会出现严重问题,所以现阶段如果用记事本的话,不建议大家用其他工具, editplus 至少稳定没问题,跟 Windows 很匹配。
定义第一个程序代码。跟上 public class ,找到一个叫做 Hello ,static void main ,再跟上 String[] args 。现在这个信息写完之后,中括号放前放后都一样,再跟上 System . out . println ,在这随便打印 Hello World ,这样就实现了第一个程序的编写。
需要注意的问题是第一个程序编写之后程序代码是什么?它是不是指一个源代码程序? Java 程序是需要经过两次处理后才可以正常执行的。
首先第一个叫对源代码程序进行编译,找到 D 盘 cd mldnjav,
发现这有叫 Hello.java ,执行
javac Hello
.
java
执行,现在这个地方表示对程序编译,编译之后出现 Hello . class 。这个时候出现叫做 Hello . class 的字节码文件,这就是属于编译后的程序文件。相当于利用 JVM 进行的编译,编译出一套与平台无关的字节码文件,文件就是 Hello . class 。
第二个过程,在 JVM 上进行程序的解释执行。在这个代码编写 java 只能是 Hello ,现在的程序没有加后缀,解释的是字节码文件。字节码文件的后缀是不需要编写的。比如说编译的时候在这给了一个后缀,但是在程序执行的时候并没有这样的后缀。在这样的情况下程序就算完成,完成之后执行看结果,正常成功了。所以这样就完成了一个程序的编写。
第一个写程序的时候最要做的事情是把第一个程序编译出来。这里面牵扯到很多问题,我当时用的是记事本,第一次写代码存在没大写、多加了东西,导致程序混乱。所以说第一个程序编写如果很熟练那就好,不熟练就多练几次。现在对第一个程序进行解释。为了更加方便的理解 java 程序的主要结构,下面针对于第一个程序进行完整的解释。
首先在 java 的程序开发中,最基础的单元是类,所有的程序都必须封装在类中执行。类的基本定义语法如下,在正常编写程序代码的时候习惯于把可选部分加上中括号来描述 public 。再跟上 class ,中间跟上其他东西。这就是类的基本定义,也就是说在本程序之中定义的类名称为 Hello 。类的定义有两种形式,一种叫做 public class 名称,第二种叫做 class 类名称。这两种方式有什么区别呢?
这个地方现在用的是 public class 定义的 hello ,文件名称叫 hello . java 。先把 hello . class 删掉, DEL *. class 也能删。现在改成叫 hello world 。 hello world 跟现在的 hello 名称一样吗?比如说我的文件名称是 hello . java
两个不一样。这个时候再次做编译 javac hello . java
,回车出现一个错误:类 hello world 是公共的,应该在名为 hello world .java 的文件中声明。
public class 定义一个类要求类名称必须跟文件名称保持一致,如果不一致就错了。
证明如果现在用的是 public class 定义一个类要求类名称必须跟文件名称保持一致,如果不一致就错了。
如果现在没有用 public class ,而用的是 class ,在这种情况下文件名称现在还是 。 hello . java 只有一个源代码文件,那么现在直接执行 javac hello . java 回车编译,编译之后再 DL 查一下,现在通过定义能够发现类名称可与文件名称不一致,但是编译后的*. class 的名称是 class 定义的类名称。
解析的时候是解析 hello 还是 hello world 呢?解析的时候要求解析生成的*. class 的文件名称。现在 java 执行 hello world 执行,回车,成功了。所以说这个叫做名称定义。 class a 跟上 class b 再找到 class c ,现在在一个文件里定义了多个 class 。先清除一下 DL *.class
。
Javac hello.java
执行,编译了 DAR 。发现在一个*. java 文件里面可以有多个 class 定义并且编译之后会形成不同的*. class 的文件。一个*. java 中能有多个 class 定义,但一个*. java 中能有一个 public class 定义。这就是两者的主要区别。
在进行项目开发的时候很少会出现一个新点。 Java 的源代码里面定义有多个 class 的情况很少会出现,所以对于大家而言,对于以后的开发而言,一个*. java 文件里面定义一个 public class 就够了。但是在整个课程讲解里面如果定义了多个文件,会产生混乱。所以初期会在一个*. java 文件中定义多个类方便学习。
第二个操作处理过程, Java 语言有着明确的命名要求,定义类名称的时候要求每一个单词的首字母必须大写。例如 Hello world 跟上一个叫做 test demo 等,才算是标准。在定义类名称的时候不要用小写字母开头,这是错误的。
第二个过程主方法。主方法是所有程序执行的起点并且一定要定义在类中。
看一下 java 的主方法定义,主方法一般要在这写 Public static void main , string args ,再次强调中括号可前可后。
之后写:程序的代码由此开始执行,这就是主方法。主方法很长,在初期学习的时候代码基本上都是由主方法开始的。 Java 的主方法名称定义非常长,一开始的时候不建议用开发工具写代码。如果长期用开发工具,主方法不写,在不熟练的情况下代码写不出来。
这与 Java 最初的发展环境有关。 Java 最初发展的时候很多人不注意基本功,直接商业应用导致这样的问题。所以说主方法名称很长,当然具体的解释在后续会有所说明。在以后课程讲解的过程里面,主方法所在的位置统一将其称为“主类”。所有的主位都将采用 public class 定义,相当于自己先做个约定,这样代码写起来更方便。
主位就表示起点。什么叫起点?去吃饭关注的是饭怎么端到面前开始吃,而不关注饭是怎么做出来的,这就叫客户端操作,后面再慢慢深化。
第三个问题叫屏幕打印,也叫系统输出。屏幕打印是可以直接在命令行方式下进行内容的显示,有两类语法形式,第一种是输出之后追加换行: system . out println (输出内容)。第二个种叫输出之后不追加换行。把 LN 去掉, system . out print, LN 表示 line ,意思就是换行。
比如在这写三组 hello world ,因为主方法所在的位置叫主位,主位一般情况下都是 public class 的声明。
Java 的执行是 java hello 回车,都有换行。输出之后没有换行,紧接着输出 word 再加换行再输出。这个时候再来看一下编译执行,结构一样。这就是输出后再换行的处理过程。对于输出语法在后面还会对其做进一步的说明,因为这个地方不是单纯的把它输出。
现阶段先记住两个输出指令以及主方法定义结构是我们在第一个程序编写之后应该记住的基础语法。所有的程序都通过主方法开始执行,主方法是起点,主方法所在的位置,一般会把它叫做主类。