Java包详解

Java 引入了包(package)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。

包允许将类组合成较小的单元(类似文件夹),它基本上隐藏了类,并避免了名称上的冲突。包允许在更广泛的范围内保护类、数据和方法。你可以在包内定义类,而在包外的代码不能访问该类。这使你的类相互之间有隐私,但不被其他世界所知。

包的 3 个作用如下:
1 . 区分相同名称的类。
2 . 能够较好地管理大量的类。
3 . 控制访问范围。

包定义

Java 中使用 package 语句定义包,package 语句应该放在源文件的第一行,在每个源文件中只能有一个包定义语句,并且 package 语句适用于所有类型(类、接口、枚举和注释)的文件。定义包语法格式如下:

package 包名;

Java 包的命名规则如下:

	包名全部由小写字母(多个单词也全部小写)。如果包名包含多个层次,每个层次用“.”分割。包名一般由倒置的域名开头,比如 com.baidu,不要有 www。自定义包不能 java 开头。

注意:如果在源文件中没有定义包,那么类、接口、枚举和注释类型文件将会被放进一个无名的包中,也称为默认包。在实际企业开发中,通常不会把类定义在默认包下。

包导入

如果使用不同包中的其它类,需要使用该类的全名(包名+类名)。代码如下:

example.Test test = new example.Test();

其中,example 是包名,Test 是包中的类名,test 是类的对象。

为了简化编程,Java 引入了 import 关键字,import 可以向某个 Java 文件中导入指定包层次下的某个类或全部类。import 语句位于 package 语句之后,类定义之前。一个 Java 源文件只能包含一个 package 语句,但可以包含多个 import 语句。

使用 import 导入单个类的语法格式如下:

import 包名+类名;

上面语句用于直接导入指定类,例如导入前面的 example.Test 类,代码如下:

import example.Test;

使用 import 语句导入指定包下全部类的用法按如下:

import example.*;

上面 import 语句中的星号(*)只能代表类,不能代表包,表明导入 example 包下的所有类。

提示:使用星号(*)可能会增加编译时间,特别是引入多个大包时,所以明确的导入你想要用到的类是一个好方法,需要注意的是使用星号对运行时间和类的大小没有影响。

通过使用 import 语句可以简化编程,但 import 语句并不是必需的,如果在类里使用其它类的全名,可以不使用 import 语句。

Java 默认为所有源文件导入 java.lang 包下的所有类,因此前面在 Java 程序中使用 String、System 类时都无须使用 import 语句来导入这些类。但对于前面介绍数组时提到的 Arrays 类,其位于 java.util 包下,则必须使用 import 语句来导入该类。

在一些极端的情况下,import 语句也帮不了我们,此时只能在源文件中使用类全名。例如,需要在程序中使用 java.sql 包下的类,也需要使用 java.util 包下的类,则可以使用如下两行 import 语句:

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

如果接下来在程序中需要使用 Date 类,则会引起如下编译错误:

Test.java:25:对Date的引用不明确,
java.sql中的类java.sql.Date和java.util中的类java.util.Date都匹配

上面错误提示:在 Test.java 文件的第 25 行使用了 Date 类,而 import 语句导入的 java.sql 和 java.util 包下都包含了 Date 类,系统不知道使用哪个包下的 Date 类。在这种情况下,如果需要指定包下的 Date 类,则只能使用该类的全名,代码如下:

// 为了让引用更加明确,即使使用了 import 语句,也还是需要使用类的全名
java.sql.Date d = new java.sql.Date();

系统包

Java SE 提供了一些系统包,其中包含了 Java 开发中常用的基础类。在 Java 语言中,开发人员可以自定义包,也可以使用系统包,常用的系统包如下表所示。

