当前位置:  技术问答>java相关

向高手请教import语句用法!!!

    来源: 互联网  发布时间:2015-05-08

    本文导语:  请祥诉import语句用法!!! | USING IMPORT DECLARATIONS If you've done any amount of Java programming, you've likely used import declarations, of the form:      import java.util.*; or:      import java.util.Arra...

请祥诉import语句用法!!!

|
USING IMPORT DECLARATIONS

If you've done any amount of Java programming, you've likely used import declarations, of the form: 

    import java.util.*;

or: 
    import java.util.ArrayList;

These are quite simple in a way, but there are a couple of interesting issues to mention concerning the use of these declarations. The first point is that an import declaration makes a type or set of types available, but doesn't do any textual inclusion of files. By contrast, the C #include directive actually substitutes text into the including file. So that: 
    #include 

actually results in a header file stdio.h being inserted into the compilation unit. In Java programming, a corresponding declaration: 
    import java.util.ArrayList;

simply says that the class type ArrayList can be used in the program without full qualification (that is, ArrayList instead of java.util.ArrayList). 
There's an implicit import declaration: 

    import java.lang.*;

assumed at the beginning of a Java compilation unit, just after any package statement in the unit. A wildcard like "*" says "make available all public types from the package", in this case, all types in the package java.lang. Wildcards are never used to import subpackages, so an import like: 
    import java.lang.*;

doesn't give you access to the classes in java.lang.reflect, a subpackage of java.lang. You need to say: 
    import java.lang.reflect.*;

to access those classes. 
What about ambiguities? What if you import two types with the same name from different packages? 

    import P1.A;
    import P2.A;

This is invalid usage. However, what if you say instead: 
    import P1.*;
    import P2.*;

and both packages P1 and P2 contain an A type? Well, if you don't actually use the A in your program, then it's okay. But if you say: 
    A a = new A();

you'll get an ambiguity error. In other words, you get an error if (a) you use a type-import-on-demand declaration (that is, an import declaration using a wildcard), (b) two different packages have types with the same name, (c) you use that type. There is no rule that says "the first one wins". 
There are a couple of different styles you can use with imports. Suppose you need to use ArrayList and Vector from java.util. You can say: 

    import java.util.*;

or: 
    import java.util.ArrayList;
    import java.util.Vector;

These are both "right". The first is terse; you don't have to enumerate all the types you're using. The second makes clear what types you're using in your program, at the expense of some verboseness. The second approach also has a subtle advantage in that it forces a type to be found in a particular package. Here's an example. Suppose you want to use a type A, and you say: 
    import P1.*;
    import P2.*;

And you believe that A is found in P1, when it's actually not in P1 but in P2. Explicitly enumerating the types you're using gets around this problem. If you think A is in P1, and you say: 
    import P1.A;

and it's not actually there, you'll get a compile error. 
Is there any efficiency issue between these two styles? Possibly, but since import declarations don't actually import anything into your program, any difference is very small. Remember that there's an implicit import java.lang.* at the top of your compilation units, and java.lang in JDKTM 1.2.2 contains 75 classes and interfaces. An experiment using a contrived example, one with thousands of class name uses that must be looked up, showed a negligible change in compilation speed. So compilation performance should probably not be considered a factor when choosing one format over another. 

There's one final angle of interest on import declarations. Suppose you use an inner class: 

    package P;

    public class A {
        public static class B {}
    }

If you want to access A from another compilation unit, you say: 
    import P.*;

or: 
    import P.A;

But if you'd like to access B without qualification, you need to say: 
    import P.A.*;

or: 
    import P.A.B;

The first of these makes available types within the class A found in package P. The second makes available just the type B found in class A in package P.

|
package xx.xx;
import xxxx.xxx.……;
public class extends someclass implements someinterface{
…………
}
就这么用

|
java中的import是个名字空间的问题,
就是你在一开始一个包也不import,但在程序里写全名,
一样可以.
c要是不include
就不可以了吧.
就是为了区别别的包的.
所以才用域名倒过来.随便找本书上都有的.

read book

偶E文不好,你就对付着看吧,反正都是CHINAREN.

    
 
 

您可能感兴趣的文章:

  • 哪位高手能指导一下cvs命令的用法?
  • 关于C语言中的一些用法,高手进
  • 有没有真正的高手知道jTable的用法请给个例子好吗?(极高分)
  • 请那位高手详细解释一下wait函数的用法和意义?
  • Linux下C编程数学函数的用法,请教高手
  • 对epoll+多线程的用法和效率的疑问,麻烦高手指点!
  • 请各位java高手谈谈java结合xml的用法,谢谢,来者有分!!
  • 高手看看我的socket用法有何错误???
  • 关于gettext包的用法, 高手help me !!! (大家看我写这贴子如此辛苦, 求解如此急切, 都来看看, 来着有分)
  • 请高手指导一下vi的用法?
  • sed 命令语句高手 请进
  • 如何使用UNIX语句来实现这个功能? 高手来看下
  • 请问高手,如何知道一个insert语句执行是否成功呢?
  • 关于SQL语句问题,高手请进,急!!
  • unix shell 中执行带参数的SQL语句问题,望高手帮我解决,谢谢
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~
  • dos 高手请进,关于bat中如何使用if 来判断一行命令成功与否后,所执行的分支语句
  • 小问题请教高手:try中的语句为何不执行!!!
  • 各位高手,能帮我解释以下语句的含义吗?关于Vector一个很菜的问题!
  • 循环和条件语句的高手请进,一定给分(就剩18分了),只要你答对。
  • 一个超简单(仅5行语句的程序)却又莫名其妙的有趣问题,高手请进。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教高手lvs的奇怪问题,我挺着急,希望高手别潜水,就就我,先谢谢了
  • 请教高手:如何用gnome/gtk编写托盘程序
  • 请教各位高手一个简单的问题:在JAVA 中如何才能取得一些系统信息?
  • 请教curses的高手
  • #######菜鸟问题,请教高手,一定给分########
  • 如何在Linux上使用LoadLibrary()?高手请教!
  • 请教:Java高手读书之路
  • 请教高手:cpu占用经常100%怎么解决?
  • linux起不来了,请教高手,谢谢
  • 关于courier邮件服务器的配置问题,请教高手
  • 我的REDHAT 9。0刚装好,显卡不能正常显示,请教各位高手
  • 请教高手,如何将磁盘阵列mount上去??
  • 请教高手,关于vmware中linux的鼠标的问题
  • 请教高手在QT下怎样收串口数据
  • 请教高手,如何在VMware下安装suse10.0??请指教,谢谢。
  • 高手请教!linux怎样通过pid获取进程信息,如:进程名、进程状态等?
  • 请教solaris高手一个solaris安装问题
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3