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

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

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:程序不过是几行代码的集合

原文地址:https://www.cnblogs.com/qing-gee/p/11776166.html

时间: 2024-11-05 19:38:05

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

写给在迷茫期的程序员(尤其是Java程序员)入行了一年,感觉不知道接下来该怎么做才能继续进步了,求指教

入行了一年,感觉不知道接下来该怎么做才能继续进步了,求指教(V2EX) @kafka0102 :做技术可以学的东西太多了,只是在不同的阶段做好不同的规划,要结合当前所做的事情去做更深入或广度的学习.以Java Web开发为例,至少可以拓展的点有: 1.Web框架的原理学习,比如Spring.Play等等,最好自己能写出个简易的MVC框架(几千行代码).这样至少对常用设计模式.反射等技术很熟练了. 2.优秀代码研读.比如Java集合类.JUnit.Spring等源码,写出源码分析,会有很多收获.源

9行代码体现集合框架中的一个小细节

String[] strs = {"string--01", "string--02", "string--03", "string--04"};List<String> strsList = Arrays.asList(strs);//以下语句输出:[string--01, string--02, string--03, string--04]System.out.println(strsList); int[]

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

高手是怎么使用jstack精确找到异常代码的(java程序CPU利用率高的情况) 请jstack神器来帮忙 本文介绍Linux环境下使用jstack定位问题的秘笈s1.[top命令]找到CPU利用率持续比较高的进程,获取[进程号],此处PID为 1289112891 s2.[ps p 12891 -L -o pcpu,pid,tid,time,tname,cmd 命令]找到上述进程中,CPU利用率比较高的[线程号TID](十进制数),此处为 12946ps p 12891 -L -o pcpu,

[Sqlite]--&gt;使用Java程序、cmd命令行来备份恢复Sqlite数据库

1,通过命令行使用.dump来备份成sql文件的方式 命令语句: C:/sqlite/sqlite3 tim.db .dump >test.sql .dump ?TABLE? ...      Dump the database in an SQL text format If TABLE specified, only dump tables matching LIKE pattern TABLE.执行效果如下图所示,可以看到备份的sql文件内容: 2,通过.read 语句来恢复数据库 命令语

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

60.性能考虑,数组是首选,在基本类型处理方面,数组还是占优势的,而且集合类的底层也都是通过数组实现,建议在性能要求较高的场景中使用数组替代集合. 61.如果有必要,使用变长数组:我们可以通过对数组扩容"婉转"地解决数组扩容问题,下面采用的是Arrays数组工具类的copyOf方法,产生了一个newLen长度的新数组,并把原有的值拷贝了进去,之后就可以对超长的元素进行赋值了 62.警惕数组的浅拷贝 Person[] p=new Person[5]; Person[] p2=Arrays

Java初学者:java是如何在命令行下编译运行程序的

我们上文书说到,我们首先安装Java,然后设置Java环境,然后编译运行了一个简单的Java程序,在命令行模式下显示了一个“Hello baby”.那么,为什么呢?发生了什么呢? 首先,下载安装Java就不用问为什么了对吧?所谓巧妇难为无米之炊,没有Java却想用,这不可能的. 其次,为什么我们要那样设置Java的运行环境呢? 因为,目前为止,我只是想在命令行下编译运行java程序,这样一来,你就需要让命令行模式识别java的命令.而命令行下能自动识别的命令,必须我们手动的把命令的路径添加进去.

Android Studio:Unable to add window [email&#160;protected] -- permission denied for this window 第一行代码

学习<第一行代码>的时候,出现的错误. java.lang.RuntimeException: Unable to start receiver com.example.sevenun.littledemo.receiver.ForceOfflineReceiver: android.view.WindowManager$BadTokenException: Unable to add window [email protected] -- permission denied for this

在cmd窗口下运行Java程序时无法找到主类的解决办法

我是Java的初学者,昨天在cmd窗口下运行一段Java程序时总是有问题,可以编译但无法执行. 也就是javac时正确,一旦java时就不对了,提示找不到或无法加载主类,经百度谷歌再加上自己的摸索终于解决了问题. 现在汇总一下这类问题的可能解决办法. 1.检查环境变量路径配置错误. JAVA_HOME是jdk的路径,CLASSPATH是lib路径(记得前面要加.;这俩个),Path是bin的路径. 2.更改一下CLASSPATH的路径. 比如我原来的是.;C:\Program Files\Jav

《第一行代码》BroadcastBestPractice中出现的问题及解决方案(关于AlertDialog系统对话框的使用)

该程序为<第一行代码>中的一个小demo,意在学习使用广播实现强制下线功能. 按<第一行代码>中的源码编写ForceOfflineReceiver类,用于接收广播并处理,代码如下: public class ForceOfflineReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { AlertDialog.Builde