程序不过是几行代码的集合。就像下面这样:

public class Test {

public static void main(String[] args) {
System.out.println("hello world");
} }

对于初学编程的人来说,“hello world”总是绕不开的;学习 Java 编程自然不能例外。说实在话,我在大学一年级学习这寥寥几行代码时可费了老大的劲——几乎用了将近一个月的时间才消化掉这段程序(这可一点不假)。

记得老师非常“严苛”地要求我们必须在记事本上敲这段代码,不能在 IDE 中;并且要能在命令行中成功运行,打印出“hello world”。

简直难得要命啊!我差一点就要被这几行代码摧毁掉信心,换其他专业了。但幸好我没有。就目前来看,IT 行业仍然是一个前程似锦的行业,Java 依然处在编程语言排行榜的领先位置;而我,可以凭借 Java 高级开发工程师的职称在日益艰难的生存环境中混口饭吃。

对于“hello world”这段断码,我曾经有 3 个不解的地方:

  • 为什么 class 前面要有 public?
  • 为什么 main 方法要有参数 String[] args?它好像压根没起作用啊。
  • 为什么 main 方法必须是 static void

看到这 3 个问题,你是不是也迫切地想知道为什么?

新文化运动领袖胡适先生曾说过这样一句话:“人同畜生的分别,就在于这个‘为什么’上”,这话虽然听起来不那么含蓄,但不失为一种积极的态度。在学习和生活当中,多问一问“为什么”,对我们的成长有天大的帮助。我相信这一点,你也愿意举双手赞同。

经过多年的历练后,现在的我可以来回答一下这 3 个问题了(假如答案不能使你满意的话,请打零分):

1)class(类)前面的 public 并不是必须的;一个 Java 文件中有且只能有一个 public 类,并且该类名(Test)必须与文件名(Test.java)保持一致。

2)main 方法的参数是一个 String 数组,约定俗成的写法就是String[] args;尽管当前“hello world”程序中并没有用到 args 参数,但 Java 编译器要求 main 方法必须要这么着(就好像李白他爹给他起名“李白”,所以李白只能叫“李白”)。

如果想在程序中使用 args 参数,可以在运行 Java 程序的时候在命令行中键入。为了演示 args 参数的使用方法,我们把以上代码稍作调整:

public class Test {

public static void main(String[] args) {
System.out.println("hello world " + args[0]);
} }

改造后的“hello world”程序,在命令行的编译、运行命令如下:

3)static表示 main 方法为静态方法;静态方法可通过"类名.方法名"的方式来调用。这句话怎么理解呢?我们来看以下代码:

public class Test {
static int i = 0; public static void main(String[] args) {
System.out.println("hello world");
i++; if (i < 5) {
Test.main(args); }
}
}

通常,方法内部调用方法自身(Test.main(args) 就是"类名.方法名"的形式)会造成死循环,但我们使用了一个静态变量 i 来控制循环的次数,最多 5 次。

4)void表示 main 方法没有返回结果;既然 main 方法是主方法,作为程序的入口,自然是不需要返回结果的,否则返回结果给谁看呢?就好像你就是司令员,显然不需要再向军长、师长汇报工作。

看完以上内容,你是不是觉得信息量有点大?对于 Java 初学者来说,我想大概会吧,毕竟我当初可花了一个月的时间才消化掉。如果你说你只花了 5 分钟就搞定了,我就真该怀疑自己是不是块干“程序猿”的料了。

但我和我的老师不一样,我不建议你使用记事本一个字母一个字母敲完这段程序并在命令行中运行——明明有 Eclipse 这种为程序员减少复杂性的集成开发工具,为什么不用呢?

脑海中时常有“程序不过是几行代码的集合”这句话非常重要,有了这个信念,无论再庞大的项目都不需要怕了。因为不管这个项目的代码成千行,还是成万行,最终都可以拆分为几行代码,难道不是吗?

上一篇:对《Java编程思想》读者的一点建议

下一篇:Java:程序不过是几行代码的集合

