Java包与Import导入
包的概念
包是Java语言提供的一种确保类名唯一性的机制,是类的一种组织和管理方式、是一组功能相似或相关的类或接口的集合。
- 一个完整的类名是包名+类名,在没有import导入的情况下,使用一个类需要给出完整的类名,如java.util.Date。为了方便,Java自动导入两个包:java.lang包和默认包。
- 无包的类可以访问有包的类, 直接导入即可;有包的类无法访问无包的类, 直接访问是访问同一个包中的, 而有包的类与无包的类不在一个包里。由于使用不同包中的类需要导入, 而无包的类因无包名无法导入;
- Java的包表面上看(从路径上看)是有等级的,但实际上并没有,比如java.awt,java.awt.color是两个地位相同的包。java.awt.color并不属于java.awt。
- 在采用类名方式使用一个类的时候, 先在当前包中查找是否有这个类, 如果没有才去导入的包中找。
包的作用
- 方便组织自己的代码,并将自己的代码与别人提供的代码库分开管理。
- 将相关联的接口和类集合到一块。比如,package graphics; 就把图形处理相关的模块放到了一起。便于使用。
- 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
- 实现了外界对包的访问控制。 需要先进行导入。
定义包
要想将一个类放入一个包中,必须在源文件中除注释以外的第一行使用package+包名语句。同时将属于包的文件放在与完整的包名匹配的子目录中。当需要调用此包中的类时,就可以使用关键字import进行导入。如果源文件中没有使用package语句,这个源文件中的类就会被放置在一个默认包(default package)中。默认包是一个没有名字的包。
一、在定义包的时候,应该注意几点:
- 为了尽量使包名保持唯一性,包名通常采用小写、按倒写因特网域名的形式进行定义。
- 在进行命名包时,应该避免使用与系统发生冲突的名字。
- 一个源文件只能有一个package语句,放在源文件第一行,import语句前。
- 自定义包可以以java开头。
编译和运行
一、编译带包的类:
javac -d 目录 源文件名.java
注:在使用命令javac –d 之前,必须先创建好包路径,因为该命令不会自动创建文件夹。
二、运行带包的类:
java 包名.类名
使用包
同个包的类之间访问比较简单,在代码中直接使用类名;而不同包之间的访问则必须满足一个条件:一个类如果希望被其他包中的类访问, 那么必须加上public修饰(注意:用public修饰的类必须和源文件名同名)。
一、不同包之间的使用通常有以下3种方法:只能导入public修饰的类
- 使用全名访问类;
- import 该类;
- import 包含该类的整个包;
常用的包
- Java.lang包:java的核心类库,包含了运行java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省(默认)加载这个包。
- java.util包:Java的实用工具类库。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构。
- java.io包:java语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等。
- java.util.zip包:实现文件压缩功能。
- java.lang.reflect包:提供用于反射对象的工具。
- java.mah:如提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
- java.net包:用来实现网络功能的类库。如Socket类、ServerSocket类。
- java.awt包:构建图形用户界面(GUI)的类库。提供的类如:低级绘图操作Graphics类,图形界面组件和布局管理如 Checkbox类、Container类、LayoutManager接口等,以及用户界面交互控制和事件响应,如Event类。
- java.awt.event包:GUI事件处理包。
- java.awt.image包:处理和操纵来自于网上的图片的java工具类库。
- java.sql包:实现JDBC的类库。
- java.applet包:编写java applet程序用的。
import
一、当导入的两个包中有相同的类名时,如果继续采用缩写,就会出现“The type xxx is ambiguous”问题。这时,你就要使用这个类的全名。比如,java.util、java.sql包中都有Date类,程序又同时导入了这两个包中的Date类。解决办法如下:
import java.sql.*;
import java.util.*;
import java.util.Date; //明确导入一下
二、静态导入,导入静态域和静态方法。
导入特定的静态域或静态方法
import static java.lang.Math.PI;
import static java.lang.Math.cos;
public class Test {public static void main(String[] args) {//以下几种调用方式都可以double r = Math.cos(Math.PI * 2);//1.0double r1 = Math.cos(PI * 2);//1.0double r2 = cos(PI * 2);//1.0}
}导入全部的静态域和静态方法:
import static java.lang.Math.*;
过度使用静态导入会导致代码难以阅读和维护,因为阅读者不知道某个特定的静态对象是属于哪个类的。 但恰当地使用静态导入,代码可以因为不用繁琐地写全名而更具可读性。
Java包与Import导入相关推荐
- 在java中使用关键字导入包_java中import关键字的使用方法
java中import关键字的使用方法 发布时间:2020-06-26 15:05:44 来源:亿速云 阅读:96 作者:Leah 这篇文章将为大家详细讲解有关java中import关键字的使用方法, ...
- 在java中使用关键字导入包_java的import关键字的使用
在java中如何使用Java包中自带的类呢? 方法一: 在使用时可以用Java.(包名).(方法名).(包中的类名): 例如:Java.util.Arrays.toString(某个要排序数组); 具 ...
- Java中apple导入那个包_在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是()。A.java.appletB.java.awtC.j...
在Java中,由Java编泽器自动导入而无需在程序中用import导入的包是().A.java.appletB.java.awtC.j 更多相关问题 问卷星是一个专业.无限制的免费在线问卷调查.测评. ...
- python 第三方包自动导入_7行代码,彻底告别python第三方包import导入问题!
最近有不少小伙伴咨询关于pyton第三方包导入的问题,今天我们就来聊聊第三方包导入那些事. 随着对python学习的渐入臻境,越来越多的小伙伴们开始导入自己所需的第三方包,实现各种各样的功能.但是,他 ...
- java中不用impore导入的_java import机制(不用IDE)
java包有两种导入机制 单类型导入 import java.lang.Object; 这个比较好理解 2. 按需类型导入 import java.lang.*; 这个不是把lang下面的所有的类都导 ...
- java包的创建、使用和导入操作教程
一.介绍: 在生活中,我们保存文档时会经常使用文件夹,把不同类型的文档归类,然后放到不同的文件夹中,易于管理和查找.在计算机中保存文档也不例外,例如Windows系统中的资源管理器就是如此: 其实ja ...
- tiptop使用java的poi包实现EXCEL导入导出功能
4gl可以调用java的poi包实现EXCEL的导入导出,今天分享一个EXCEL导入的功能! 一:环境搭建 1:poi文件导入 首先下载POI文件(找不到的可以私信我),解压后上传到ERP的服务 ...
- 【Intellij IDEA教程】怎么自动清除无效的import导入包、清除无效的import导入包的快捷键
[Intellij IDEA教程]怎么自动清除无效的import导入包.清除无效的import导入包的快捷键 通常在使用Intellij IDEA进行项目开发的时候 Intellij IDEA会自动帮 ...
- java中怎么快速导入一个包_Eclipse中快速导入jar包的方法
如何在Eclipse中快速导入jar包呢?下面就一起来学习Eclipse中快速导入jar包的方法吧,熟悉一下它的基本操作, 相信对各位小伙伴们一定会有所帮助的哦. Eclipse中快速导入jar包的方 ...
最新文章
- 毕业季:理想很丰满,现实也可以很丰满!
- glonee刷机绿色机器人无命令_小图编程机器人评测:寓教于乐,让编程变得简单有趣...
- cesium 修改 鼠标 样式
- 可行性研究和软件项目计划主要完成什么工作?_软件生命周期
- .NET中的Assembly分析
- 若依图片上传成功不能显示的解决办法?
- 百度地图之添加控件——比例尺、缩略图、平移缩放
- QQ概念版酿杯具,头条下载竟是病毒
- OpenSesame:一个能够攻击fixed-pin设备的工具
- Q绑查询HTML源码
- 计算机用户分配盘符,盘符划分不求人 Win7硬盘分区多面看
- look forward to 用法
- 几行代码轻松实现百度定位和在地图显示指定坐标
- 人生就像一场旅行,前进的过程也在不断的完善自我,现列出自己的缺点,今后用来反思自我。
- 嵌入式实时操作系统1——初识嵌入式实时操作系统
- 相控阵天线(六):直线阵列天线特殊综合方法(变形泰勒综合法、贝利斯综合法、伍德沃德抽样法)
- vue el-select默认值
- 2022留学生落户上海能通过年终奖提高社保基数吗?
- 项目管理---敏捷开发--结对编程
- 程序员在 Github 上疯狂薅羊毛!