与包访问的相关规则
1. 每个源代码文件只能有一个公有类,并且文件名必须与该公有类名称相同
2. package语句必须在源代码的第一行,并且一个源文件只能有一句
3. 导入语句位于package语句和类声明之前
4. 导入的包应用于源代码文件的所有类
5. 每个源代码只能有一个package语句
6. 导入的包必须使用全称名称
7. 导入语句不会引起性能损失,也不会增加代码长度
8. 导入语句可以与全称类名共存
相同名的类导入
当有两个相同名字的类导入的时候,例如:
import com.yuan.Fruit;
import com.yuan.xing.Fruit;
这样如果在new的时候Fruit f1 = new Fruit();这样使得编译器不知道这个Fruit是哪个Fruit。
有两种解决方法。
1. 使用一条import语句,导入那个更频繁使用的类。另一个使用时用全名称导入。
2. 在整个代码中使用全称名称。
使用通配符
当使用 “*”进行导入时候,则会把包中的所有类都导入到源文件中,使得源文件可以使用包中所有的类,例如import java.awt.*;这样就把awt中所有的类都导入到源文件中,使得源文件可以使用java.awt包中所有的类。
当有两个相同的类,比如使用java.awt.List和java.util.List如果使用java.awt.*,和java.util.*;这样编译就会报错,使得编译器不知道要使用哪个List,所以这样必须使用全名称构造对象,java.awt.List list1 = new java.awt.List();
格式化main()方法
主方法方法名是固定的都是public static void main(String[] args){}(除了String后的变量名),没有正确的main()方法是一个运行时错误,而不是编译时错误。如果没有main()方法,语法正确编译将不会报错。
当拥有任意多个命名为main()的方法(或者一个都没有),没有一个方法与JVM查找的main()方法相匹配,则将不能使用该类的名称调用java来运行该类。(但是仍然能实例化该类并调用其他方法,main方法只是用与启动虚拟机和引导程序)
当具有合法的、非静态的main()方法的类只能通过编译、其他代码调用方法,但是如果遇到该类调用JVM时,这个非静态方法将会在运行时出现错误。