说明
java.langJava 的核心类库,包含运行 Java 程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、异常处理和线程类等,系统默认加载这个包
java.ioJava 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等
java.util包含如处理时间的 Date 类,处理动态数组的 Vector 类,以及 Stack 和 HashTable 类
java.awt构建图形用户界面(GUI)的类库,低级绘图操作 Graphics 类、图形界面组件和布局管理(如 Checkbox 类、Container 类、LayoutManger 接口等),以及用户界面交互控制和事件响应(如 Event 类)
java.awt.image处理和操纵来自网上的图片的 Java 工具类库
java.wat.peer很少在程序中直接用到,使得同一个 Java 程序在不同的软硬件平台上运行
java.net实现网络功能的类库有 Socket 类、ServerSocket 类
java.lang.reflect提供用于反射对象的工具
java.util.zip实现文件压缩功能
java.awt.datatransfer处理数据传输的工具类,包括剪贴板、字符串发送器等
java.sql实现 JDBC 的类库
java.rmi提供远程连接与载入的支持
java. security提供安全性方面的有关支持

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

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

相关文章

groovy java_在java中使用groovy怎么搞

临摹微笑一种基于Java虚拟机的动态语言,可以和java无缝集成,正是这个特性,很多时候把二者同时使用,把groovy作为java的有效补充。对于Java程序员来说,学习成本几乎为零。同时支持DSL和其他简介的语法(例如闭包)&#x…

python自动控制库_一个可以自动化控制鼠标键盘的库:PyAUtoGUI

PyAutoGUI 不知道你们有没有用过,它是一款用Python自动化控制键盘、鼠标的库。但凡是你不想手动重复操作的工作都可以用这个库来解决。如果,我想半夜时候定时给发个微信,或者每天自动刷页面等操作,它能完全模拟手动操作&#xff0…

Java使用自定义包

包的声明和使用非常简单,在了解基本语法之后,示例在 Java 程序中声明包,以及不同包之间类的使用。 1 创建一个名为 com.dao 的包。 2 向 com.dao 包中添加一个 Student 类,该类包含一个返回 String 类型数组的 GetAll() 方法。S…

python去掉一个最高分和最低分求平均数_excel去掉一个最高分和最低分求平均数 - 卡饭网...

怎么快速计算考试成绩的最高分、最低分、平均分?怎么快速计算考试成绩的最高分、最低分、平均分? 我们可以使用Excel工作表快速计算出学校考试成绩的最高分.最低分和平均分,不需要逐个计算和核查,下面就跟小编看一下操作方法.具体如下:1. 第一步,打开一个…

mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别...

前言标题几乎已经说的很清楚了,在oracle中,concat()函数和 “ || ” 这个的作用是一样的,是将不同列拼接在一起;那么wm_concat()是将同属于一个组的(group by)同一个字段拼接在一起变成一行。mysql是一样的,只不过mysq…

试图将驱动程序添加到存储区_基于容器的块存储使用

什么是块存储?分布式存储系统,为业务与数据在集群内漂移提供了自由保障,满足企业对于不受约束的系统环境要求。同时,平台仅保存迁移被改动的数据,而非整体增加数据量,实现增量备份。魔方云块存储的功能&…

C++类和对象的概念

C 是一门面向对象的编程语言,理解 C,首先要理解类(Class)和对象(Object)这两个概念。 C 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种…

参数名称 java_java – 具有重要名称的WSDL中的参数名称

我正在使用JAXWS RI在Java中创建一个WebService.在自动部署应用程序WAR时创建WSDL文件.问题是我希望WSDL文件中的参数(每个操作接收到)具有重要的名称,但它们显示为arg0,arg1,arg2 …有没有办法定义这个参数的名称,不使用默认名称?我已经实施了以下内容:…

python列表生成时 if_Python列表生成式

最简单的列表生成式l [x for x in range(10)]print(l)# 相当于l []for x in range(10):l.append(x)print(l)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]使用运算式的列表生成式l [x * x for x in range(10)]print(l)# 相当于l []for x in range(10):l.a…

如何编译和运行C++程序?

