包的学习
● 包的三大作用
- 
区分相同名字的类 
- 
当类很多时,可以很好的管理类 [看JavaAPI 文档] 
- 
我们可以找到JDK安装的目录 ,从中找到src 也就是存放源码的目录 ,在里面可以看到util ,进入就可以看到util包中含有的类
包基本语法
package com.hspedu;
说明:
- 
package 关键字,表示打包. 
- 
com.hspedu: 表示包名 
● 包的本质分析(原理)
实际上就是创建不同的文件夹来保存类文件
计算机内部存放多个文件夹 ,例如文件夹AA存放bbb 其中存放 Dog类 Person类 等其他类
另外一个文件夹ccc存放文件夹ddd ,其中包含了类 Dog类Cat类 ,虽然和上面的Dog类有所重名但是二者并非在一个文件夹 ,即使重名也是可以的
快速入门案例
使用打包技术解决 ,不同包下创建重名类的问题
首先我们在IDEA中找到src ,右键选择创建package ,输入com.xiaoming ,创建之后此时同样的文件夹内部 ,就会出现一个com目录 ,点击进去就可以看到xiaoming的目录(也就是子包) ,因此 . 的意思就表示分级 ,最前面的就是一级目录(也就是com) ,之后创建的就是二级目录(也就是xiaoming )
在这之后 ,我们创建一个新的包叫做 com.xiaoqiang , 创建之后 ,可以看到 ,同名文件目录下 ,com的内部就多了一个xiaoqiang的目录
 创建一个use的包 ,里面创建一个Test的类 ,之后试着输入 new Dog 此时就会提示 ,是调用哪一个包中的类 ,我们选择第一个也就是xiaoming的类 
package com.use;
import com.xiaoming.Dog;
//可以看到自动将小明的Dog导入了进来
public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        System.out.println(dog);
        //此时打印出来的结果为: com.xiaoming.Dog@16d3586
        //这就是该类的hashcode码的十六进制的写法
    }
}
另外如果在导入一个包的类的情况下 ,再去导入另外一个包同名的类的话 ,IDEA就会自动将该类进行标注
com.xiaoqiang.Dog dog1 = new com.xiaoqiang.Dog();
System.out.println(dog1);
//如果不去标注仍然使用的是Dog的话 ,那么就会使用xiaoming包中的类而非是小强的类
同时导入不同的包同样的类是不允许的 ,因此要按照以上的做法
●包的命名
命名规则:
只能包含数字、字母、下划线、小圆点 . ,但不能用数字开头,不能是关键字或保留字 demo.class.exec1 : 错误 ,存在关键字 class demo.12a : 错误不能以数字开头 demo.ab12.oa
命名规范
一般是小写字母 + 小圆点一般是 com.公司名.项目名.业务模块名 比如: com.hspedu.oa.model; com.hspedu.oa.controller; 举例: com.sina.crm.user //用户模块 com.sina.crm.order // 订单模块 com.sina.crm.utils //工具类
● 常用的包
一个包下,包含很多的类 , java中常用的包有: java.lang.*// lang包是基本包,默认引入,不需要再引入. java.util.*//util 包,系统提供的工具包,工具类 ,使用Scanner java.net.*//网络包,网络开发 java.awt.*//是做java的界面开发 GUI
● 如何引入包
com.hspedu.pkg : Import01.java 语法: import 包; 我们引入一个包的主要目的是要使用该包下的类 比如import java.util.Scanner;就只是引入一个类Scanner。 import java.util.*;//表示将java.util 包所有都引入 案例: 使用系统提供 Arrays 完成 数组排序
package com.edu.pkg;
//import java.util.Scanner; //表示只会引入java.util包下的Scanner
//import java.util.*; //表示引入java.util包下的所有类都引入(导入)
//建议, 需要使用到哪个类就导入哪个类即可 ,不建议使用新的方式导入
import java.util.Arrays;
public class import01 {
    public static void main(String[] args) {
        //案例: 使用系统提供 Arrays 完成 数组排序
        int[] arr = {-1,20,2,13,3};
        //传统方法是自己编写使其进行排序
        //同时我们也可以使用系统提供的方法来完成排序
        Arrays.sort(arr);
        //输出排序结果
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
    }
}
● 注意事项和使用细节
1.package 的作用是声明当前类所在的包,需要放在class的最上面,一个类中 最多只有一句package 2.import指令 位置放在package 下面,在类定义前面,可以有多句且没有顺序要求。
类定义的进一步完善
class
类名{
成员变量/属性;
}
>>
class 类名{
成员变量/属性;
成员方法;
}
>>
class 类名{
成员变量/属性;
构造器
成员方法;
}
>>
package 包名
class 类名{
成员变量/属性;
构造器
成员方法;
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号