分享
 
 
 

再说HelloWorld

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

引子

请问,下面的代码正确吗?

public class aaa{ }

答案:没有一个Java编译器认为它错误,没有一个Java程序员认为它正确。

类名“应该”大写。我们之所以把应该强调一下,是因为我们不应该说:“类名必须大写”。

“必须”是编译器和解释器要求的——语法要求;“应该”是程序员社区要求的——规范(Naming Convention)要求。

HelloWorld

public class HelloWorld{

public static void main (String [ ] args){

System.out.println("Hello World");

}

}

这是我们学习Java的第一个程序,在教材上常常会解释一下有关的问题。请问,下面的一段解释中有几个错误?

【一个Java应用程序必须有一个类且只能有一个类含有main方法,这个类称为应用程序的主类。main也是关键字。

Java应用程序的源文件主名与主类名相同(包括大小写),扩展名为.java(大小写均可)。源文件命名时,如果源文件中有多个类,那么只能有一个类是public类,同时该public类就必须为主类(含有main方法),因此源文件的主名必须与该类名相同。如果源文件没有public类,那么源文件的主名只要和某个类的名字相同即可,当然扩展名为.java。】

便于你回答,我们做一下选择题:

1. 一个Java应用程序必须有一个类且只能有一个类含有main方法?()

2. main是关键字?

3. Java应用程序的源文件名必须与主类名相同?

4. 源文件名与主类名的大小写相同?

5. 文件名是区分大小写的?

6. public类必须为主类(含有main方法)?

7. 源文件名必须与public类名相同?

8. 源文件没有public类,那么源文件名必须和某个类的名字相同?

9. 编译命令javac 后面紧跟程序名?

10. 运行命令java后面紧跟主类名?

在很多教材上,似乎不区分语法与规范(约定)。经过以讹传讹之后,我们好像能够自然而然的遵守约定了。一旦我们违反教材上的教条,发现并不会出现想象中应该出现的(编译、运行)错误,我们反而会困惑,到底怎么回事?

源代码文件命名的讲究

程序2:谁没有遵守约定?

public class AAA{

public static void main (String args[ ] ){

System.out.println("Hello World");

}

class bb{

public static void main (String args[ ] ){

System.out.println("World Hello ");

}

}//文件保存为D:\1000\aAa.JAva

第1条:源代码文件名不(一定)区分大小写。

因为源代码文件名是由操作系统管理的。在Windows下,源文件名必须与public类名(这里只有HelloWorld)相同, helloWorld.java,helloworld.JAVA都可以,但毕竟不是好习惯,扩展名一定要是 .java(也不区分大小写)。

第2条:如果源文件中有多个类,那么只能有一个类是public类,因此源文件名必须与该类名相同。

第3条:如果源文件没有public类,那么源文件名随意,当然扩展名一定要是 .java。

第4条:作为约定(我们应该有的好习惯),源文件名应该与public类名大小写完全相同,类名的第一个字母应该大写。源文件没有public类,源文件名也要与某个类名相同。

所以,选择题的答案:

3. Java应用程序的源文件名必须与主类名相同?(false)

没有public类,源文件名随意。

4. 源文件名与主类名的大小写相同?(false)

即使主类(含main方法的类)是public类,大小写也可以不同。

5. 文件名是区分大小写的?(false)

资源管理器不区分大小写。既然如此——文件名不区分大小写,编译命令javac 后面紧跟的是什么?

编译

在Javac.exe眼里,完全没有“程序“这个概念,它把一个.java文件视为一个编译单元。一个编译单元只能有一个public类(或接口)。

特别是,Java编译器非常重视大小写,如果你没有遵守命名约定,这时就要吃苦头。程序1-2的编译命令为:

D:\1000>javac AAA.java

如果敲成D:\ 1000>javac aAa.JAva 或D:\1000>javac bb.java ,请看看效果。

这里的要点1:Javac.exe区分大小写,它完全按照class name的大小写进行审查。后缀一定要是小写的java。(JaVac则可以),javac后面紧跟的是区分大小写的文件名。

javac Usage: javac <options> <source files>

这里的要点2:编译器仅仅将编译单元中的各个类进行编译,而生成相应的.class文件,它们那个有main(),不是编译器管的事情。它们是否组成一个应用程序,不是编译器管的事情。

运行

作为Java应用程序,必须有一个和唯一的一个入口。但是,不限制你的各个类是否还有main()方法。事实上,一些程序员喜欢在很多类中添加一个main()方法用于测试。

这里的要点1:Java应用程序是一系列字节码文件的松散的集合体。应用程序只要求有一个和唯一的一个入口,其他类的main()方法——指public static void main(String args[ ] ),不是本应用程序的入口。(不讨论overload the main() method)

D:\1000>java AAA

D:\1000>java bb

小结

Naming convention Vs syntax.

What is application?

Identifiers are case sensitive, source file’s name in Windows are not.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有