Java 包的使用详解

news2025/2/24 3:36:46

在这里插入图片描述

文章目录

  • 1. 概念
  • 2. 导入包中的类
    • 2.1 使用类的全路径
    • 2.2 导入包
    • 2.3 静态导入包
  • 3. 自定义包
  • 4. 包的访问权限控制
  • 5. 常用的包
  • Java编程基础教程系列

1. 概念

在开发过程中,会定义很多的类,随着类的定义越来越多,难免会出现类名重复的情况,对类的管理变的很困难,为了方便对类进行管理,我们可以把相关联的类放在同一个目录下,该目录就是一个包,包的实质就是文件夹。

包是对类和接口的封装,给类提供了多层命名空间。这样管理不同的类就可以允许在同一个项目中存在相同名称的类,只需要把相同名称的类放在不同的包里面。

2. 导入包中的类

我们把相关联的类放在同一个包中,使用时只需导入包中的类,Java中有三种方法导入包中的类。

2.1 使用类的全路径

示例:

public class Test {
    public static void main(String[] args) {
        //getTime()方法 从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数。
        java.util.Date time = new java.util.Date();
        System.out.println(time.getTime());
    }
}

使用此方法每次创建一个对象都需要导入类,比较麻烦。但是优点是不会出现冲突,像在程序开头使用导包的方式就会出现冲突的情况,但是依然建议使用导包的形式导入包中的类,在容易出现冲突的情况下特殊处理。

2.2 导入包

示例:

import java.util.Date;

public class Test {
    public static void main(String[] args) {
        Date time=new Date();
        System.out.println(time.getTime());
    }
}

使用此方法更加的方便,但是会出现冲突。例如,如果不知道 Date 类是哪一个包中的类,可以直接导入 java.util.* ,表示导入 java.util 包中的所有类。示例:

import java.util.*;
import java.sql.*;

public class Test {
    public static void main(String[] args) {
        Date time=new Date();
        System.out.println(time.getTime());
    }
}

示例中的代码出现了错误,原因是同时导入的两个包中都存在 Date 类, java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配,出现了歧义,不知道调用的是哪一个类。

在这里插入图片描述

2.3 静态导入包

示例:

//静态导入
import static java.lang.Math.PI;
import static java.lang.Math.random;
import static java.lang.Math.round;
//或者:import static java.lang.Math.*;
public class Test {
	public static void main(String[] args) {
		//静态导入省略"Math."
		//不使用静态导入:System.out.println(Math.random());
		System.out.println(random());
		System.out.println(PI);
		System.out.println(round(5.6));
	}
	
}

使用静态导入类时,只需要在 import 关键字后面加上 static 关键字。此方法是在 JDK 5 后面添加,其目的是减少字符输入量,提高代码可读性。但是如果同时导入的两个类中有重命名的静态成员,会出现报错。

3. 自定义包

在代码的最上方加上一个 package 语句指定该代码位于哪个包中,这样的方式叫做自定义包。如果没有使用 package 语句,代码放在默认包中,包名的定义需要唯一且一般使用域名的颠倒形式,其和代码的路径相同,例如:

package com.baidu.www

接下来我们在 IDEA 中创建一个包:右键 src / 新建 / 包 ,这样我们就创建好了一个包。

在这里插入图片描述

在新建的包中添加类:右键新创建的包 / 新建 / 类。

在这里插入图片描述

打开相应的文件目录查看是否创建成功。

在这里插入图片描述

同样的,此时文件的最上面已经生成了 package 语句。

在这里插入图片描述

4. 包的访问权限控制

前面我们使用访问权限修饰符 private 来修饰类的成员属性,使我们无法在类外访问。同样,访问权限修饰符也控制了不同的包之间的访问规则。例如,使用 default 访问权限时,在同一个包中可以互相使用,在不同的包中就无法调用。示例:

