前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java——包的定义及使用

Java——包的定义及使用

作者头像
Winter_world
发布2020-09-25 10:28:37
4990
发布2020-09-25 10:28:37
举报

以下讲解的内容,概念清除即可,实际上现在使用的IDE开发工具,很多操作不需要我们手动去完成了。

1、包的定义

任何操作系统中,都有一个统一的共识:同一个目录下不能存在相同的文件名称,但是,实际开发中又很难避免命名冲突矛盾的问题,为此,项目中往往会引入包的概念,所谓的包,存储时就是一个文件夹,在不同目录中可以存放相同的文件。

要想在Java中定义包,直接使用package关键字即可。

【举例】:定义包

代码语言:javascript
复制
package com.example.myapplication;

一旦程序中声明了包,就必须将生成的*.class文件保存在包里面,这个包并不是手工创建的,Java中专门提供了打包编译的操作:

如  javac -d . Hello.java

命令中的参数:

  • -d 生成目录,默认情况下是根据package定义的内容生成;
  • . 生成程序的保存路径,设置为 . 表示当前目录下保存;

此时若程序有包了,解释程序是必须加上包名称,eg: java 包名称.Hello

Java项目开发中,程序类必须要有包的定义才可以使用,没有包的类不存在,类的完整名称就是”包.类“。

2、包的导入

利用程序包可以将很多的*.class类归类保存,这样一来,可能存在包与包间进行类的互相调用问题,可以利用import语句解决。

【举例】:定义一个com.example.myapplication.util.Message类

代码语言:javascript
复制
package com.example.myapplication.util;

class Message {
    public void getInfo(){
        System.out.println("hello");
    }
}

【举例】:定义一个com.example.myapplication.test.TestMessage类

代码语言:javascript
复制
package com.example.myapplication.test;

import com.example.myapplication.util.Message;

public class TestMessage {
    public void printInfo(){
        Message msg = new Message();
        msg.getInfo();
    }
}

此时编译,出现如下错误: Message在com.example.myapplication.util中不是公共的; 无法从外部程序包中对其进行访问. 出错的原因是,Message类的定义中使用的是默认的访问控制权限,其特点是只能被同一包中的类所访问,不能被外包所访问,所以,学习包的定义后,对于代码有一些规范化要求:后续写的类都要求写在包中,且*.java文件中智只会有一个public class声明。

【小结】:

  • public class定义要求文件名与类名称保持一致,而在*.java文件之中只允许有一个public class定义,如果该类要被不同的包所使用,必须使用public class声明;
  • class定义的类文件名称可以与类名称不一致,但那是编译之后每个class声明的类都会生成一个*.class文件,此类只能在一个包中使用。

【举例】:修改Message类的定义

代码语言:javascript
复制
package com.example.myapplication.util;

publi class Message {
    public void getInfo(){
        System.out.println("hello");
    }
}

3、系统常见包

Java开发类库非常庞大,开发中也很多,比较常见的开发包如下:

  • java.lang:Object、String、Integer、Number都是这个包中定义的,从JDK1.1开始都是自动导入的;
  • java.lang.reflect:反射开发包,直接与框架开发有关系;
  • java.util:Java的工具包;
  • java.util.regex:正则表达式的开发包;
  • java.text:国际化程序支持包;
  • java.io包:数据流的开发包(Input、Output),前提:抽象类;
  • java.net:网络编程包,基本不用了;
  • java.sql:数据库的编程包;
  • java.awt、javax.swing:图形界面开发,现在基本也不用了;   --最初JDK1.0时,只提供有java.awt开发包,可以实现图形界面的开发,但是最初的设计需要大量使用windows的系统函数;   --JDK1.2(Java2)推出了轻量化的组件,有了swing开发组件;      J#  Java代码改了,变成了VB的形式-》C#-》MFC,VC的图形界面。
  • ​​​​​​​java.applet.*:网页上嵌入的java程序,是Java发展的标记,现在基本也不用了;

4、总结

1)以后的程序都要写上package打包;

2)import语句往往不需要编写,前提是:使用开发工具;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、包的定义
  • 2、包的导入
  • 3、系统常见包
  • 4、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档