初识JAVA之文件名小笔记

class就是Java的类

javac是java语言编译器。全称java compiler。javac工具读由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。

首先Java是被解释执行的。它在运行时并不是将所有的class文件全都放到内存中,而是再遇到import的时候才去相应的文件目录找相应的class文件。

对于一个public类,它是可以被项目中的任何一个类所引用的,只要在使用它之前import一下他所对应的class文件即可。将类名与文件名一一对应就可以方便虚拟机在相应的路径(包名)中找到相应的类的信息。如果不这样做的话,就很难去找,而且开销也会很大。

 

规则:

1.Java保存的文件名必须与类名一致;

2.如果文件中只有一个类,文件名必须与类名一致;

3.一个Java文件中只能有一个public类;

4.如果文件中不止一个类,文件名必须与public类名一致;

5.如果文件中不知一个类,而且没有public类,文件名可与任一类名一致。

 

当编写一个Java源代码文件时,此文件通常被称为编译单元或称为转译单元。每个编译单元都必须要有一个后缀为.java,而在编译单元内测可以有一个public类,该类的名称必须与文件名称相同(包括大小写,除文件后缀.java)。每个编译单元只能有一个public类,否则编译器就不会接受。如果在该编译电影之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是public类,而且他们主要用来为主要的public类提供支持。

1.每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出出错信息。

2.public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。例如对于DOG类而言,文件的名称必须是DOG.java,而不是dog.java或是Dog.java。如果不匹配,同样将得到编译时错误。

3.虽然不是很常用,但编译单元内完全不带public类也是有可能的。这种情况下,可以随意对文件命名。(尽管随意命名会使得人们在阅读和维护代码时产生混淆。)

一个Java文件可以有多个类似作为内部类/Adapter类/其他类,但是只能有一个public类,且类名必须和文件名一致。这是这类语言的一个不好的地方。

在现实情况中,经常有一些很小的类由几个类共同需要,因此无法作为内部类,而且接口关系必须设置为public,这样就导致了大量很小的.Java程序,每个都只有几百字节。

这类语言的另一个问题是一个类的所以实现的方法都必须包含在同一个文件中。在swing应用中,经常导致长达一两百K字节的源程序,行数达到三四千行,搞的JBuilder奇慢无比。

一个.java文件,可以有多个类,但是文件名只能有一个,用哪个类名来充当文件名呢?其实文件名是无所谓的,因为将来用javac进行编译的时候,最终会生成多个.class文件,每个类对应一个.class文件。运行时只要运行对应的.class文件就可以了,这时.java文件就显得没什么用了(运行时不需要),那还管它叫什么名字。

但是当你的类被public修饰时,此时文件名必须和该类保持一致(例如public class A{}只能放在A.java文件中,不然在用javac编译时会提示错误;类A是公共的,应在名为A.java的文件中声明)。也就是说在同一个.java文件中,不应该出现2个或2个以上的public class。

如果有一个public class类,就应该让文件名和此类名相同;那如果没有呢,即所有的class都没有修饰符,那么可以给该文件随便起名字,甚至可以不和任意一个类同名,哪怕是汉字名称都可以,但是后缀还是要有.java的。

 

注:有很多初学者(我也是)可能会认为文件名字应该也和main方法所在类有关系,其实不然。main方法只是程序的一个入口,老师讲的“一个程序只能有一个入口”,好像是在说只能有一个main方法,其实,只要你高兴,就可以在所有类里都写上main方法,给程序提供N多个入口,但是最后你运行程序的时候也只能从其中的一个口进去,这就是main的作用(程序入口)。(这也就是为什么你发现,程序员在做单元检测时,会往自己做的很多类里面添加main方法,因为他要为自己做的东西添加运行入口,从而方便测试。)

转载于:https://www.cnblogs.com/pokayzhou/p/10927247.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值