02_1第一个程序

本文小结

1 完成第一个JAVA 程序
2 对第一个程序细节了解
3 JAVA 程序执行的过程了解

前情回顾
小辉辉和博仔几个已经完成了JAVA环境的安装。也完成了测试。万事俱备只欠东风。
周鹏程:确实万事俱备只欠东风。都划水好几集了,说什么也该我出场了吧。今天说什么都要好好整理以下。毕竟预习不易,且行且凡尔赛。
叮咚,叮咚。
小舒:周鹏程,预习完了吧,敲出第一个代码了嘛,怎么做啊,我有点没弄清楚。
周鹏程:hahaha 机会来了。"第一个代码啊,很简单啊,来来来我告诉你,先不管三七二十一 ,直接干出一段代码来"

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

小舒:代码是出来了,要怎么运行咧,运行出来又是个啥咧?
周鹏程:这个简单。上图👇
1 在桌面建立一个tex的文件夹。


HelloWorld文本文件.png

小舒:我后面怎么没有.txt的后缀啊?
周鹏程:这个是为了防止用户不小心修改了这个后缀造成文件损坏而故意设计的。我们可以这样去打开。

打开后缀名

打开任意盘符。选中查看。这里就想到与选择了其中一个文件对查看这个属性进行修改。只要选择勾选上文件拓展名即可让后缀名显示了。


image.png

小舒:好的,我的打开了。接下来是个什么操作。
周鹏程:照着把刚刚那段东西打上去即可。如图👇


HelloWorld文件.png

小舒:这也简单。接下来咧,不用停下来。
周鹏程:那我可要开始咯。
右键重命名。


修改后缀名.png

接着无视即可。


忽略.png

进入cmd


打开当前面板.png

小舒:等一下,等一下,为啥进入cmd?
周鹏程:cmd 可以调用命令啦,你可别忘记了JAVA的运行是需要经过两个步骤的。我们这里得到的是.java的文件。还需要把他们变成.class文件,.exe文件咧。

小舒:哦这样啊,你继续,
周鹏程:如下操作即可👇


进入cmd窗口.png

这里已经到达了当前的.java位置。可以使用javac把.java文件编译成.class文件。因为上节已经讲到了,我们把环境变量进行了配置。
执行javac命令,如果当前文件没有,就会去环境变量去找对应的位置。因为已经完成了配置,所以这里可以进入bin中找到javac这条命令。
小舒:哦,上节课原来是这个原理啊。懂了,懂了。
然后执行如下即可。
javac HelloWorld.java 意思是javac(编译)HelloWorld.java(名字是HelloWorld.java的文件)
javac.png

ps:这里可以用Tab键进行补充,还不错哦。真的超强。

最后一步:java HelloWorld 即可。


image.png

小舒:好的,我的第一个程序也跑起来了。但是我不知道为啥。可以帮我解释一下这个程序吧。
周鹏程:ok,那我一句一句给你解释吧。

1 class HelloWorld{
2   public static void main(String[] args){
3   System.out.println("hello world"); 
4 }
5 }

不知道你发现了没,这个代码是非常对称的。可以简化一下。

class HelloWorld{
}
这是最大的一个整体。里面包含了如下
public static void main(String[] args){
}
在这个里面又包含了
System.out.println("hello world");
小舒:哎呀,好像确实是这样的咧。有点意思哦。
周鹏程:okok,那我直接开始讲了哦。由这个可以得出,{}可以作为一个整体。里面可以包含东西,这个称之为代码块。

class 是JAVA的关键字,表示接下来的一部分是类。{}里面全部是类的内容。
其中紧跟着的是类名。这就很好理解了。

class HelloWorld{} 有一个名字叫HelloWorld的类。这里懂了吧。
小舒:这里懂了,对了,我发现这个文件名字好像也是这个,这个是巧合还是可以随便乱写?

周鹏程:这就很有觉悟咯。这是因为java的源文件命名规则。

java源文件的命名规则是这样的:如果源文件中有多个类,那么只能有一个类是public类;如有有一个类是public类,那么源文件的名字必须与这个类的名字完全相同,扩展名是.java;如果源文件没有public类,那么源文件只要和某个类的名字相同,并且扩展名是.java就可以了。

知道我为啥没有加public了吧。
小舒:确定不是忘记了?
周鹏程:算了那不重要。我们来做以下实验。 
实验1 :验证文件名字和类名是否需要统一。(这里先不加public)
对照组1_1:编写类为HelloWorld,文件名字为HelloWorld的文件,看是否会报错。
对照组2_1: 编写类为HelloWorld,文件名字为HelloWorlds的文件,看是否会报错。

对照组1_1 :


1_1 helloworld.png

对照实验1_2.


i对照组1_2.1.png

编译未出错;
运行的时候出错误。

运行出错1_2.2.png

实验一小结

对照组1 没用使用public,文件名字和类名一致。所以编译成功,运行成功。
对照组2 没有使用public,文件名字和类名不一致。编译成功,运行失败,原因是没有找到主类。

小舒:所以那个报错的原因是什么?
周鹏程:这个啊,因为main是程序的入口,系统根据文件名去找对应的类,因为我们对照组2让文件名和类名不一致了。所以这里是不存在和文件名同名的类且包含main方法的。对了,main是程序的入口。所以这个一定是不能变的。
小舒:这里的public 是什么意思,会对后面的执行有影响嘛。
周鹏程:有的,我们来看第二个实验。

对照组2_1:文件名 HelloWorld 类名HelloWorld 加public


image.png

对照组2_2:文件名字 HelloWorld 类名 HelloWorlds 加public


image.png

小舒:哇,居然这么神奇啊。看来这个public 还是很有用的嘛。这么说,一个文件里面是可以有多个类存在的是吧?
周鹏程:是的,来看下一个实验。

对照组3_1:当类名和文件名相同的时候。


多个类同一个源文件中

出现了两个.class 文件。说明这个在编译的时候是有几个类就完成几个类的编译。


javac之后.png

ok了,差不多了,可以把上述进行一个完整的小结了。

说白了,就是源文件的命名规则。记住以下几点即可。

1  如果源文件中有多个类,只能有一个类被public修饰。出现的错误为实验2_2。
被public 修饰的类必须放在同名文件夹中。就这就好了,你只有一个文件,就不要想放两个public 修饰的东西。
2 main方法是函数的入口。且不要对上面的东西做什么修改。至于原因,稍后马上呈上。
3 其实把我建议一个文件夹下面就写一个类,他不香嘛?

对了,这个是第一个文件出现的一些问题小结。


第一个程序常见幺蛾子.png
修改main方法报错图片.png

一个程序的执行到底经历了啥

想要了解一个程序的执行过程,我们需要去了解我们上节课的老朋友,JDK。
JDK 是由JRE和编译器等相关工具。
JRE由核心内库和JVM组成。
JVM 是java虚拟机,就是他把编译完成的字节码文件变成了可以执行的文件。java程序是跑在这个上面的。


image.png

所以简单点来说就是,我们写好了一个程序,调用javac命令会把JDK中的编译器触发完成.java到.class的编译。然后java 文件名完成.class文件的运行。这个是由JVM完成的。所以想要刨祖坟就是要了解JVM,不过我劝你简单了解一下就好了,耗子尾汁。
再拉回main函数。
JVM规定main函数作为程序的入口。并做了如下规定。
public static void main(String[] args){}
为啥这样规定咧?
由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为public static。目前就此打住吧,后面聊到JVM的时候再进一步。不然我怕你放弃学习了。

小结

1 Hello world 的程序编写。
2 Hello World 程序常见错误。
3 main函数相关问题。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容