上一篇文章介绍了如何运行了第一个Java程序“Hello World”。然而这个开发环境看起来那么陌生,一个个名字符号完全不知道它们是干啥的呀,对于初学者来说,好比天书一般,多看几眼感觉都要走火入魔了。因此接下来还是好好分析一下Java工程的总体结构,理清这些文字符号的来龙去脉才好。
话说宇宙原本一片混沌,分不清天南地北,多亏了盘古开天辟地,轻且清的物质上浮成为天空,重且浊的物质下沉变做地壳,于是才有了一个万物生长的星球。那在Java世界当中,这个星球便是工作空间,每次打开Eclipse,都会弹出启动窗口Launcher,如下图所示。

可见该窗口仅仅指定工作空间Workspace的目录路径,单击Launch按钮即可进入Eclipse的主界面。工作空间指定了一块硬盘区域,空间里的所有文件都位于该区域内部,犹如山川河流纵横于星球内。在这日月争辉的星球上,飞鸟走兽你追我跑,可是一片莽荒产生不了什么价值,还得进行开发才行。程序员作为这个星球的创造者,自然需要负责开疆拓土和建立秩序,接下来的事情就是创建国家机器了,对应到Java开发则叫做创建Java工程,每个工程都能单独运行,恰如每个国家都能单独发展一样。在Eclipse的顶部菜单栏依次选择“File”→“New”→“Project”,会弹出如下所示的项目创建窗口。

在该窗口选中“Java Project”,然后单击窗口底部的Next按钮,跳到下一个窗口页,如下图所示。

在该页面的“Project name”输入框中填写项目名称(可以理解为国家名称)。注意到输入框下方的Location目录,这便是Java工程所处的工作空间,就像这个国家位于哪个星球之上。再下面的JRE区域,可以选择不同的Java版本,版本号越大的表示版本越新越高级,好比一个国家有不同的社会发展阶段,有原始社会、奴隶社会、封建社会、资本主义社会等等,Java版本也在不断地更新换代,版本越高表示技术越进步。确认完工作空间和Java版本,接着单击窗口下方Finish按钮,完成项目创建操作。

一个国家毕竟太大了,还得划分行政区划,分而治之才管得过来,所以Java工程也要层层划分,划分后的组织机构称作“包”package。说是“包”,其实更像“树”,犹如树干到树枝到树叶这般开枝散叶。最顶层的组织,是这个国家的国体,有叫帝国com的,有叫王国net的,有叫邦国org的,还有叫书院edu的,甚是热闹。常见的Java工程,一般来自帝国时代,因此包名开头通常是com。国家政权下面,又有郡县制,抑或是省市制,总之要再分几级,故而com下面还会有xxx.xxx.xxx之类。譬如曹操是沛国谯县人,那他在东汉帝国这个Java工程里的位置是com.donghan.peiguo.qiaoxian;刘备是涿郡涿县人,那他的位置是com.donghan.zhuojun.zhuoxian;孙权是吴郡富春人,他的位置便是com.donghan.wujun.fuchun,依此类推。
有了包这种组织架构,现在可以往里面填充真材实料了,在一县土地之上,既有官府建造的城池,也有农民聚居的村落,每个聚集地都如同一个Java的代码文件。作为一座城池,首先要具备三要素,即:它归属哪个地区?它的名称是什么?它的范围有多大?一个合格的Java代码文件就要在文件内容中清楚地写明上述三个要素。以“关羽败走麦城”的麦城为例,经查史料得知,麦城在东汉时归属南郡当阳县,那么它应当位于包com.donghan.nanjun.dangyang之下。展开Java示例工程的com.donghan.nanjun.dangyang,右击它并在右键菜单中依次选择“New”→“Class”,弹出Class文件的创建窗口如下图所示。

在窗口中部的Name输入框中填写城池名称“Maicheng”,然后单击窗口底部的Finish按钮,完成代码文件Maicheng的创建操作。自动生成的代码文件内容如下所示:

package com.donghan.nanjun.dangyang; // 东汉帝国南郡当阳县

public class Maicheng {
}

由以上代码可见,第一行指定了这个代码文件所处的包路径是com.donghan.nanjun.dangyang;第三行的Maicheng则表示麦城这座城池的名称,Maicheng前面的class表示城池类型;而Maicheng后面的左右花括号就是该城池的城墙了,凡是在花括号内部的代码,都属于该城池的管辖范围。

前面运行“Hello World”的时候,代码里面有个main方法,这个main方法好比城门,打开城门就能访问城里的人物了。城里有官衙、有市场、有民居,这些建筑都有围墙,也都能用花括号界定它们的区域范围。正所谓小城故事多,城里发生的事情,要一件一件记录下来,可不能弄混淆了。对每件事情、每个动作,Java代码也有相应的标点区分开来。古代每十里设置一长亭,每五里有一短亭,供行人何处,亲友远行常在此话别。这个分隔用的长亭,对应Java代码里面的冒号,而短亭则对应Java代码的逗号。有了逗号和冒号,Java代码讲起故事来方能井井有条、头头是道。
下面来个具体的Java代码例子,东汉建安九年(204年),曹操平定袁绍势力后,开始在魏郡邺县营建邺城,由此拉开了邺城作为六朝古都的序幕。邺城共有七个城门,其中正南门名叫凤阳门,城内建筑最有名的当数铜雀台,另有金虎台、冰井台与之齐名。现在给邺城创建对应的代码文件Yecheng.java,并把它放在魏郡邺县这个包下,也就是com.donghan.weijun.yexian这个package之下。游客从凤阳门这个main方法进入邺城,一路先后参观了铜雀台、金虎台和冰井台,游览路线是tongquetai→jinhutai→bingjingtai。这样便勾勒出Yecheng(邺城)这座城池的大概风貌了,详细的Java代码例子如下所示:

