Java 包的使用
Java 包
Java面向对象的核心的概念:类、接口、抽象类、对象;【主体】
包的定义:
指的是一个程序的目录,在最早的时候,如果要开发一个程序,只需要定义一个Java文件,而后在这个文件中编写所需要的类文件。
在编译之后程序直接保存在根目录下,而利用包可以实现同一个程序的拆分 即可以根据需求,把代码程序保存在不同的目录下。
包的定义可以使用关键字:package
|
package cn.mldn.demo ; // 定义的包 public class Hello { public static void main(String [] args) { System.out.println("Hello,World!") ; } } |
定义的包后有 点 就表示子目录的含义;如果类中有了包的定义,那么就必须让其保存在特定的目录中,但不要自己手工创建目录,应该使用命令行功能自动生成目录:
·打包编译: javac –d .***.java
-d 表示生成目录,根据package的定义生成目录
。 表示保存的路径,如果为‘。’表示在当前所在的路径下生成
--执行完命令后,会在制定的路径下生成package所定义的目录,class文件也会编译在目录下,但代码*.java文件不变位置;且在java解释程序的时候,不要进入包目录中解释class文件,而是在包的外面,输入类的完整名称(包.类名称);
实际开发中,所有的类都定义在包之中。
包的导入:
使用包的定义,可以将一个完整的程序拆分为不同的文件进行分别的保存,如此会导致一个开发问题——不同的包直接可能存在相互的访问,由此就需要使用 包的导入 来操作
包的导入的关键字: import
|
包 |
包的导入 |
|
package cn.mldn.util ; class Messages { public void print() { System.out.println("Hello,World!!!") ; } } |
package cn.mldn.test ; import cn.mldn.util.Messages ; // 导入util包中要使用的类 public class TestMessage { public static void main(String [] args) { Messages msg = new Messages() ; msg.print() ; } } |
上述的程序在解释运行的时候会报错,

结合报错内容,对程序做出如下修改:
|
包 |
包的导入 |
|
package cn.mldn.util ; public class Messages { public void print() { System.out.println("Hello,World!!!") ; } } //对Messages类进行了public公共类的声明 |
package cn.mldn.test ; import cn.mldn.util.Messages ; // 导入util包中要使用的类 public class TestMessage { public static void main(String [] args) { Messages msg = new Messages() ; msg.print() ; } } |
总结:
文件名称必须与类名称保持一致,在一个*.Java文件中里面只可以有一个public class声明,如果一个类被其他包访问,一定要被定义为public class(公共类);
同理,class文件与类名称可以不一致,但是要求一个*.java文件中可以有多个class定义,编译后会形成多个class文件,如果一个类使用的是class定义,那么表示该类只可以被本包所访问。
实际中,Java编译器考虑多个java文件相互引用的情况的产生,为此Java提供了通配符*的操作,【javac –d . *.java】来解决该问题,即可通过一个命令,同时编译所有的Java文件,不用担心编译的顺序等问题。
但是在进行包的导入的时候也发现了一个局限的问题,如果需要导入一个包中的多个类,非常麻烦;Java提供了通配符功能即【import 包 .*】 实现一次性导入包中所有可访问的类。
开发中,可能会遇到同一个类中导入不同的包,不同的包中可能有同名类;在这种情况下,程序会报错“类的引用不明确”,所以在遇到这个问题的时候,需要在使用类的时候加上类的完整名称(包 . 类);明确类的引用;如果认为程序中的导包操作会出现冲突,那么就在程序的外包类中,写处完成的类名称。
系统常见的包:
Java本身提供了大量的程序开发包,除了官方提供的开发包,还有很多第三方提供的开发包。 基本上所有包都有提供。
在Java-API文档里package目录中:
|
包 |
包含的类/功能 |
备注 |
|
Java.lang |
String object Integer等类 |
JDK1.1+ 自动导入 |
|
Java.lang.reflect |
反射开发包 |
反射开发包 |
|
Java.util |
链表类等 |
Java的工具包 |
|
Java.util.regex |
正则工具包 |
|
|
Java.text |
国际化处理程序包 |
|
|
Java.io |
进行程序输入、输出处理以及文件操作功能包 |
|
|
Java.net |
网络编程开发包 |
|
|
Java.sql |
数据库程序开发包 |
|
|
Java.applet |
Applet程序开发包(在网页上嵌套的程序) |
淘汰【类似JavaScript】 |
|
Java.awt |
进行单机版界面编写 |
JDK1.0 |
|
Javax.swing |
JDK1.2 |
Jar命令:
在任何的项目中一定存在大量的 *.class 文件;在交付用户使用前,会使用jar命令,对class文件进行压缩,并且压缩的都是以包为单位;
定义多个java文件,随后打包编译java文件形成多个class文件;
其后,使用jar文件压缩class包文件,【jar –cvf my.jar cn】

