包的定义

包的定义

  包的本质实际上就属于一个文件夹。在我们的项目里面你很难避免重复类名称出现,而且如果所有的*.class文件都存放一个目录中,就可能出现覆盖的情况,而这样就会造成项目的开发困难, 为了解决这样的冲突,所有java的程序应该保存在各自的目录里,这个目录就是包

  定义包,只需要在*.java源文件的第一行编写:package包名称的语句即可。

 打包编译:javac -d . 类.java生成目录

  “-d”:表示生成目录 根据package定义生成

  “.”:在当前所在目录中生成目录;

按照此种方式编译完成之后发现自动的会在当前目录中生成相应的文件夹以及保存各自的*.class文件

一旦程序类上出现了包名称之后,那么在进行执行的时候就需要带上包名称,而不是进入到包里面执行,也就是说完整的类名称,

“包.类”:java cn.gl.com.Hello

  在以后的项目开发的过程之中。所有的*.java文件都一定要用package定义包,没有包的类是不存在的。

1 package cn.gl.com;
2 public class Hello{
3     public static void main(String args[]){
4         System.out.println("Hello world!");
5     }
6 }

包的导入

开发之中一旦使用了包的定义后,实际上就相当于把一个大的项目,分别按照一定的要求保存在了不同的包里面(文件夹里面);但是这些程序彼此之间一定会发生互相调用的情况。

范例:编写一个简答的程序类

1 package cn.gl.util;
2 class Message{
3     public void print(){
4         System.out.println("【Message】Hello World!");
5     }
6 }

范例:希望通过不同的导入以上的程序类

1 package cn.gl.text;
2 import cn.gl.util.Message;//导入程序类
3 public class Mytest{
4     public static void main(String args[]){
5         Message msg=new Message();
6         msg.print();
7     }
8 }

如果从正常的情况来讲,Mytest类引用Message类,从编译的情况来说,我们应该先编译Message再去编译Mytest 

打包编译: 

  另外需要注意一点,在上面的程序中导入的是“import 包.类”这样只会导入一个类,如果说现在,想导入包中多个类,我们建议可以直接采用通配符“*”完成

import cn.gl.util.*;//导入程序类

  这种“*”并不意味着要将该包中的类全部导入,而是根据你的需求进行导入。

  但是在很多的发开情况中,也有可能出现不同包但是相同类的情况,

1 package org.apache.util;
2 public class Message{
3     public void info(){
4         System.out.println("【Message】世界和平!");
5     }
6 }  

现在由于某种需求Mytest程序类里面需要同时导入这两个包,那么这个时候如果你还是直接使用Message类,就会造成一个编译上的歧义,或者采用全名的方式定义

系统常用包

  java.lang:系统常用的基础类,例如:String ,Object,此包从JDK1.1开始主动导入

  java.lang.reflect:java反射编程包;

  java.math:数学支持包,但是支持有限;

  java.net:进行网络编程的开发包

  java.sql:进行数据库开发的支持包;

  java.util:是java提供的工具程序包;

  java.IO:IO编程的开发包

  java.applet包:进行Applet程序的开发包,Applet程序是从1995年开始的,java最主要的技术,现在几乎所有的浏览器都不用了,不支持了!

  java.awt,javax.swing:UI开发包,主要进行UI界面编写, 

    java2(最主要的支持就是javax.swing包);

原文地址:https://www.cnblogs.com/Tony98/p/10424706.html