java中import java.awt.*;语句把AWT包中的类引入了程序
这个说的是导入
java.awt包下所有类型(更准确的说法),* 代表指定包(java.awt)下"所有类型"
这个是使用指定包下的一个指定类型(或者所有类型)之前的类型声明.放在package语句之后
这里的类型不仅仅包括 class 类类型, 还可能存在 interface 接口类型,@interface (注解类型)
(主要看是什么包)
对于一个你从来没看到过的陌生的类型名有如下2点:
1).从import看导入的类型名:
,如果没有参考api或者其它资料,,是看不出它对应的是类,还是接口,还是注解;
因为:
import 语句可以导入 class 类类型, interface 接口类型,@interface (注解类型),但是从类型名看不出对应具体的类型是类,还是接口,还是注解.
2).当然如果,从使用上看类型名:
如果是注解,在代码中使用注解,因为类型前有@做标记,一下子就看出它是注解类型,如果是类与接口,那就难分辨了.
另外补充解释:
1.有默认导入的包,即java.lang包.
例如:java.lang.System
经常使用的System类,虽然用了,但是没有发现它对应的import语句
原因是:
包下所有类型.也就是只要类型所在的包是java.lang就不需要import,已经默认隐式导入了,不导包可直接使用
如果要使用的类型所在的包是其它包,如java.io,java.lang,java.lang.reflect等的,都需要import语句:
(程序代码中用到class InputStream) import java.io.InputStream;
导入才能使用包中的类型.
不过实际开发中,根据开发工具的提示,自己又很了解的,实际用到时根据提示导入那个包类型(如开发工具没有提示,又存在这样的包类型,这时才手动书写import语句)
2.注意:
import语句不是强制使用的,可以不用(早期做法),但推荐使用.
如果不用import语句,只是要用其中的一个类型,不用import语句,但是类型名必须使用全限定类型名,
即要指定它所在的包,
例如:如果要使用InputStream,不写import语句,
直接在代码中指定类型名为 java.io.InputStream,
这是早期的做法,但问题是每次用到某个类型都要指定包路径,如果包路径很长(开发包,一般类型路径很长的)
比如spring-web-4.2.x......jar包
下的HandlerMethodInvoker类型,所在的包是org.springframework.web.bind.annotation.support
如果不用import语句,在代码中直接写就是
org.springframework.web.bind.annotation.support.HandlerMethodInvoker
一个类型就占了差不多半行的可见空间,显然这样的代码的可读性变差.
所以java的开发者后来想到用利用"import 包路径.类型名;"来解决这个问题.
使用import语句已经是业界默认的,所以大胆使用吧...
包只是一个名称,千万不要认为java.awt包含java.awt.event,要不然一个java.*不就包含所有类了??显然不是的
是这个道理。。。既然这样为什么event前面还加awt啊?这是路径还是其他什么意思?
我觉得这表明他们之间的一种层次关系吧,这样看起来层次比较清晰,还有,如果按路径来理解的话,在物理磁盘上存放的时候确实是event文件夹是awt文件夹的子文件夹,但是import的时候只是导入该文件夹下的类,并不导入其子文件夹内的类
它们之间的关系是平等的 不存在event包就在awt包中这么一说
记住 就算前边的路径相同 也不代表这两个包有关系~~
那 import java.* 岂不就好了
是这个理哈。。。
恩 呵呵