命令剖析:jar命令 -创建文档 输出过程 档案名 压缩名.jar 压缩对象:
F:\>jar –help
用法: jar [OPTION...] [ [--release VERSION] [-C dir] files] ...
主操作模式:
-c, --create 创建档案
-i, --generate-index=FILE 为指定的 jar 档案生成
索引信息
-t, --list 列出档案的目录
-u, --update 更新现有 jar 档案
-x, --extract 从档案中提取指定的 (或全部) 文件
-d, --describe-module 输出模块描述符或自动模块名称
在任意模式下有效的操作修饰符:
-C DIR 更改为指定的目录并包含
以下文件
-f, --file=FILE 档案文件名。省略时, 基于操作
使用 stdin 或 stdout
--release VERSION 将下面的所有文件都放在
jar 的版本化目录中 (即 META-INF/versions/VERSION/)
-v, --verbose 在标准输出中生成详细输出
在创建和更新模式下有效的操作修饰符:
-e, --main-class=CLASSNAME 捆绑到模块化或可执行
jar 档案的独立应用程序
的应用程序入口点
-m, --manifest=FILE 包含指定清单文件中的
清单信息
-M, --no-manifest 不为条目创建清单文件
--module-version=VERSION 创建模块化 jar 或更新
非模块化 jar 时的模块版本
--hash-modules=PATTERN 计算和记录模块的散列,
这些模块按指定模式匹配并直接或
间接依赖于所创建的模块化 jar 或
所更新的非模块化 jar
-p, --module-path 模块被依赖对象的位置, 用于生成
散列
只在创建, 更新和生成索引模式下有效的操作修饰符:
-, --no-compress 仅存储; 不使用 ZIP 压缩
其他选项:
-?, -h, --help[:compat] 提供此帮助,也可以选择性地提供兼容性帮助
--help-extra 提供额外选项的帮助
--version 输出程序版本
如果模块描述符 'module-info.class' 位于指定目录的
根目录中, 或者位于 jar 档案本身的根目录中, 则
该档案是一个模块化 jar。以下操作只在创建模块化 jar,
或更新现有的非模块化 jar 时有效: '--module-version',
'--hash-modules' 和 '--module-path'。
如果为长选项提供了必需参数或可选参数, 则它们对于
任何对应的短选项也是必需或可选的。
Jar文件中有一个META-INF/MANIFEST.MF文件,文件中存放文件辅助信息;
Jar文件的使用:
直接压缩生成的jar文件并不可以直接使用,jar文件必须配置 CLASSPATH 才可以加载;
SET CLASSPATH = . ;jar文件位置
同样可以在系统环境变量中配置:
在CLASSPATH中配置,在原有的内容后面加上Jar文件的位置
设置完毕后,即系统就识别jar文件为一个目录文件的存在,即可以看见目录中的包了。
Java包的总结:
开发程序均要求有包的存在
如果不同包之间的类发生了冲突必须写出完整的类名称
使用第三方的jar文件,必须配置classpath系统环境变量【配置jar路径】
Java 包的使用的更多相关文章
- Android 虚拟机Dalvik、Android各种java包功能、Android相关文件类型、应用程序结构分析、ADB
Android虚拟机Dalvik Dalvik冲击 随着Google 的AndroidSDK 的发布,关于它的API 以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举.不过,其中的一个话题在J ...
- 在Eclipse工具里创建maven的web工程,在建立src/main/java包出现The folder is already a source folder.解决
1. 与创建普通java工程一样,点击右键找到New菜单,在弹出的界面输入maven ---->>点击maven Project------>>点击next 2 进入下一个界 ...
- android工程gen目录中R.java包名是怎么确定
新建一个工程,包名用的com.mythroad.adskiller, 后来觉得不好,又改成com.mythroad.adsinscepter,但是我发现gen下的R.java文件的包名还是原来的com ...
- JavaSE复习日记 : java包机制
这里是第一个文件,命名为JavaSE_01.java,我在这个文件里面声明了一个m1()方法,通过包机制,我将在另外一个文件夹里访问这个文件里的东西,确切的说是访问这个文件生成的一个class文件; ...
- 6、Java包的命名与划分
6.包的命名与划分 (一)使用Java包的目的 在了解做一件事之前,需要了解做这件事的目的.而使用Java包的目的大概如下: 1 对类进行归类,便于开发查找. 2 将软件在代码层面上模块化 ...
- 列出JDK中常用的Java包
列出JDK中常用的Java包 1.java.lang 2.java.sql 3.java.io 4.java.math 5.java.text 6.java.net 7.java.util 8.jav ...
- Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包
Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...
- java~IDEA引用包时分组所有java包
对于java系统包,我们的IDEA里开发项目时,如果你使用了java系统包,如import java.util,那么,你可以把它和其它第三方的包分开,这样更清晰,我们可以在设置里,代码风格,java ...
- C#调用java包里的方法
用IKVM,步骤: 下载ikvmbin-7.2.4630.5.zip,解压,把bin目录所在路径加到环境变量path里 2.电脑开始->CMD,输入ikvmc –out:”输出dll文件的路径” ...
- static特别用法【静态导包】——Java包的静态导入
面试我问你static关键字有哪些作用,如果你答出static修饰变量.修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满意,因为能看出你非常热 ...
随机推荐
- MVC过滤器:过滤器执行顺序
如果某个Action过滤器运用了多种过滤器,那么过滤器的执行顺序是如何呢? 规则一:不同类型的过滤器有一个先后顺序 即执行顺序是:授权过滤器->动作过滤器->结果过滤器->异常过滤器 ...
- .net core 日常学习第一篇
使用vs 2015 update3 版本,安装sdk:https://dotnet.microsoft.com/download 可以运行 .net core 1.x版 或者使用vs 2017及以上 ...
- 项目部署到Linux上遇到的坑
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.本地Navicat for MySQL无法连接至服务器(Centos 7 x86_64 bbr) 1045错误: 解决步骤: 1.查看用户名密 ...
- SSM框架之SpringMVC(1)入门程序
SpringMVC(1) 1.三层架构和MVC 1.1. 三层架构 咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序 使用Java语言基本上都是开发B/S架构的程序,B ...
- cesium 入门开发系列矢量瓦片加载展示(附源码下载)
前言 cesium 入门开发系列环境知识点了解:cesium api文档介绍,详细介绍 cesium 每个类的函数以及属性等等cesium 在线例子 内容概览 cesium 实现矢量瓦片加载效果 源代 ...
- pip方式安装Jupyter
pip方式安装Jupyter 如你的cmd命令窗口无法识别pip命令,请配置下环境变量(将python的''Scripts''文件夹路径添加至''path''变量里面). 使用以下命令更新pip和安装 ...
- android 对于asset和raw下文件的操作
Android 中资源分为两种,一种是res下可编译的资源文件, 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,访问也很简单,只需要调用R.XXX.id即可;第二种就是放在assets ...
- linux下关闭selinux
找到 /etc/sysconfig/selinux 文件 修改 SELINUX=enable 使之 SELINUX=disable 重启 reboot
- HashMap默认加载因子为什么选择0.75?(阿里)
Hashtable 初始容量是11 ,扩容 方式为2N+1; HashMap 初始容量是16,扩容方式为2N; 阿里的人突然问我为啥扩容因子是0.75,回来总结了一下: 提高空间利用率和 减少查询成本 ...
- CF1248E Queue in the Train
题目链接 problem 火车上的一列人要去排队接水.每个人都会在某个特定的时刻口渴.口渴之后他要去排队接水,如果他前面的座位有人已经在排队或者正在接水,那么他就不会去排队.否则他就会去排队.每个人接 ...