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          模块被依赖对象的位置, 用于生成

散列

只在创建, 更新和生成索引模式下有效的操作修饰符:

-0, --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的包的更多相关文章

  1. java基础-包

    浏览以下内容前,请点击并阅读 声明 为了使类型更容易查找和使用,避免命名冲突,以及可视范围的控制,程序员一般将相关的一些类型组合到一个包中.组合的类型包括类,接口,枚举和注释,枚举是一种特殊的类,而注 ...

  2. java中包命名常见规则

    做java的都知道java的包.类.接口.枚举.方法.常量.变量等等模型都有一套约定的命名规则! 学习每一种语言都应该学习对应语法和命名规则,以保持一个良好的编码风格.一来显示自己的专业.二来方便阅读 ...

  3. java jar包收集

    activation~与javaMail有关的jar包,使用javaMail时应与mail.jar (mail.jar和activation.jar)一起加入到lib中去,具体负责mail的数据源和类 ...

  4. java util包概述

    util是utiliy的缩写,意为多用途的,工具性质的包这个包中主要存放了:集合类(如ArrayList,HashMap等),随机数产生类,属性文件读取类,定时器类等类.这些类极大方便了Java编程, ...

  5. java.io包详细解说

    转自:http://hzxdark.iteye.com/blog/40133 hzxdark的博客 我不知道各位是师弟师妹们学java时是怎样的,就我的刚学java时的感觉,java.io包是最让我感 ...

  6. java.io包中的字节流—— FilterInputStream和FilterOutputStream

    接着上篇文章,本篇继续说java.io包中的字节流.按照前篇文章所说,java.io包中的字节流中的类关系有用到GoF<设计模式>中的装饰者模式,而这正体现在FilterInputStre ...

  7. java jar包解析:打包文件,引入文件

    java jar包解析:打包文件,引入文件 cmd下: jar命令:package包打包 javac命令:普通类文件打包 Hello.java: package org.lxh.demo; publi ...

  8. 如何理解和使用Java package包

    Java中的一个包就是一个类库单元,包内包含有一组类,它们在单一的名称空间之下被组织在了一起.这个名称空间就是包名.可以使用import关键字来导入一个包.例如使用import java.util.* ...

  9. JAVA导入包

    在package **;下面写入 import java.**.**; 1.使用Scanner工具类来获取用户输入的成绩信息 Scanner类位于java.util包中,使用时需要导入此包 1.1. ...

  10. java类包第十一章

    1.同一个包中的类互相访问,不需要制定包名. 2.java中包名的规则是全部使用小写字母 3.final 方法不能被覆盖, public class OuterClass {    innerClas ...

随机推荐

  1. Mysql高手系列,连载中

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 第1篇:mysql基础知识 第2篇:详解mys ...

  2. C# IE环境 - 重置IE( 注册表)

    IE设置,都可以通过注册表,修改.以下是一些常用的IE设置注册表修改~ 检查证书吊销 /// <summary> /// 检查证书是否吊销 /// </summary> /// ...

  3. goweb- 对请求的处理

    对请求的处理 Go 语言的 net/http 包提供了一系列用于表示 HTTP 报文的结构,我们可以使用它 处理请求和发送相应,其中 Request 结构代表了客户端发送的请求报文,下面让我们看 一下 ...

  4. Ext.ux.UploadDialog上传大文件 HTTP 错误 413.1 - Request Entity Too Large Web 服务器拒绝为请求提供服务,因为该请求实体过大。Web 服务器无法为请求提供服务,因为它正尝试与客户证书进行协商,但请求实体过大。

    问题描述 问题:HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 原因:Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(I ...

  5. CAD转DXF怎么转换?教你三种转换方法

    CAD图纸在我们日常生活中都是可见到的,因为CAD图纸文件的格式是多样的,在工作中就需要经常将CAD的格式进行转换.那CAD转DXF怎么转换呢?这个问题很多的小伙伴们都遇到过,下面小编就来教大家三种转 ...

  6. element的表单校验自动定位到该位置

    遇到的项目问题是在每个折叠面板里边都有不同的表单,用element上的校验时,若有没填写的表单或不符合表单格式的要求,则自动展开该折叠面板,且页面定位到没校验成功的表单   this.$refs.fo ...

  7. 在vue中添加ico图标

    准备:添加 ico图标在与index.html同级的目录 第一种方法: 在index.html中引入: <link rel="shortcuticon" type=" ...

  8. Python—创建进程的三种方式

    方式一:os.fork() 子进程是从os.fork得到的值,然后赋值开始执行的.即子进程不执行os.fork,从得到的值开始执行. 父进程中fork之前的内容子进程同样会复制,但父子进程空间独立,f ...

  9. PyCharm批量修改变量名

    方法和 PyCharm重命名文件时更改引用的地方相同

  10. Scrapy_redis主机连接虚拟机的数据库时显示积极拒绝,无法连接

    1.端口转发 在虚拟机设置各个数据库对应的端口转发 2.修改数据库配置文件 默认只有本机的IP才可以访问,其它IP就连不上了,修改bind ip  为0.0.0.0 3.重启服务(或者直接重启虚拟机) ...