java中的包

包 (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关键字, 那么这个成员就已经是默认权限了,具有默认权限的成员可以在包内部的其他类使用, 但是不能在包外部的类使用.

下面的代码给了一个示例. Demo1Demo2 是同一个包中, Test 是其他包中.

Demo1.java

package com.bit.demo;

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

image

高效学习视频

.

Demo1.java

package com.bit.demo;

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

[外链图片转存中…(img-CdSfdjbK-1716453300173)]

高效学习视频

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值