第二章:Java的前世今生
又是一天清晨,昨天在和虚拟机爷爷告别以后编译器就突然出现了。他还很热情地邀请我去他家做客。
"喂,醒了吗?给你整了点馒头,快起来吃饭了。睡懒觉可不是好习惯。"编译器凑到我跟前来,感觉他是对着我的耳朵在说话。我都能感受到他嘴巴吐出的热气。
我猛的从床上坐了起来,"不是,哥们......"
"哈哈哈哈哈哈,跟你开个玩笑。"编译器一边笑一边朝房间外面走去。"快起来了,吃完饭我们出去溜达溜达。"
"哦哦,好。"
吃完饭后,我被他拉到了村庄外的小溪边,这里的水质是真的好,水底清晰可见,水中的鱼儿也是活蹦乱跳的。他走着走着便开始自顾自地讲起来了:"说起来我们村也有好多年历史了,从一开始的Java到Java2再到现在的Java23,已经过了几十年了,村里的生活质量也越来越好了。"
"Java23?你们不觉得在村庄名字后面添上数字念起来很拗口吗?"
"哈哈哈哈哈,没有啦,对外我们仍然是称自己是Java村的,毕竟加一个数字不太好听哈哈哈。"他顿了顿又说道:"Java后面的数字是我们用来记载村庄不同的时代的。"
"哦......我大概懂了,就像我们用石器时代、大数据时代这样的名称来为时代命名一样。"
"哎哟,反应还挺快。道理差不多,每次村里的生活有质的飞跃时我们就会修改Java后面的数字。"
"原来是这样。"
跟着编译器小哥在河边走累了,他便回家去了,我也出发前去寻找虚拟机老爷爷解决昨天没有来得及解决的问题。
"小哥,你来啦?"虚拟机老爷爷坐在自家屋前,手里捧着茶杯,嘴里不停对着茶杯吹气。
"爷爷早上好。"
"来靠我边上坐。"
"那个,昨天的......"
"哈哈哈,好奇心这么重吗?不错不错,等我喝完这口茶就给你讲讲昨天你到底干了些什么。"
他大手一挥,我的面前凭空出现一个屏幕:
java
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
"这是你昨天写的源文件里的代码,昨天也和你说过了,整个HelloWorld.java有一个官方的名称叫做源文件。然后接下来我要跟你说一个新的概念:类。"
"类?class吗?"
"哎哟不错哟,是的,我要说的就是class。"老爷爷捋了捋胡须。
"我们的java源文件就是由一个个class组成,如果把源文件比做成一个复杂的机器,我们的类就是这台机器的各个重要的部件。就好比一台电脑的显卡、CPU、内存条、硬盘之类的。"老爷爷说完瞟了我一眼,见我若有所思的样子,便再次提高嗓门说到:"然后我们的类呢,因为它需要做各种各样的事情,比如说CPU要进行计算、显卡要渲染页面之类,所以我们的类里面有着另一种帮助他实现功能的东西:方法。"
"emmmm听起来,类是由方法组成的?"
"聪明,你大致可以这么想,但是类里面当然也不止有方法,还有其他的东西,这些我到后面再与你说吧,哈哈,先不着急。"老爷爷看了看我露出了欣赏的眼光。
"说完了方法,我们再来聊聊最后一个东西:语句。我们的类、方法其实就是由一条条语句所构成的。在你的代码中,我们的方法里面是不是有一句话呀?"
"System.out.println("Hello World");吗?"
"是的,他就是我口中的语句,然后包裹着他的public static void main就是方法,再往外走就是我们的类了。"
"看起来语句似乎是实现方法的基础。"
"哈哈哈,孺子可教也。"虚拟机又捋了捋他那又白又长的胡须。"好啦,小子,接下来就是重头戏了。"
"还有吗?"
"那可不,你以为就这么完了吗?"
"接下来我们来说说每一个个单词都起到什么作用。"
"好吧。"我心想:我还以为已经结束了,感觉脑袋有些嗡嗡的。
java
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
//public 表示公开给其他类
//class 代表我们这是在写一个类
//HellWorld 是我们的类名
//static 我们稍后说明
//void 代表这个方法它不需要任何返回值
//main 代表这个方法的名字
//(String[] args)代表我们需要传入一个String类型的数组给main方法作为参数使用
//System.out.println() 通知系统打印的指令
// ; 分隔每一条语句的符号
"我去,这又是啥?"
"别紧张,小哥,这只是我给你做的笔记,防止我讲着讲着你不知道我讲到哪里了。"
"哦哦哦,谢谢爷爷。"
"哈哈哈哈,客气客气,以后飞黄腾达了记得多回来看看就是。"说罢,爷爷又捋了捋他的胡须,"好啦,接下来进入正题。"
"public关键字他代表着将这个类公开给其他类,也就是说其他类可以引入他,通过一些手段使用它的方法,就好比一个在自家门口贴上标语:'各位乡亲父老,有鄙人能够帮忙的地方尽管麻烦我。'。"
"啊这,听起来好热心的样子。"
"啊哈哈哈哈,打个比方打个比方。"
"class呢,就是我之前提到的,每当我们要写一个类了我们就得使用这个关键字,后面的HelloWorld便是这个类的名字,我们也叫他类名。"
"static这个东西有一些麻烦,以后等你等级高一点了,我再与你说吧。"
"void这个东西代表着我们的方法没有返回值,就像它是一个不求回报的人一样,帮了忙但是不要任何的回馈,但凡这个东西不是void那我们的方法就需要我们给他回馈点好处了。"
"main呢,就是我们这个方法的名字,但是它与其他的名字又有所不同,他可以说是你整个程序的起点,通过它我才能知道你整个程序都干了些什么。"虚拟机爷爷若有所思地说道,"每一次你将字节码文件发送给我的时候我就会去找他。然后开始验证你的代码是否符合我的要求。"
"原来是这样。"
"String[] args呢,它是我们这个方法做事之前需要的参数,就好比你想让别人给你扫地,就得给他提供扫地的工具,不然别人也是爱莫能助。"
"好啦,至于System.xxx这个东西,他是一条固定的系统输出指令,多写一些就记住了,别担心。"
"好了,说了这么多也该到了收尾的时候了。"老爷爷伸了伸懒腰,"活动一下,人老了不能久坐。"
"最后一件至关重要的事情便是{}与;"
"这两个符号可是构成java程序的关键,他决定了你java程序的整体结构,{}代表一个类或是一个方法的开始与结束,一个;代表了一条语句的结束,如果你要是打错了位置或者少打了或者多打了那你的程序可就要乱套了。"虚拟机老爷子话锋一转:"不过,应该对你来说是没问题的,多看看自己的新手任务代码就懂我是啥意思了。"
java
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
"好了好了,跟你讲了一个小时,我要回去睡回笼觉了,明天再来找我吧。如果明天找不到,我可能是出远门或者在家睡着了。"