包的作用

1. 为了更好的组织代码,能够将自己的代码与代码库的代码分离。

2. 在需要合作完成的工作中,可以使用分包的方式来尽量的减少类命名的冲突。

Sun公司推荐程序员使用公司域名的反向字符作为公司项目的起始包名:如 baidu.com  --> com.baidu

引入包的概念,主要是为了解决类名冲突的问题,能够使合作的团队中,在各自的包内自由的命名而不受到其他包的名称的影响。

包的概念主要是为了程序员的一个方便理解和开发,对于编译器而言,包->子包 并不表明任何的关系,他们分别是一组类的集合

标示类所处的包的语法(必须是类文件中除注释以外的第一句):

package com.baidu;

使用javac,java命令必须将当前目录到基目录:

javac com/baidu/HelloWorld.java (编译器并不检查本文件的目录结构是否与对应文件的包声明一致,当该类不引用自身的类,是不会报错)

java com.baidu.HelloWorld           (解释器欲运行某类,必须将完整的包名.类名)

类的导入:

一个类能够使用该包中的所有类以及外包中的所有public类。因为只有内部类才可以被修饰为protected和private.对于一个普通类是不可以被protected和private修饰的。所以根据访问控制修饰符的概念。

使用类有两种方式(以使用java.util.Date为例):

1. 使用import语句将欲使用的类进行导入

  import java.util.Date;

  经过上文的导入语句之后,就可以构造Date的实例了。

View Code

import java.util.Date;public class ImportDemo{private Date currentDate = new Date();  }

  当我们需要使用util包下面多个类时,import的语句是支持通配符的,可以直接使用import java.util.*; 表明导入util包下的所有类,但不包含子包中的类

  *通配符只能够表明单个包的所有类,不可以使用类似于 import java.*.*;这种通配来导入Java的所有包的类。

2. 使用该类的全包名+.类名

View Code

public  class NoImportDemo{java.util.Date currentDate = new java.util.Date();
}

当使用了1方式的import,有可能在引入多个包的过程中,会引入多个同名类。在这种情况下:当我们没有使用冲突的同名类的时候,编译器是不会发出任何抱怨的,而当我们使用了同名的类时,编译由于不知道使用哪个包中的类,会发出抱怨(以java.util.Date和java.sql.Date为例)

View Code

import java.util.*;
import java.sql.*;public Class NameConflictDemo{Date currentDate = new Date(); //Compiler Error.
}

在上文的代码中,由于编译器无法确定使用util包还是sql包中的Date类。

为了避免引起这样的冲突,我们可以在额外的加入一句我们真正要使用的那个Date的import语句,如我们要使用util的Date,我们加入import java.util.Date;

但是经过这样做了之后,我们在程序中的所有的Date都是util的Date,当我们需要同时使用util的Date和sql的Date时,我们就需要使用2方式(全包名.类名)

Import 和 C++的include并没有什么共同之处:

C++并不打开#include指定的文件,进行类的搜索。然而Java的编译器负责定位我们指定的Import的类(搜索的路径由我们的classpath决定)

Java可以不做import的动作,而使用全包名.类名来引用类,然而C++是必须加入#include对应的头文件的

某些程度上来讲,import和namespace有一定的相似相处。

静态方法+静态变量的导入

在J2SE5之后,对import语句做了一定量的加强,主要是支持导入类的静态方法以及静态变量

语法为:

import static ...;

View Code

import static java.lang.System.*;
import static java.math.Math.*;
public class StaticImportDemo{public static void main(String[] args){out.println(sqrt(4));  }
}

上述代码,静态的导入System的out静态变量,以及Math的sqrt的静态方法。能够带来代码上的简洁行不需要每次都加入类名。

转载于:https://www.cnblogs.com/papertigerv5/archive/2012/09/27/2704933.html