package com.donghan.weijun.yexian; // 东汉帝国魏郡邺县

public class Yecheng {

	public static void tongquetai() {
System.out.println("这里是铜雀台。");
} public static void jinhutai() {
System.out.println("这里是金虎台。");
} public static void bingjingtai() {
System.out.println("这里是冰井台。");
} public static void main(String[] args) {
System.out.println("欢迎来到魏国的都城——邺城。");
System.out.println("这里是邺城的正南门——凤阳门。");
tongquetai(); // 参观朱雀台
jinhutai(); // 参观金虎台
bingjingtai(); // 参观冰井台
}
}

接着在该代码文件内部右击,并在右键菜单中依次选择“Run As”→“Java Application”,表示运行这段Java代码。运行结果可以在界面下方的Console窗口中观察,如下图所示。

由此可见游客从凤阳门进入邺城,依次参观了铜雀台、金虎台、冰井台几个景点。看起来代码逻辑的主要意思都在了,细节上面可能有一些陌生的地方,不过不用担心,后面的文章将会逐步拨开迷雾。

Java开发笔记(二)Java工程的帝国区划的更多相关文章

  1. Java学习笔记二:Java开发工具Eclipse的安装与使用

    Java开发工具Eclipse的安装与使用 正如office一样我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,这里只演示Eclipse的安装: 一:下载软件: 1.下 ...

  2. Java开发笔记(一百零二)信号量的请求与释放

    前面介绍了同步与加锁两种并发处理机制,虽然加锁比起同步要灵活一些,但是加锁在某些高级场合依然力有未逮,包括但不限于下列几点:1.某块代码被加锁之后,对其它线程而言就处于繁忙状态,缺乏弹性的阈值范围:2 ...

  3. Java开发笔记(一百二十五)AWT图像加工

    前面介绍了如何使用画笔工具Graphics绘制各种图案,然而Graphics并不完美,它的遗憾之处包括但不限于:1.不能设置背景颜色:2.虽然提供了平移功能,却未提供旋转功能与缩放功能:3.只能在控件 ...

  4. Java开发笔记(八十二)注解的基本单元——元注解

    Java的注解非但是一种标记,还是一种特殊的类型,并且拥有专门的类型定义.前面介绍的五种内置注解,都可以找到对应的类型定义代码,例如查看注解@Override的源码,发现它的代码定义是下面这样的: @ ...

  5. Java开发笔记(三)Java帝国的特种官吏

    上一篇文章介绍了Java工程的帝国区划,末尾给出了一段Java代码例子,这个代码虽然勉强能看懂,但是有些细节令人不甚了了.比如说“// 参观朱雀台”为何能够直接跟在当前行后面?“System.out. ...

  6. Java开发笔记(二十三)数组工具Arrays

    数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...

  7. Java开发笔记(二十四)方法的组成形式

    经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是 ...

  8. Java开发笔记(二十五)方法的输入参数

    前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定 ...

  9. Java开发笔记(二十六)方法的输出参数

    前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...

  10. Java开发笔记(二十七)数值包装类型

    方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减 ...

随机推荐

  1. hashlib 模块

    import hashlib # ob = hashlib.md5() # ob.update("admin".encode("utf-8")) # print ...

  2. 删除 id 列表 存进数据库

    当图片写的传id的时候 用着方法存进数据库

  3. Oracle 函数 Function

    定义 函数用于计算和返回一个结果值,把经常需要进行的计算写成函数,函数的调用是表达式的一部分.     函数与过程在创建的形式上有些相似,也是编译后放在内存中供用户使用.     函数必须有一个返回值 ...

  4. Validator验证框架

    Validator验证框架 系统分析 在设计Validator验证框架时,需要明确以下问题. (1)当用户没有输入数据时,弹出英文提示信息. (2)当用户输入的数据长度大于系统设置的数据长度,弹出英文 ...

  5. 一次 HTTP 请求响应过程的完整解析

    因特网无疑是人类有史以来最伟大的设计,它互联了全球数亿台计算机.通讯设备,即便位于地球两端的用户也可在顷刻间完成通讯. 可以说『协议』是支撑这么一个庞大而复杂的系统有条不紊运作的核心,而所谓『协议』就 ...

  6. Jenkins(Docker容器内)使用宿主机的docker命令

    1.Jenkins镜像 Docker容器内的Jenkins使用容器外宿主机的Docker(即DooD,还有另外的情况就是DioD),google一下有几种说法,但是都没试成功(试过一种就是修改宿主机/ ...

  7. TensorFlow tf.gradients的用法详细解析以及具体例子

    tf.gradients 官方定义: tf.gradients( ys, xs, grad_ys=None, name='gradients', stop_gradients=None, ) Cons ...

  8. scala读取配置文件

    Class: package libparser import scala.collection.mutable import scala.util.matching.Regex class conf ...

  9. 【转】kali配置--修改IP和DNS

    修改IP地址 1 编辑文件 nano /etc/network/interfaces 2 在选择静态IP或DHCP,编辑文件内容并保存退出 (1)静态IP: ``` #Loop回环地址 auto lo ...

  10. redhat 6.5安装ansible

    安装epel 源: rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm 安装ansible ...