包 (package) 是组织类的一种方式. 使用包的主要目的是保证类的唯一性.
唯一性怎么证明呢?其实很简单:例如,在同一个包下,你在代码中写了一个 Test 类. 然后你的同事也可能写一个 Test 类. 如果出现两个同名的类, 就会冲突, 导致代码不能编译通过.因为这两个类在同一个包下.
再来看一个情况:
可以看到图中的两个类的名称虽然相同,但是并没有报错,原因是第一个TestDemo类的路径为com.baidu.www.TestDemo,第二个TestDemo类的路径为src.TestDemo,路径不相同,所以重名也不会报错.这样也说明了包的目的就是为了保证类的唯一性`,
路径称为
全限定名称
. 一个类的路径就成为.
=========================================================================
Java 中已经提供了很多现成的类供我们使用. 例如
public class TestDemo5 {
public static void main(String[] args) {
public class Test {
public static void main(String[] args) {
java.util.Date date = new java.util.Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
}
}
可以使用 java.util.Date
这种方式引入 java.util 这个包中的 Date 类
. 但是这种写法比较麻烦
一些, 可以使用 import 语句导入包
.如下所示:
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
如果需要使用 java.util
中的其他类, 可以使用 import java.util.*
import java.util.*;
public class Test {
public static void main(String[] args) {
Date date = new Date();
// 得到一个毫秒级别的时间戳
System.out.println(date.getTime());
}
}
但是我们更建议显式的指定要导入的类名
. 否则还是容易出现冲突的情况.
import java.util.*;
import java.sql.*;
public class Test {
public static void main(String[] args) {
// util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错
Date date = new Date();
System.out.println(date.getTime());
}
}
// 编译出错
Error:(5,9)java:对Date的引用不明确
java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配
在这种情况下需要使用完整的类名:
public class Test {
public static void main(String[] args) {
java.util.Date date = new java.util.Date();
System.out.println(date.getTime());
}
}
注意事项:
1:import 和 C++ 的 #include 差别很大. C++ 必须 #include 来引入其他文件内容, 但是 Java不需要.
import
只是为了写代码的时候更方便. import 更类似于 C++ 的 namespace 和 using
2:注意package和import的区别,
package是我们自定义的包
,而import是我们导入系统包
.
==============================================================================
基本规则
-
在文件的最上方加上一个
package
语句指定该代码在哪个包中. -
包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式
(例如com.bit.demo1 ). -
包名要和代码路径相匹配. 例如创建
com.bit.demo1
的包, 那么会存在一个对应的路径com/bit/demo1
来存储代码. -
如果一个类没有
package
语句, 则该类被放到一个默认包中.
1)在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包
2)在弹出的对话框中输入包名, 例如 com.bit.demo1
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a5d557b68f44e8a95f80ff5f23ebbe6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Yqq5Yqb5b2q,size_16,color_FFFFFF,t_70
必看视频!获取2024年最新Java开发全套学习资料 备注Java
,g_se,x_16)
3)在包中创建类, 右键包名 -> 新建 -> 类, 然后输入类名即可.
4)此时可以看到我们的磁盘上的目录结构已经被 IDEA 自动创建出来了
5)同时我们也看到了, 在新创建的 Test.java 文件的最上方, 就出现了一个 package 语句
=======================================================================
我们已经了解了类中的 public 和 private. private 中的成员只能被类的内部使用.
访问修饰限定符有四种
:public,private,protected,默认权限
这四种
如果某个成员不包含 public private protected关键字, 那么这个成员就已经是默认权限了,具有默认权限的成员可以在包内部的其他类使用, 但是不能在包外部的类使用.
下面的代码给了一个示例. Demo1 和 Demo2 是同一个包中, Test
是其他包中.
Demo1.java
package com.bit.demo;
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
高效学习视频
.
Demo1.java
package com.bit.demo;
更多:Java进阶核心知识集
包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等
[外链图片转存中…(img-CdSfdjbK-1716453300173)]