package、import和import static的区别

package(包)

开发中肯定有各式各样的软件开发商,他们会提供成千上万具有各种用途的类,这些类也肯定会发生重名的时候。针对这个问题,Java引入了包(package)机制,提供了类的多层命名空间即允许留在类名前面加一个或多个前缀来限定这个类,这样便解决了类的命名冲突和类文件管理问题。

java允许将一组作用相关的类放在同一个包下,从而组成类库单元,格式如下:

package packageName;

一旦在Java源文件中使用了package语句,就意味着该源文件里定义的所有类都属于这个包,位于包中的每个类的完整命名都应该是包名和类名的组合。如果有人想使用该包中的某个类,必须要用包名加类名做引用

package lee;

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello Worid!");
    }
}

上面的第一行代码表明把Hello 类放在了lee包空间下。在编译完成后class文件没有放在默认的路径下了,而是多了一个名为lee的文件夹,其中就有Hello .class文件:
在这里插入图片描述
在这里插入图片描述
这里就与Java的设计有关。假设某个程序中有两个Hello 类,引入包可以区分它们,同时这两个类还分别对应两个不同的Hello .class文件,它们在文件系统中必须分开存放才不会冲突。

在同一个包下的类可以自由访问,例如下面的HelloTest类,如果它也放在lee包下则这个类可以直接访问Hello类,无须添加前缀。

package lee;

public class Hellotest {
    public static void main(String[] args) {
       //直接访问相同包下的另一个类,无须使用前缀
        Hello hello=new Hello();
    }
}

import (导入)

在lee包下有一个子包sub,该包下有一个子类Apple

package lee.sub;

public class Apple {
}

对于上面的lee.sub.Apple类,位于lee.sub包下,与lee.HelloTest类与lee.Hello类不再处于同一个包下,因此使用lee.sub.Apple类时需要使用该类的全名(即包名加类名),即必须使用lee.sub.Apple写法来使用该类。

package lee;

public class Hellotest {
    public static void main(String[] args) {
        //使用不同包下的类时,调用构造器需要在构造器前增加包前缀
        lee.sub.Apple  apple=new lee.sub.Apple();
    }
}

为了简化编程,Java于是引入了import关键字,import可以在程序中一次导入某个指定包下的类,这样就不必在每次用到该类是都书写完整类名了,import语句应该出现在package语句(如果有的话)之后,类定义之前。

导入单个类的用法:

import 包名.类名;

导入指定包下的全部类用法:

import 包名.*;

“*”号代表着所有,但只能用于代表类,不能代表包。

import static(导入 静态)

JDK1.5后增加的一种静态导入的语法,用一句话来解释两者的区别便是:import可以省略写包名;而使用import static则可以连类名都省略,两者的目的都是为了减少程序中代码编写量。它用于导入指定类的某个静态成员变量,方法和全部的静态变量,方法。

指定类的单个静态成员变量,方法:

import static 包名.子包...类名.字段名|方法名

指定类的全部的静态成员变量,方法:

import static 包名.子包...类名.*

上面的“ * ”只能代表静态的变量名和方法名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值