Java开发笔记(二)Java工程的帝国区划
上一篇文章介绍了如何运行了第一个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工程的帝国区划的更多相关文章
- Java学习笔记二:Java开发工具Eclipse的安装与使用
Java开发工具Eclipse的安装与使用 正如office一样我们在开发java语言过程中同样需要依款不错的开发工具,目前市场上的IDE很多,这里只演示Eclipse的安装: 一:下载软件: 1.下 ...
- Java开发笔记(一百零二)信号量的请求与释放
前面介绍了同步与加锁两种并发处理机制,虽然加锁比起同步要灵活一些,但是加锁在某些高级场合依然力有未逮,包括但不限于下列几点:1.某块代码被加锁之后,对其它线程而言就处于繁忙状态,缺乏弹性的阈值范围:2 ...
- Java开发笔记(一百二十五)AWT图像加工
前面介绍了如何使用画笔工具Graphics绘制各种图案,然而Graphics并不完美,它的遗憾之处包括但不限于:1.不能设置背景颜色:2.虽然提供了平移功能,却未提供旋转功能与缩放功能:3.只能在控件 ...
- Java开发笔记(八十二)注解的基本单元——元注解
Java的注解非但是一种标记,还是一种特殊的类型,并且拥有专门的类型定义.前面介绍的五种内置注解,都可以找到对应的类型定义代码,例如查看注解@Override的源码,发现它的代码定义是下面这样的: @ ...
- Java开发笔记(三)Java帝国的特种官吏
上一篇文章介绍了Java工程的帝国区划,末尾给出了一段Java代码例子,这个代码虽然勉强能看懂,但是有些细节令人不甚了了.比如说“// 参观朱雀台”为何能够直接跟在当前行后面?“System.out. ...
- Java开发笔记(二十三)数组工具Arrays
数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...
- Java开发笔记(二十四)方法的组成形式
经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是 ...
- Java开发笔记(二十五)方法的输入参数
前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定 ...
- Java开发笔记(二十六)方法的输出参数
前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...
- Java开发笔记(二十七)数值包装类型
方法的出现缘起优化代码结构,但它的意义并不局限于此,正因为有了方法定义,编程语言才更像一门能解决实际问题的工具,而不仅仅是只能用于加减乘除的计算器.在数学的发展过程中,为了表示四则运算,人们创造了加减 ...
随机推荐
- typeScript 学习
最近看了下typescript, 虽然说已经有很多人已经用到它了,但是我还是写写自己的feel咯:这里推荐学习链接 https://ts.xcatliu.com. 这个入门学习,我不好做评价,但是我自 ...
- Android图标
在线生成安卓App图标.IOS App图标 https://icon.wuruihong.com
- Hadoop 集群安装(从节点安装配置)
1.Java环境配置 view plain copy sudo mv /tmp/java /opt/ jdk安装完配置环境变量,编辑/etc/profile: view plain copy sudo ...
- Spring Cloud 微服务架构全链路实践
阅读目录: 1. 网关请求流程 2. Eureka 服务治理 3. Config 配置中心 4. Hystrix 监控 5. 服务调用链路 6. ELK 日志链路 7. 统一格式返回 Java 微服务 ...
- 【RL-TCPnet网络教程】第20章 RL-TCPnet之BSD Socket客户端
第20章 RL-TCPnet之BSD Socket客户端 本章节为大家讲解RL-TCPnet的BSD Socket,学习本章节前,务必要优先学习第18章的Socket基础知识.有了这些基础知 ...
- [Swift]LeetCode198. 打家劫舍 | House Robber
You are a professional robber planning to rob houses along a street. Each house has a certain amount ...
- [Swift]LeetCode279. 完全平方数 | Perfect Squares
Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...
- [Swift]LeetCode288. 唯一单词缩写 $ Unique Word Abbreviation
An abbreviation of a word follows the form <first letter><number><last letter>. Be ...
- [Swift]LeetCode924.尽量减少恶意软件的传播 | Minimize Malware Spread
In a network of nodes, each node i is directly connected to another node j if and only if graph[i][j ...
- Java面试题中的Redis大合集,所有你想找的都在这里!
概述 Redis 是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.``` Redis 支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hyperl ...