在这里插入图片描述
此时的错误原因是:TestPackage2.A 在 TestPackage2 中不是公共的; 无法从外部程序包中对其进行访问。

在这里插入图片描述

5. 常用的包

  • java.lang 系统常用基础类(String、Object)
  • java.net 进行网络编程开发包。
  • java.sql 进行数据库开发的支持包。
  • java.util 是java提供的工具程序包。(集合类等) 非常重要
  • java.io I/O编程开发包

其中使用 java.lang 包中的类时,不需要手动导包,系统会默认导入。


Java编程基础教程系列

【Java编程进阶】封装继承多态详解

【Java编程进阶】Java抽象类与接口详解

【Java编程进阶】Object类及常用方法详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/162498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac 安装redis

文章目录mac 安装redis使用Homebrew安装Redis1.搜索redis版本2.使用Homebrew安装命令3.查看是否安装完成4.启动redis服务5.查看redis服务进程6.redis-cli连接redis服务7.检测 redis 服务是否启动8.修改密码mac 安装redis 使用Homebrew安装Redis 首先这里需要安装homebrew 1.搜…

【Kubernetes 企业项目实战】03、基于 Alertmanager 发送报警到多个接收方(上)

目录 一、配置 Alertmanager 发送报警到 qq 邮箱 1.1 设置 163 邮箱 1.2 创建 alertmanager 配置文件 1.3 创建 prometheus 告警规则配置文件 1.4 安装 prometheus 和 alertmanager 1.5 部署 alertmanager 的 service 1.6 浏览器访问 Prometheus 和 alertmanager 二、配…

ELK日志(2)

elasticsearch群集状态颜色:灰色:未连接绿色:数据完整态黄色:副本不完整红色:数据分片不完整紫色:数据分片复制过程群集主机角色:主节点master:负责管理调度工作节点: 负…

从IPv6的普及看中国未来网络的发展

最近看了一篇《邬贺铨:IPv6或是未来主流网络》的文章,谈到了未来网络的发展问题。IPv6也许是未来主流网络的发展方向。那么什么是IPv6呢,不妨来看下关于他的另一篇文章《邬贺铨:IPv6是IPv6规模部署第三阶段重要抓手》。 他谈到,IPv6是下一代互…

单绞机张力开环控制(绞臂行星差速机构算法)

PLC的开环和闭环张力控制算法,可以参看下面的文章链接: PLC张力控制(开环闭环算法分析)_plc张力控制程序_RXXW_Dor的博客-CSDN博客里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算法,关于绕线机的…

动态内存管理(1)

TIPS 1. 2. malloc, free, calloc, realloc 这些的基本前提都是在内存堆区 内存堆区不能与内存栈区两者混淆乱套 动态内存管理存在的原因 1. 为什么要有动态内存管理?其实我们之前学过比如说对内存的管理,比方说我申请一块内存空间: 1.…

任意方向边界框——day64 读论文:基于自适应目标定位特征卷积神经网络的高分辨率遥感影像多面向目标检测

Multi-Oriented Object Detection in High-Resolution Remote Sensing Imagery Based on Convolutional Neural Networks with Adaptive Object Orientation Features 基于自适应目标定位特征卷积神经网络的高分辨率遥感影像多面向目标检测1. Introduction2. Materials and Met…

jQuery ajax中dataFilter的用法

参考资料 jquery的ajax的dataFilter参数的使用 ⏹用于处理 XMLHttpRequest 原始响应数据的函数 运行在success函数之前, 对Ajax请求返回的原始数据进行预处理 可以对返回的json数据中的null属性进行过滤可以对返回的json数据添加一些自定义的属性 如果不返回原始数据,返回其他…

零代码连接邮箱腾讯云企业网盘,附件管理超轻松

在日常工作中,想必大家每天都会收到各种各样的工作邮件,并且很多重要的文件材料也是通过邮件附件的形式来传输的,那么如何一站式管理这些文件,对于提高办公效率就至关重要了。关于邮件附件管理,相信大家也都碰到过这样…