Java:程序不过是几行代码的集合的更多相关文章

  1. jstack命令定位java程序CPU利用率高的代码位置

    高手是怎么使用jstack精确找到异常代码的(java程序CPU利用率高的情况) 请jstack神器来帮忙 本文介绍Linux环境下使用jstack定位问题的秘笈1.[top命令]找到CPU利用率持续 ...

  2. Java程序:从命令行接收多个数字,求和并输出结果

    一.设计思想:由于命令行接收的是字符串类型,因此应先将字符串类型转化为整型或其他字符型,然后利用for循环求和并输出结果 二.程序流程图: 三.源程序代码:   //王荣荣 2016/9/23     ...

  3. 基于Java和Bytemd用120行代码实现一个桌面版Markdown编辑器

    前提 某一天点开掘金的写作界面的时候,发现了内置Markdown编辑器有一个Github的图标,点进去就是一个开源的Markdown编辑器项目bytemd(https://github.com/byt ...

  4. uni微信小程序优化,几行代码就能省100kb的主包空间?

    不是标题党,我们公司的项目确确实实是省下了100kb的主包空间,而且还是在没有牺牲任何的性能和业务的前提下实现的. 但是100kb是根据项目大小,所以你用这个插件可能省下超过100kb或者更少. 直接 ...

  5. memset,memcpy,memmove,strcpy,strcat,strcmp的实现(其实很简单,每个程序都只有几行代码)

    面试中的几个小问题 1.对stl中list封装(参考1): 2.对重要C函数实现(参考2): //memset void *memset(void *buffer, int c, int count) ...

  6. 改善java程序的151个建议--数组和集合

    60.性能考虑,数组是首选,在基本类型处理方面.数组还是占优势的,并且集合类的底层也都是通过数组实现.建议在性能要求较高的场景中使用数组替代集合. 61.假设有必要.使用变长数组:我们能够通过对数组扩 ...

  7. 编写Java程序,使用List集合和Map集合输出 市和区

    如图: 代码: import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java ...

  8. 【Python】Java程序员学习Python(九)— 集合(list、tuple、range)和映射(dict)

    集合是一门语言最重要的一个特性,对集合支持的程度越好,使用起来越方便 一.表现形式 1.1 list list的基本用法: 使用中括号包裹,[1,2,3] 元素类型可以是任意类型,同样可以是list ...

  9. 使用 Visual Studio Code 运行 C# 及 Java 程序

    背景 很多情况下,我只是想要编写一个非常简单的 C# 或者 Java 程序,只有几行代码,看看运行结果而已.虽说 Visual Studio / Eclipse / IntelliJ IDEA 功能强 ...

随机推荐

  1. 小米开源数据库<pegasus>简介

    数据模型 组合键:Table + HashKey + SortKey Table实现业务数据的隔离 HashKey决定数据在那个分片 SortKey决定数据在分片内的排序 一致性协议 使用Pacifi ...

  2. SpringBoot电商项目实战 — ElasticSearch接入实现

    如今在一些中大型网站中,搜索引擎已是必不可少的内容了.首先我们看看搜索引擎到底是什么呢?搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术.搜索引擎依托于 ...

  3. HttpRunner学习4--使用正则表达式提取数据

    前言 在HttpRunner中,我们可通过extract提取数据,当响应结果为 JSON 结构,可使用 content 结合 . 运算符的方式,如 content.code,用起来十分方便,但如果响应 ...

  4. 使用node+express+mongodb实现用户注册、登录和验证功能

    无论是手机端还是pc端,几乎都包含登录注册方面功能,今天就使用node+express+mongodb实现一套登录注册功能,这里需要自己去安装MongoDB环境,如果没有安装可以看这篇关于MongoD ...

  5. 使用Power BI API 向流数据集推送实时数据并在仪表板可视化

    使用Power BI 实现实时数据的可视化是大家比较关心的一个话题,在仪表盘上实现推送数据的展示,可以在诸如指挥大屏等场景下使用. 本视频实战内容如下: https://v.qq.com/x/page ...

  6. IDEA中使用Maven模板创建Maven WebApp项目并使用Tomact来运行项目

    首先需要正确安装Maven和Tomact,Maven安装和Tomact安装步骤,参见别的文章. 一.创建Maven工作空间 点击Finish按钮后,耐心等待.直到出现BUILD SUCCESS为止. ...

  7. Comet OJ - Contest #11 B题 usiness

    ###题目链接### 题目大意:一开始手上有 0 个节点,有 n 天抉择,m 种方案,在每天中可以选择任意种方案.任意次地花费 x 个节点(手上的节点数不能为负),使得在 n 天结束后,获得 y 个节 ...

  8. python通过http下载文件的方法

    1.通过requests.get方法 r = requests.get("http://200.20.3.20:8080/job/Compile/job/aaa/496/artifact/b ...

  9. 自己封装Linux命令行万能解压命令

    问题背景 Linux下经常需要解压文件,直接在命令行敲命令解压是最便捷的. 但问题在于,不同的压缩格式,需要用不同命令和不同参数,完全记不住啊. 解决方式 既然记不住,那就换一种思路,假如有一条命令能 ...

  10. Shell命令的执行优先级

    Shell内置命令.外部命令.别名.函数.保留关键字的优先级 在Shell中,有5种可调用的东西:别名(alias).函数(function).shell保留关键字.shell内置命令.外部命令. 如 ...