java基础 --- java包(package)

简介: java基础 --- java包(package)

1. 概述

1.1 为什么需要包这个概念

package可以简单理解为创建文件夹,windows中不能存储同类型同名称的文件,java也是。

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间

1.2 包的作用

  • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
  • 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
  • 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

2. 包的使用

2.1 创建包

  • 包申明必须在源文件的第一行,每个源文件只能有一个包申明,这个文件中的每个类型都应用于它
  • 如果一个源文件中没有包申明,那么其中的类、函数、枚举、注释等将被放在一个无名的包(unnamed package)中

包语句的语法格式为:

package pkg1 [.pkg2[. pkg3...]];

2.2 package目录结构

示例:一个Test.java里面的内容:

1. package net.java.util;
2. public class Test{
3. 
4.     ...
5. }

其在文件夹中的存储路径为net/java/util/Test.java,同时生成的class文件在net/java/util目录下。

类放在包中会有两种主要结果:

  • 包名成为类名的一部分
  • 包名必须与相应的字节码所在的目录结构相吻合

还是上面的示例,正确的类名是:net.java.util.Test.

2.3 使用import导入包

在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为:

import package1[.package2…].(classname|*);

导入其实和直接写在java文件中是一样的,编译器最后都会把他们写在一起。就像C中的define一样,编译的时候会展开。

3. 常见的系统包

在java中,除了我们自定义包外,java本身还提供了许多常用的系统包,如下表所示:

包名

作用

Java.lang

Language的缩写,包含了基本数据类型以及包装类,String类,线程类等,该包由系统默认加载(import).

Java.lang,reflect

反射对象包, 该包里提供关于类和对象反射信息的工具,在后续章节学习

Java.util

工具包,提供日期Date、堆栈Stack、向量Vector,链表LinkList随机数Random

Java.util.regex

正则工具包,用来匹配字符串

Java.text

处理文本包,用来格式化日期、数字和消息,分析,搜索和排序字符串,以及迭代字符、单词、语句和换行符等

Java.io

数据流包,处理文件读写、标准设备输出等

Java.net

网络编程包,里面包含了Socket (TCP客户端,用于连接远程主机)

ServerSocket(TCP服务端,用来接受客户端套接字的连接)

DatagramSocket(UDP 端点,用于发送和接收数据包)

MulticastSocket (是 DatagramSocket 的子类,用来处理广播)

Java.sql

数据库操作包,提供了与各种数据库操作的工具

4. 导入类的三种方式

  • 通过import导入完整的类路径

         import com.baidu.Test.Bus;      //import后面是有分号的

  • 通过import导入包路径

         比喻要使用某个包的所有类,可以用通配符*, impor com.baidu.Test.*;

  • 通过完整路径的方式使用类

参考链接:

https://baijiahao.baidu.com/s?id=1610064438454407570&wfr=spider&for=pc

https://www.runoob.com/java/java-package.html

https://blog.csdn.net/qq524752841/article/details/78089786

https://www.cnblogs.com/lifexy/p/10855188.html

相关文章
|
3天前
|
安全 Java API
JAVA并发编程JUC包之CAS原理
在JDK 1.5之后,Java API引入了`java.util.concurrent`包(简称JUC包),提供了多种并发工具类,如原子类`AtomicXX`、线程池`Executors`、信号量`Semaphore`、阻塞队列等。这些工具类简化了并发编程的复杂度。原子类`Atomic`尤其重要,它提供了线程安全的变量更新方法,支持整型、长整型、布尔型、数组及对象属性的原子修改。结合`volatile`关键字,可以实现多线程环境下共享变量的安全修改。
|
6天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
|
6天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
6天前
|
缓存 安全 Java
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
Java的特点和优点,、Java 8的新特性、面向对象、基本数据类型和引用类型、自动拆装箱与自动装箱、==与equals()的区别、为什么重写equals()就要重写hashcode()、抽象类和接口的区别、重载和重写的区别、四种引用方式、wt()和sleep()的区别、java方法是值传递还是引用传递?访问修饰符、static、final、this和super、volatile的用法及原理
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
|
24天前
|
Java Maven 数据库
Java 包(package)
Java 包(package)
22 1
|
25天前
|
Java
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
Java应用结构规范问题之在biz层的convert包实现转换的问题如何解决
|
22天前
|
存储 安全 Java
java基础Java的Deque之Deque、BlockingDeque、LinkedBlockingDeque、ArrayDeque
在实际编程中,合理利用Java的Deque和它的具体实现,可以在不同的应用场景中发挥高效和线程安全的队列管理功能。通过了解和比较Deque的不同实现,可以根据应用需求做出适当的技术选型,以支持高效且健壮的应用架构。
12 0
|
1月前
|
JavaScript Java API
Java日志通关(二) - Slf4j+Logback 整合及排包
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第二篇。
|
1月前
|
Java
【Java基础面试四十九】、 说一说Java的四种引用方式
这篇文章介绍了Java中的四种引用方式:强引用、软引用、弱引用和虚引用,它们在垃圾回收时的不同行为及其适用场景。
|
1月前
|
XML Java 数据库连接
【Java基础面试四十八】、 Java反射在实际项目中有哪些应用场景?
这篇文章探讨了Java反射机制在实际项目中的应用场景,包括JDBC数据库驱动加载、框架注解/XML配置实例化,以及面向切面编程(AOP)的代理类创建等。