程序员的呐喊——你所不知道的java hello world

首先,大家都知道著名的主类Main,以及它的小弟main函数,还有System.out中拿来呐喊(指往控制台写字)的输出函数

但是,你有没有想过,什么是必要的,什么不是?

主类可以不叫Main

你可以颠三倒四改成喜欢的名字。但请注意,如果你的类名和类所在的文件名不一致,你会遇到一点小麻烦(其实如果javac可以限定输出的文件就好了,可惜我不知道)

主类可以没有public

是的,这不妨碍java加载其中的main函数!

main函数的参数名可以不叫args

是的,你也可以改成喜欢的名字。为什么它要叫args?难道不能叫xs么?

思考:给main的参数名改名,是基于什么原理?

更多:其实main函数还可以是继承自其他类的

class head{

     public static void main(String[] ls){

       System.out.println("head -hello");

   }

}

class Main extends head{}

比如这样。关于这点应该是和继承有关,估计大家都知道。

总结:除了main函数(的类型以及一些限定)需要好好写以外,其他的不必理会

或许java可以修改启动时(该调用哪个函数)的行为?这我就不知道了

思考题答案:基于lambda演算中的α变换。变量命名不重要。也正因为如此,你才可以随便取名,然后后期一键重构。

———————

然而一上来就介绍类,介绍打印控制台其实有点新手不友好。

我们来点前期准备。

首先是函数。相必于数学上的函数,程序语言中的函数类似于打包好的一系列任务。

这一系列任务,首先需要点资源(也就是参数),当然它可能还会从其他地方索取资源(应该有节制地索取资源。你可以想象,当你面对乱做一团的一堆数据线时……)

经过一系列暗箱操作,这系列的任务最终会有些产出。

武德充沛的产出仅通过返回值提供,然而往往人们需要写一些不讲武德的产出。同索取资源一样,不讲武德往往喜欢向其他地方讲述系列任务的丰功伟绩——同样地,你需要限制这样的行为。

于是我们提问,有没有一种办法,可以很好地限制不讲武德,以及索取资源的行为?

答案当然是有的。

那就是通过类。

通过类,我们可以很好地限制上述两个行为(不讲武德和索取资源)。类当中同样有函数,当然还有变量。

类中的变量,很好地满足了这两者(不讲武德和索取资源)的需求——不过,与外部交互的输入输出除外。

(输入:比如让程序读取文件(包括网络上的,比如网页),或者接受用户输入;输出:比如生成文件,或者显示一段文字)

让我们回到系列任务——函数

人非圣贤,孰能无过。系列任务也是如此。难免其中会有些难以察觉的问题。

在此之前,介绍一下编译器。

编译器兢兢业业地负责把程序源代码转化为可执行的文件(不过java的需要jvm去运行)。

但是编译器这个老毕登有点怪脾气:

1、它会告诉你哪里不对,甚至有的给出了建议,但它就是不帮你改(我是觉得很奇怪啊,或许是不想破坏源码?)

2、有的编译器更会抱怨,有的不会(比如你可以轻松制造C语言的指针问题,但在(安全)Rust中几乎不可能)

我们无需关心老毕登,只需要知道,有些错误,编译器会提前告知我们。

剩下的,就是程序跑起来(运行时)才可能产生的错误了。

我们可爱的系列任务,正好可能犯一些运行时错误。

于是,你需要错误处理……(这里就不多提了)

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值