java中import java.awt.*;语句把AWT包中的类引入了程序

那么importjava.awt.event.*;语句把awt包中event包中所有的类引入程序不是多此一举么?event包就在awt包中啊... 那么import java.awt.event.*;语句把awt包中event包中所有的类引入程序不是多此一举么?event包就在awt包中啊 展开
 我来答
Panghanxian
2016-12-22 · TA获得超过1454个赞
知道小有建树答主
回答量:1159
采纳率:75%
帮助的人:464万
展开全部

这个说的是导入

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语句已经是业界默认的,所以大胆使用吧...

824574978
2011-11-05 · TA获得超过161个赞
知道答主
回答量:83
采纳率:0%
帮助的人:79.5万
展开全部
不是这样的, java.awt包和java.awt.event包没有包含和被包含的关系,两个不一样
包只是一个名称,千万不要认为java.awt包含java.awt.event,要不然一个java.*不就包含所有类了??显然不是的
追问
是这个道理。。。既然这样为什么event前面还加awt啊?这是路径还是其他什么意思?
追答
我觉得这表明他们之间的一种层次关系吧,这样看起来层次比较清晰,还有,如果按路径来理解的话,在物理磁盘上存放的时候确实是event文件夹是awt文件夹的子文件夹,但是import的时候只是导入该文件夹下的类,并不导入其子文件夹内的类
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无悔每一秒
2011-11-05 · TA获得超过851个赞
知道小有建树答主
回答量:671
采纳率:0%
帮助的人:777万
展开全部
由于Event 类已废弃,它已经由 AWTEvent 类及其子类所取代,但仍写成引入import java.awt.*;因为它其实是单独的一个类,已和awt包没有关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2011-11-05 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3494万
展开全部
java.awt.event.*和 java.awt.*; 是完全没有任何关系的两个包~~~~
它们之间的关系是平等的 不存在event包就在awt包中这么一说
记住 就算前边的路径相同 也不代表这两个包有关系~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天天sousou
2011-11-05 · TA获得超过150个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:169万
展开全部
只有同一级的可以用*代替要像你说的那样
那 import java.* 岂不就好了
更多追问追答
追问
是这个理哈。。。
追答
恩  呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式