ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java包与Import导入

2022-08-30 13:31:25  阅读:173  来源: 互联网

标签:包中 类库 包与 Java java 导入 import 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修饰的类

1.使用全名访问类;
2.import 该类;
3.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.0
            double r1 = Math.cos(PI * 2);//1.0
            double r2 = cos(PI * 2);//1.0
    }
}


导入全部的静态域和静态方法:
import static java.lang.Math.*;

过度使用静态导入会导致代码难以阅读和维护,因为阅读者不知道某个特定的静态对象是属于哪个类的。 但恰当地使用静态导入,代码可以因为不用繁琐地写全名而更具可读性。

原文链接:https://blog.csdn.net/m0_67390963/article/details/124147244

标签:包中,类库,包与,Java,java,导入,import,Import
来源: https://www.cnblogs.com/yunlong-study/p/16638948.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有