Java——包
一、包
1、简要介绍
在Java编程语言中,包(Package) 是一种用来组织和管理类(Class)和接口(Interface)的机制。包为开发者提供了一种逻辑分组的方式,使代码更加模块化、结构化和易于管理。
包在 Java 中叫包,实际上就是一种文件夹,也就是目录系统,实际上我们可以在 JDK 中的 src.zip 压缩包中可以找到以下资源,可以发现这些就是我们平时使用的包,比如选中的 util 包:
所以说包就是文件夹。
这样我们就对包的作用有了一个较为清晰的认知,因为我们创建文件夹的目的就是管理文件,所以在 Java 中,包就是用来管理不同类和接口的。以及处理同名文件,不同路径中的同名文件不会冲突,在 Java 中,不同包中的同名类也不冲突。与文件中的目录系统一样,Java 中的包使用的也是这种树形的结构。
2、包的定义和声明
包是Java命名空间机制的一部分,用于将相关的类、接口和子包进行分组,以避免命名冲突和提高代码的可维护性,以及控制类、接口等的访问范围。
在一个Java源文件的开头使用 package
关键字来声明它所属的包。例如:
package com.example.myapp;
3、包名与路径
包名实际上就是路径,但是中间不使用斜杠或者反斜杠分割,而是使用 . 分隔。
这里我们创建了一个包,然后我们可以到文件管理器中查看具体的路径:
可以发现包名 com.pack1 对应的就是 com\pack1,所以说包名实际上就是路径。
然后我们再在 com 中创建一个包:
可以发现这种树形结构,就是类似目录系统的。
4、包示例
上面我们创建了两个包,这样我们就可以分别在这两个包中创建一些类了,这些类即使同名也不会冲突。
然后我们分别在两个包中创建相同名字的类,如下:
package com.pack1;public class Person {String name;int age;public Person(int age, String name) {this.age = age;this.name = name;}public int getAge() {return age;}//...
}
和
package com.pack2;public class Person {String name;int age;double weight;public Person(double weight, String name, int age) {this.weight = weight;this.name = name;this.age = age;}public double getWeight() {return weight;}//...
}
可以发现这两个 Person 类虽然类名相同,但是内部字段实际是不一样的。通过包,我们就可以实现这两个同名的类在不同包中管理而不冲突。
当我们要使用这两个包中的两个同名的类时,就要对这两个类更详细的标注:
public class Test {public static void main(String[] args) {com.pack1.Person person = new com.pack1.Person(18,"张三");com.pack2.Person person1 = new com.pack2.Person(60,"李四",19);}
}
这样我们才能分清对应的对象是哪个包中的类的实例。
而且我们还不能同时导入这个包中的 Person 类:
import com.pack1.Person;
import com.pack2.Person;
这样会报错。
也可以只导入一个包对应的类,这个类不用指定包名,然后另一个类的包不导入,指定包名:
import com.pack1.Person;public class Test {public static void main(String[] args) {Person person = new Person(18,"张三");com.pack2.Person person1 = new com.pack2.Person(60,"李四",19);}
}
二、包的命名规则与规范
1、命名规则
包的命名规则:
只包含数字(1-9)、字母大小写(A-Z,a-z),下划线(_),小圆点(.),不能以数字开头。也不能是关键字或保留字。
2、命名规范
一般是小写字母加小圆点构成。
结构是:
com.公司名.项目名.模块
三、常用的包
1、java.lang
这个包是自动导入的,这意味着你不需要使用 import
语句来导入这个包中的类。这是Java语言设计的一部分,旨在提供最基本的功能,所以对于这个包下的很多类:
我们在创建程序后就可以直接使用。
2、java.util
java.util
包是Java标准库中用于提供实用工具类的包,它包含集合框架、事件模型、日期和时间设施、国际化和其他实用工具类。以下是一些 java.util
包中的关键类和接口:
- 集合框架:包括
List
、Set
、Map
、Queue
等接口,以及它们的实现类如ArrayList
、LinkedList
、HashSet
、TreeSet
、HashMap
、TreeMap
等。 - 日期和时间:包括
Date
、Calendar
、GregorianCalendar
、TimeZone
等类,以及Java 8引入的新的日期和时间API,如LocalDate
、LocalTime
、LocalDateTime
、ZonedDateTime
等。 - 随机数生成:
Random
类用于生成伪随机数。 - 国际化:
Locale
类用于表示特定的地理、政治或文化区域。 - 事件模型:
Observer
和Observable
类用于实现观察者模式。 - 工具类:如
Arrays
和Collections
,提供了对数组和集合进行操作的静态方法。 - 正则表达式:
Pattern
和Matcher
类用于处理正则表达式。
3、java.awt
java.awt
(Abstract Window Toolkit)包提供了用于构建图形用户界面(GUI)的类,包括窗口、按钮、文本框等组件,以及布局管理器和图形绘制工具。以下是 java.awt
包中的一些关键类:
- 组件:如
Frame
、Panel
、Button
、Label
、TextField
、TextArea
等。 - 布局管理器:如
FlowLayout
、BorderLayout
、GridLayout
、CardLayout
等,用于管理组件在容器中的布局。 - 事件处理:如
ActionListener
、MouseListener
、KeyListener
等接口,用于处理用户输入事件。 - 图形和图像:
Graphics
类用于绘制图形,Image
类用于处理图像。 - 颜色和字体:
Color
和Font
类用于设置组件的颜色和字体。
4、java.net
java.net
包提供了用于实现网络应用程序的类和接口,包括用于处理TCP/IP和UDP/IP协议的类,以及URL处理和网络通信的工具。以下是 java.net
包中的一些关键类:
- URL:
URL
和URLConnection
类用于处理URL和与之相关的网络资源。 - Socket编程:
Socket
和ServerSocket
类用于实现基于TCP的客户端和服务器端通信。 - DatagramSocket:用于实现基于UDP的数据报通信。
- InetAddress:用于表示IP地址。
- URI:
URI
类用于处理统一资源标识符。
四、导入包
1、如何导入包
1)导入某个包中的某个类
一般情况下,我们要导入某个包,实际上是要使用这个包中的某个类,所以一般是导入某个包中的固定类:
例如,如果你想在代码中使用 java.util.ArrayList
,你可以这样导入:
import java.util.ArrayList;
然后,你就可以在代码中直接使用 ArrayList
类,而不需要每次都写上完整的包名。
2)导入整个包
我们不仅可以导入一个包中的固定类,也可以导入整个包。如果你需要使用一个包中的多个类或接口,可以使用通配符 *
来导入整个包:
例如,导入 java.util
包中的所有类和接口:
import java.util.*;
这样,你就可以在代码中直接使用 java.util
包中的任何类或接口,如 ArrayList
、HashMap
、Date
等。
2、导入包示例
导入 util 包中的 Arrays 类,使用 Arrays 类中的静态方法 sort 排序数组:
import java.util.Arrays;//导入java.util包中的Arrays这个类public class Test {public static void main(String[] args) {int[] arr = {12,23,435,34,2};Arrays.sort(arr);for(int i : arr) {System.out.print(i + " ");}}
}
运行结果:
五、注意事项
-
package
语句必须是源文件中的第一条非注释语句。这意味着它必须位于所有import
语句之前,以及所有类或接口定义之前。 -
每个源文件只能包含一个
package
语句。也就是说这个文件只能有一个路径,它的位置是唯一的。 -
import 应该在 package 和类的定义之间,没有顺序要求,可以有多句。就像下面这样:
package com.pack1;import java.util.Arrays;//导入java.util包中的Arrays这个类 import java.util.Scanner;//导入java.util包中的Scanner这个类public class Test {public static void main(String[] args) {//...} }
- 如果你创建了一个源文件,放到了一个包中,但是没有使用 package 语句,那这样我们就不能在其他的源文件中使用这个类,也不能导入这个类。
六、补充
在一个源文件中使用某个包中的某个类,我们有两种方法:
1、使用 import
语句:
这是最常见的方法,通过 import
语句,你可以告诉编译器你想要使用的类来自哪个包。这样,在源文件中就可以直接使用类的名称来创建对象或调用方法,而不需要写出完整的包名。import
语句通常放在源文件的顶部,package
语句之后。
例如,如果你想使用 java.util
包中的 Arrays
类,你可以这样做:
import java.util.Arrays;//导入java.util包中的Arrays这个类public class Test {public static void main(String[] args) {int[] arr = {1, 23, 64, 33, 32};Arrays.sort(arr);//排序System.out.println(Arrays.toString(arr));//转成字符串然后打印}
}
运行结果:
2、使用完整的类名:
如果你不想使用 import
语句,或者你想使用的类与当前包中的另一个类有相同的名称,你可以使用完整的类名来引用该类。完整的类名包括包名和类名,用点(.
)分隔。
例如,如果你没有导入 java.util.Arrays
,你可以这样使用它:
public class Test {public static void main(String[] args) {int[] arr = {1, 23, 64, 33, 32};java.util.Arrays.sort(arr);//排序System.out.println(java.util.Arrays.toString(arr));//转成字符串然后打印}
}
运行结果:
相关文章:
![](https://img-blog.csdnimg.cn/direct/579eb5b01a5d4157864ea6e637bf1a06.png)
Java——包
一、包 1、简要介绍 在Java编程语言中,包(Package) 是一种用来组织和管理类(Class)和接口(Interface)的机制。包为开发者提供了一种逻辑分组的方式,使代码更加模块化、结构化和易于…...
![](https://www.ngui.cc/images/no-images.jpg)
Pipeline知识小记
在scikit-learn(通常缩写为sklearn)中,Pipeline是一个非常重要的工具,它允许你将多个数据转换步骤(如特征选择、缩放等)和估计器(如分类器、回归器等)组合成一个单一的估计器对象。这…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%2FUsers%2Fsyj15%2FPictures%2FTypedown%2Fb7092823-5655-4ae5-9979-208a43844224.png&pos_id=img-A18otqyC-1719010089114)
postman国内外竞争者及使用详解分析
一、postman简介 Postman 是一款广泛使用的 API 开发和测试工具,适用于开发人员和测试人员。它提供了一个直观的界面,用于发送 HTTP 请求、查看响应、创建和管理 API 测试用例,以及自动化 API 测试工作流程。以下是 Postman 的主要功能和特点…...
![](https://img-blog.csdnimg.cn/19dbe717f6274b929106d733448762c8.png)
人工智能对决:ChatGLM与ChatGPT,探索发展历程
图: a robot is writing code on a horse, By 禅与计算机程序设计艺术 目录 ChatGLM:...
![](https://www.ngui.cc/images/no-images.jpg)
探索Python元类的奥秘及其应用场景
探索Python元类的奥秘及其应用场景 一、引言 在Python中,元类(Metaclasses)是一个相对高级且容易被忽视的主题。然而,对于深入理解Python的面向对象编程模型以及进行高级框架和库的设计来说,元类是一个不可或缺的工具…...
![](https://img-blog.csdnimg.cn/direct/258d2310529d442bb06f669e6ee0e686.png)
C语言基础关键字的含义和使用方法
关键字在C语言中扮演着非常重要的角色,它们定义了语言的基本构造和语法规则,通过使用关键字,开发者可以创建变量、定义数据类型、控制程序流程(如循环和条件判断)、声明函数等。由于这些字是保留的,所以编…...
![](https://img-blog.csdnimg.cn/img_convert/8a3a08629d05bc54e13a53c4804304bf.jpeg)
【Golang - 90天从新手到大师】Day09 - string
系列文章合集 Golang - 90天从新手到大师 String 一个字符串是一个不可改变的字节序列。字符串可以包含任意的数据,但是通常是用来包含人类可读的文本。 len()返回字符串字节数目(不是rune数)。 通过索引可以访问某个字节值,0…...
![](https://www.ngui.cc/images/no-images.jpg)
网络安全与区块链技术:信任与安全的融合
# 网络安全与区块链技术:信任与安全的融合 在网络空间,信任是一种宝贵而稀缺的资源。区块链技术以其独特的分布式账本、加密算法和共识机制,为构建网络安全提供了新的解决方案。本文将探讨网络安全与区块链技术如何融合,以增强信…...
![](https://img-blog.csdnimg.cn/direct/a5bfdfdf6ced4b64af5195bb36a50c00.png)
MySQL之复制(九)
复制 复制管理和维护 确定主备是否一致 在理想情况下,备库和主库的数据应该是完全一样的。但事实上备库可能发生错误并导致数据不一致。即使没有明显的错误,备库同样可能因为MySQL自身的特性导致数据不一致,例如MySQL的Bug、网络中断、服务…...
![](https://img-blog.csdnimg.cn/direct/cbeed1f0104c4f7380f37a309f3af1cb.png#pic_center)
【面试干货】 Java 中的 HashSet 底层实现
【面试干货】 Java 中的 HashSet 底层实现 1、HashSet 的底层实现2、 HashSet 的特点3、 总结 💖The Begin💖点点关注,收藏不迷路💖 HashSet 是 Java 集合框架中的一个重要成员,它提供了不存储重复元素的集合。但是&am…...
![](https://www.ngui.cc/images/no-images.jpg)
爬虫经典案例之爬取豆瓣电影Top250(方法二)
在上一篇文章的基础上,改进了代码质量,增加了多个正则表达式匹配,但同事也增加了程序执行的耗时。 from bs4 import BeautifulSoup import requests import time import re from random import randint import pandas as pdurl_list [https…...
![](https://www.ngui.cc/images/no-images.jpg)
如何优化React应用的性能?
优化React应用的性能是一个多方面的过程,涉及到代码的编写、组件的设计、资源的管理等多个层面。以下是一些常见的性能优化策略: 避免不必要的渲染: 使用React.memo、useMemo和useCallback来避免组件或其子组件不必要的重新渲染。 代码分割: 使用React.…...
![](https://img-blog.csdnimg.cn/direct/94543b358b004299983d8a794bd6793a.png)
css文字镂空加描边
css文字镂空加描边 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>文字镂空</title><style>/* 公用样式 */html,body{width: 100%;height: 100%;position: relative;}/* html{overflow-y: scroll;} */*{margi…...
![](https://www.ngui.cc/images/no-images.jpg)
python数据分析与可视化
Python 在数据分析和可视化方面有着广泛的应用,并且拥有众多强大的库和工具来支持这些任务。以下是一些常用的 Python 库和它们的主要用途: 数据分析 Pandas: Pandas 是 Python 中用于数据处理和分析的主要库。 它提供了数据框(DataFrame)和序列(Series)两种数据结构…...
![](https://www.ngui.cc/images/no-images.jpg)
webkit 的介绍
WebKit 是一个开源的网页浏览器引擎,它是 Safari 浏览器和许多其他应用程序的基础。WebKit 最初由苹果公司开发,并在2005年作为开源项目发布。WebKit 的核心组件包括 WebCore 和 JavaScriptCore。以下是 WebKit 的详细介绍: ### WebKit 的主…...
![](https://img-blog.csdnimg.cn/direct/ecf1383b97fc4f768583317748e131d8.jpeg)
make与makefile
目录 一、make的默认目标文件与自动推导 二、不能连续make的原因 执行原理 touch .PHONY伪目标 make指令不回显 makefile多文件管理 简写依赖方法 三、回车与换行 四、缓冲区 一、make的默认目标文件与自动推导 假设这是一个makefile文件,make的时候默认生…...
![](https://img-blog.csdnimg.cn/direct/c95254c74bd04e6bb4dd75d8a8335e26.png)
深度神经网络一
文章目录 深度神经网络 (DNN)1. 概述2. 基本概念3. 网络结构 深度神经网络的层次结构详细讲解1. 输入层(Input Layer)2. 隐藏层(Hidden Layers)3. 输出层(Output Layer)整体流程深度神经网络的优点深度神经…...
![](https://img-blog.csdnimg.cn/img_convert/600dd09771bbf79e8fa2f1b062dc65e2.png)
Pnpm:包管理的新星,如何颠覆 Npm 和 Yarn
在探索现代 JavaScript 生态系统时,我们常常会遇到新兴技术的快速迭代和改进。其中,包管理工具的发展尤为重要,因为它们直接影响开发效率和项目性能。最近,pnpm 作为一种新的包管理工具引起了广泛关注。它不仅挑战了传统工具如 np…...
![](https://www.ngui.cc/images/no-images.jpg)
汽车IVI中控开发入门及进阶(三十二):i.MX linux开发之Yocto
前言: 对于NXP的i.mx,如果基于linux开发,需要熟悉以下文档: IMX_YOCTO_PROJECT_USERS_GUIDE.pdf IMX_LINUX_USERS_GUIDE.pdf IMX_GRAPHICS_USERS_GUIDE.pdf 如果基于android开发,需要熟悉一下文档: Android_Auto_Quick_Start_Guide.pdf ANDROID_USERS_GUIDE.pdf …...
![](https://www.ngui.cc/images/no-images.jpg)
tessy 编译报错:单元测试时,普通桩函数内容相关异常场景
目录 1,失败现象 2,原因分析 1,失败现象 1,在 step 桩函数正常的情况下报错。 2,测试代码执行的数据流 和 step 桩函数内容不一致。 2,原因分析 桩函数分为 test object, test case, test step 三种类别。…...
![](https://www.ngui.cc/images/no-images.jpg)
计算机专业是否仍是“万金油”
作为一名即将参加高考的学生,我站在人生的分岔路口上,面临着选择大学专业的重大抉择。在这个关键节点,计算机相关专业是否仍是炙手可热的选择? 首先,从行业的角度来看,计算机相关专业确实在近年来持续火…...
![](https://img-blog.csdnimg.cn/img_convert/621ba0e6632b48d27fba0c3a452cdc94.png)
雷池社区版自动SSL
正常安装雷池,并配置站点,暂时不配置ssl 不使用雷池自带的证书申请。 安装(acme.sh),使用域名验证方式生成证书 先安装git yum install git 或者 apt-get install git 安装完成后使用 git clone https://gitee.com/n…...
![](https://www.ngui.cc/images/no-images.jpg)
怎样减少徐州服务器租用的成本?
服务器租用的出现,十分便于网络行业的发展,但是随着服务器租用的广泛应用,整体还是有着一定的成本的吗,不同的服务器类型在价格方面也是不同的,那么企业在选择服务器租用后,怎样才能减少服务器租用的成本呢…...
![](https://img-blog.csdnimg.cn/img_convert/79be6250fa9252d5eafb8f9d061964b4.png)
【性能优化】表分桶实践最佳案例
分桶背景 随着企业的数据不断增长,数据的分布和访问模式变得越来越复杂。我们前面介绍了如何通过对表进行分区来提高查询效率,但对于某些特定的查询模式,特别是需要频繁地进行数据联接查或取样的场景,仍然可能面临性能瓶颈。此外…...
![](https://www.ngui.cc/images/no-images.jpg)
数据仓库的挑战
建设数据仓库是一个复杂且资源密集的过程,需要考虑多个方面。以下是建设数据仓库时常见的挑战及其详细解释: 1. 数据集成 挑战: 数据来源多样:数据来自不同的系统、数据库、文件格式(如CSV、JSON、XML)、…...
![](https://img-blog.csdnimg.cn/direct/09d47f151a404209b846d31aacef9cf0.png)
基于ResNet-18的简单分类(新手,而且网络效果不咋滴,就是学个流程)
引言 先看问题: 我手边有一数据集,然后我想分分类!~~ 咳咳,最近刚做了一个:训练集有1143张,分为5类,里面图片是打乱的。测试集有248张,想把它分分类看看咋样。 再看一下效果: …...
![](https://img-blog.csdnimg.cn/direct/80b0049e0dea4d0e9e7d773898fef7b5.png)
自动化测试:Autorunner的使用
自动化测试:Autorunner的使用 一、实验目的 1、掌握自动化测试脚本的概念。 2、初步掌握Autorunner的使用 二、Autorunner的简单使用 autoRunner使用方法 新建项目 a) 在项目管理器空白区域,右键鼠标,选择新建项目 b) 输入项目名后,点击[确定]. 在初次打开aut…...
![](https://img-blog.csdnimg.cn/direct/630388ad1a25426aba045f306e45fba7.png)
时序预测 | Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测; 2.多变量时间序列数据集(负荷数据集),采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据&…...
![](https://www.ngui.cc/images/no-images.jpg)
软考 系统架构设计师系列知识点之杂项集萃(42)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(41) 第67题 Windows操作系统在图形界面处理方面采用的核心架构风格是( )风格。Java语言宣传的“一次编写,到处运行”的特性,从架构风格…...
![](https://img-blog.csdnimg.cn/direct/61e5ed70b1764bfc825e964022af8ab8.png)
FastBoot刷机获取root权限(Magisk)
1.首先要下载ADB、Fastboot等工具。 1.ADB、Fastboot工具 https://developer.android.com/studio/releases/platform-tools 2.安装FastBoot的USB驱动 https://developer.android.com/studio/run/oem-usb 2.下载对应的镜像 https://developers.google.com/android/images?…...
![](https://ask.qcloudimg.com/http-save/yehe-1207996/vqupl320l1.png?imageView2/2/w/1620)
酒店网站制作/天津百度推广排名
RocketMQ集群部署记录 #引用 https://cloud.tencent.com/developer/article/1147765一、RocketMQ基础知识介绍 Apache RocketMQ是阿里开源的一款高性能、高吞吐量、队列模型的消息中间件的分布式消息中间件。RocketMQ具有以下特点: 上图是一个典型的消息中间件收…...
![](https://img-blog.csdnimg.cn/img_convert/77d35851fed7f10a7480cd7c4c64d3cb.png)
网站死链接怎么删除/搜狗站长工具
从Unity 2018.3(TextMeshPro1.4)起,添加了Font Fallback和Dynamic SDF System以实现灵活的SDF使用。有了这个新功能后,我们可以实现以下用法:预先为中文字中经常使用的字符生成普通SDF根据需要追加取得使用频率低的文字…...
![](/images/no-images.jpg)
德州宁津建设局网站/免费推广工具有哪些
古老的unix提出了一切皆文件的思想,近代的OO提出了一切皆对象的理论,在unix的年代,人们迫切需要的是如何操作计算机而不是如何设计软件,毕竟那个时候软件设计其实比现在简单,就那么几种,关键是没有人会操作…...
![](/images/no-images.jpg)
苏州seo网站诊断/b站推广平台
PWC6038:"${empty data.code?001:fn:substring(data.code,0,8)}" contains invalid expression(s):javax.el.ELException:Error Parsing:${empty data.code?001:fn:substring(data.code,0,8)} 上面红色内容部分是错的,在问号?和冒号:两边添…...
![](http://www.myloadtest.com/resources/google-trends-new-relic-vs-appdynamics.png)
成都网站建设scwbo/陕西网站设计
前: New Relic的上市使得IT和资本界开始重新重视APM,当然跟传统APM相比,New Relic还是有相当的创新,另外还有一点是目前的创业潮导致的企业级需求增大。 In recent years, IT projects seem to have stopped asking “which APM s…...
![](/images/no-images.jpg)
wordpress 去广告插件/福州网站优化公司
转载自http://www.importnew.com/18884.html 本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。你可以先…...