Java中的包,类的导入,静态导入相关推荐

  1. java中两个类怎么解决_导入两个具有相同名称的类。如何处理?

    问题 说我有一个像这样的代码: import java.util.Date; import my.own.Date; class Test{ public static void main(Strin ...

  2. Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入

    static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...

  3. 【JAVA系列】Java中的包、类的继承、多态、抽象类与接口

    文章目录 前言 一.包及访问权限 1.什么是包? 2.如何导入包? 3.JDK中常见的包 4.包的访问控制权限 二.继承 1.继承的基本概念 2.继承时方法调用顺序 3.super和this关键字 4 ...

  4. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  5. java中cbrt_Java Math类静态double cbrt(double d)示例

    java中cbrt 数学类静态double cbrt(double d) (Math Class static double cbrt(double d)) This method is availa ...

  6. Java中常用的类,包,接口

    Java中常用的类,包,接口 包名 说明 java.lang 该包提供了Java编程的基础类,例如 Object.Math.String.StringBuffer.System.Thread等,不使用 ...

  7. 第三次学JAVA再学不好就吃翔(part85)--静态导入

    学习笔记,仅供参考,有错必纠 静态导入 静态导入的概述 静态导入是导入类中的静态方法. 格式 import static 包名-.类名.方法名; 举个例子 package com.guiyang.re ...

  8. java中的static类_再议Java中的static关键字

    再议Java中的static关键字 java中的static关键字在很久之前的一篇博文中已经讲到过了,感兴趣的朋友可以参考:<Java中的static关键字解析>. 今天我们再来谈一谈st ...

  9. Java中常用的类及其特点

    Java中的内部类有四种(内部类作用1.封装装类型. 2.直接访问外部类成员. 3.回调.)内部类,方便他们的外部类调用,一般不会被其它类使用,比如事件监听器之类的,外部类刚好继承了一个别的类,如果你 ...

  10. 提高你的Java代码质量吧:少用静态导入

    一.分析  从Java 5开始引入静态导入语法(import static),其目的是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序. 但是,滥用静态导入会使程序更难阅读,更难维护.静态导 ...

最新文章

  1. 解决注册并发问题并提高QPS
  2. 今晚直播 | 旷视研究院王毅:用于条件图像生成的注意力归一化
  3. 从NBear到ADO.NET Entity Framework让我迷惑了
  4. 如何在Marketing Cloud里创建extension field扩展字
  5. python实现人脸识别_python人脸识别代码实现丨内附代码
  6. java集成lucene_将Lucene搜索集成到应用程序中
  7. mysql创建表时外连接_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)_MySQL...
  8. go sqlite mysql_Go语言中使用SQLite数据库
  9. [C++] string
  10. 微软sql服务器可以卸载,完美卸载SQL Server 2008的方法
  11. 新萝卜家园GhostXp Sp3电脑城装机极致版2012.08
  12. 大牛讲堂 | 深度学习Sequence Learning技术分享
  13. google translate - 谷歌翻译小工具
  14. 计算机术语中cad代表,计算机术语中,CAD表示什么
  15. Microchip具有SDI和SQI接口串行SRAM存储器23LC512
  16. android7.0 360os,360 OS 2.0评测 安全与体会的全部升级
  17. 数字证书包含哪些内容
  18. git push 到github时,报错:ERROR: Permission to xxx.git denied to sb.
  19. 自媒体淘客选好爆文标题轻松月入过万
  20. 疯壳出品-“鸿蒙OS”海思HI3518EV300开发快速入门

热门文章

  1. 使用Gearman做分布式计算
  2. 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能
  3. 调试JDK源码-Hashtable实现原理以及线程安全的原因
  4. 【ubuntu】ubuntu14.04、16.04、18.04 LTS版本支持时间
  5. java实现页面高效刷新_selenium高效应对Web页面元素刷新的实例讲解
  6. phpstorm安装_PHPstorm设置浏览器打开代码
  7. controller不跳转页面的几个原因_光知道SpringBoot,不用thymeleaf就太不对了
  8. python arp扫描_基于python的局域网arp扫描
  9. mybatis 一对多_MyBatis面试题集合,90%会遇到这些问题
  10. opencv可以在linux上运行,linux上 安装并 运行opencv