全面了解文件上传漏洞, 通关upload-labs靶场

靶场简介 upload-labs是一个专门用于学习文件上传漏洞攻击和防御的靶场。它提供了一系列模拟文件上传漏洞的实验环境,用于帮助用户了解文件上传漏洞的原理和防御技术。 这个靶场包括了常见的文件上传漏洞类型,如文件名欺骗、文件类型欺骗、文件上传功能…

1582_C代码实现的快速、可移植MD5信息摘要算法

全部学习汇总: GreyZhang/c_units: A small piece of code which can be reuse anywhere, I call it a unit. This is a collection of unit in C language! Ok, yes, it would be my toolbox. (github.com) 工作之中,同事用到了MD5信息摘要算法&#x…

面试加分题--socket是否是并发安全的?

今天和大家聊一个有点儿东西的面试题:socket是否是并发安全的? 为了帮助大家理解,我们先假设一个场景。 就拿游戏架构来说,我们想象中的游戏架构是下面这样的。 想象中的游戏架构 也就是用户客户端直接连接游戏核心逻辑服务器&…

解决⾃动驾驶中计算机视觉的⽬标检测问题

来源:投稿 作者:cairuyi01 编辑:学姐 最近读了《Object detection with location-aware deformable convolution and backward attention filtering》,这是⼀篇2019年刊登在CVPR上的CV论⽂。与解决普适性的CV任务不同&#xff0c…

SpringMVC如何优化Ajax技术

SpringMVC如何优化Ajax技术? AJAX Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 Ajax 不是一种新的编程语言,而是一种用于创…

EIoU和Focal-EIoU Loss

1、论文 论文题目:《Focal and Efficient IOU Loss for Accurate Bounding Box Regression》 2、引言 CIoU Loss虽然考虑了边界框回归的重叠面积、中心点距离、高宽比。但是其公式中的v反映的是高宽的差异,而不是高宽分别与其置信度的真实差异。因此&…

蚂蚁智能内容合规审核产品探秘

随着互联网服务的不断深化,产品营销的形式从传统文本、长图文,增加到短视频、直播等新媒介形态,展现形式愈加丰富的同时,也为营销宣传内容合规审核带来了诸多难题。如何解决与日俱增的审核量与合规审核人员有限之间的矛盾&#xf…

【阶段三】Python机器学习31篇:机器学习项目实战:基于皮尔逊相关系数搭建电影智能推荐系统

本篇的思维导图: 项目背景 在当今这个大数据时代,智能推荐系统的应用越来越广泛,网上购物、在线观影、新闻推送的背后都有智能推荐系统算法的支持。人们经常会在视频平台上观看电影,有时明确想要观看某部电影,有时则仅仅是随机搜寻。如果视频平台能利用基于物品的…

DDOS攻击

把我掘金的文章同步一份过来 最近网上爆火的一款游戏 Goose Goose Duck (鹅鸭杀) 游戏官方在近日发布了一则公告,宣布由于服务器屡次遭受黑客攻击,该游戏服务器将暂时关服三天进行维护 遭到了DDOS攻击,背后原因,我们不做讨论&…

代码随想录算法训练营第十七天二叉树 java : . 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和

文章目录前言Leetcode 110.平衡二叉树题目讲解思路Leetcode 257. 二叉树的所有路径题目讲解这道题涉及到了回溯Leetcode 404.左叶子之和题目讲解总结前言 选择一个简单的理念,矢志不渝地去执行(Take one simple idea and take it seriously 递归三部曲…

【Nginx】Nginx搭建高可用集群

1. KeepalivedNginx 高可用集群(主从模式)2. 配置高可用的准备工作3. 在两台服务器上安装keepalived4. 完成高可用配置(主从配置)5. 最终测试 1. KeepalivedNginx 高可用集群(主从模式) 2. 配置高可用的准备工作 需要两台服务器…