C 和C语言类似,也要经过编译和链接后才能运行。那么C是如何运行的呢,C和C的运行步骤是一样的。我们需要留意的是C源文件的后缀,以及GCC 中的g命令。 下图是 C/C 代码生成可执行文件的过程: C源文件的后缀 C语言源文件的后缀非…

java 控制台五子棋_java控制台五子棋

package frank;import java.io.*;public class App{//棋盘private String[][] board;//棋盘大小private static int BOARD_SIZE 15;//初始化棋盘public void initBoard(){board new String[BOARD_SIZE][BOARD_SIZE];for(int i 0; i < BOARD_SIZE; i){for(int j 0; j<…

pythonista脚本合集_GitHub - xchenhao/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...

You-are-Pythonista汇聚【从零单排】【实战项目】【Python面试题】【大航海】【Python应用】【Python错题集】【技术沙龙】【内推渠道】等等【人人都是Pythonista】由公众号【Python专栏】推出&#xff0c;请认准唯一标识&#xff1a;请仔细阅读本文档&#xff0c;尤其是使用说…

python配色_python语言再次解决文章配色难题

配色的选择是在我们论文文章画图过程中经常面临的一个问题。常用的R或python语言都内置了默认的颜色系统&#xff0c;强大的默认设置可以满足我们的绘图需求。但当我们需要绘制更多的图形时&#xff0c;固定的配色就会显得重复&#xff0c;此时通过自定义颜色就可以丰富图形的表…

java hashcode返回值_Java HashMap返回值未根据我对equals和hashcode的理解进行确认

以下代码示例的输出是&#xff1a;{1–e e2&#xff0c;2–e1 e1}package com.sid.practice;import java.util.HashMap;import java.util.Map;public class InputOutputPractice{public InputOutputPractice(){}public static void main(String[] args){Employee e new Inpu…

C++输入输出

C语言中&#xff0c;我们通常会使用 scanf 和 printf 来对数据进行输入输出操作。在C语言中&#xff0c;C语言的这一套输入输出库我们仍然能使用&#xff0c;但是 C 又增加了一套新的、更容易使用的输入输出库。 简单的输入输出代码示例&#xff1a; #include<iostream>…

python中的pymysql_(转)Python中操作mysql的pymysql模块详解

原文&#xff1a;https://www.cnblogs.com/wt11/p/6141225.htmlhttps://shockerli.net/post/python3-pymysql/----Python 3 进阶 —— 使用 PyMySQL 操作 MySQL前言pymsql是Python中操作MySQL的模块&#xff0c;其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者…

堆排序java实例_堆排序(示例代码)

前言&#xff1a;网上有很多堆排序的案例&#xff0c;我只想写自己堆排序。一&#xff1a;堆结构即&#xff1a;一个父节点最多只能有两个子节点(可以没有)&#xff0c;如下图图1图2图3 图4二&#xff1a; 数组与堆结构转换假设已知堆数组 int[] a {9,7,6,4,5,1,3,2,} 则相…

C++变量位置

C 在C语言部分做了细节上的改进&#xff0c;变量的定义位置就是其中之一。 请看下面的代码&#xff1a; #include <stdio.h> int main(){int a;scanf("%d", &a);int b;scanf("%d", &b);int c a b;printf("%d\n", c);return 0;…

java source folder作用_java项目把源码放到folder里,不是source folder,这个java代码还能被调用吗?...

看到这个问题&#xff0c;真心觉得初学入门就用IDE真心不是一个好方法。IDE屏蔽了太多基础知识&#xff0c;比如Java是需要编译的&#xff0c;运行的是编译后的class文件。编译命令有编译参数&#xff0c;执行命令有执行命令的参数。还有环境变量&#xff0c;classpath等。由于…

python 生成图片_python生成带有表格的图片

因为工作中需要&#xff0c;需要生成一个带表格的图片例如&#xff1a;直接在html中写一个table标签&#xff0c;然后单独把表格部分保存成图片或者是直接将excel中的内容保存成一个图片刚开始的思路&#xff0c;是直接生成一个带有table标签的html文件&#xff0c;然后将这个文…