目录
包 及 包的作用?
- 什么是包?:比如身份证上面的详细地址,快递的 收货地址。等,这些地址对应Java 都可以称之为包。历史比如:吾乃常山赵子龙 ,吾乃燕人张翼德
- 包的作用:为了解决类的重名问题,即不同的包中的类的名字可以相同。解决权限问题。(实际包 对应的就是 电脑上面的盘符的 目录!)。当类很多的时候,可以很方便的分门别类的管理类。
- 上线后的代码的打包操作就是根据package关键字来进行打包的。
包的定义:
- Java中通过 package 关键字定义一个包的名字,一般用IDE ,IDE 都会自动在代码的第一行声明包。
- 包名定义:
- 名字全部小写。
- 可以有字母、数字、下换线、中间用 . 隔开,词与词之间不能用数字开头。
- 一般都是公司或者组织的域名倒着写, 比如: com.alibaba.xxxx ,com.huawei.xxx ,com.tencent.xxx ,com.jd.xxx ……,
- 加上模块名字:比如: com.jd.login , com.jd.register ,com.jd.search ……
- 细分: com.公司名.项目名.业务模块名
- 不能使用Java中的关键字和保留字和操作系统中的关键字:比如 windows中 不能使用系统的关键字: nul,con,com1 -- com9 ……
- 包声明的位置必须在非注释性代码的第一行。
包的导入:
- 通过import关键字导入一个包,导包的作用就是为了进行所使用的类的包的位置定位。
- 导入包的语句:在包声明的和类名的中间进行导入!
- 使用不同包下的类需要导包: improt ***.***. ……;比如:
import java.util.ArrayList;
- 导包以后,如果还想用其他包中同名的类的时候,在使用该类的时候就必须要手动写包所在的位置。一个类中不允许导入两个不同包中相同的类,只有在使用的时候写类的全限名即可!比如:
- 在同一个包中的类的时候不需要导包,直接使用即可。
- 在java.lang包下的类,可以直接使用无需导包。因为JVM知道 这个包下的类使用频率是最高的,所以索性就不需要开发者手动导包。编译、运行的时候会自动进行检查。
- IDE中可以设置自动导包:比如 Intellij IDEA
- 当使用同一个包中类达到一定的数量的数量的时候,可以导入 *: 即导入这个包下所有的类。比如:,IDEA中也可以设置:
- 在Java中导包没有包含与被包含的关系,比如有个类: com.alibaba.Platform 和 com.alibaba.login.Login,如果要在不同包的类中使用这两个类,那么就需要导入,import com.alibaba.Platform; 和 import com.alibaba.login.Login; 为了避免产生歧义。如果只是写成 import com.alibaba.*; 的话,那么就指定使用该包下面的类,而不能使用它子包下的类。如果写成 import com.alibaba.*; 可以使用使用它子类包括子包下面的全部类的话,那么如果父包中也有一个Login类的话com.alibaba.Login; 那么这种情况就会产生歧义,JVM编译和运行的时候并不知道使用这两个包中的具体 哪一个!
包的静态导入(几乎不用):
顾名思义:就是导入使用的那个类中的全部静态的部分。
语法格式:import static 包名.类名.*;
比如使用Math类:
package indi.jonny.other;
import static java.lang.Math.*;
/**
* @version 1.0
* @package indi.jonny.other
* @description TODO
* @author: jonny-zz
* @date: Created at 2021-05-21 11:03.
*/
public class Test {
public static void main(String[] args) {
// 圆周率
System.out.println(PI);
// 向上取整
System.out.println(ceil(1.1));
// 向下取整
System.out.println(floor(1.9));
// 四舍五入
System.out.println(round(5.5));
// 开正平方根
System.out.println(sqrt(16));
// Math.random() : [0.0 ~ 1.0) 范围之中的随机数
// 调用本类的中random() 方法;
System.out.println(random());
}
/**
* 如果使用静态导入后,同一个类中有相同的方法名的方法的时候,会优先走本类的方法(就近原则)
* (JVM执行的不会舍近求远的)
* @return
*/
public static double random(){
return 100.1001;
}
}
test: