包的作用
-
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
-
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
-
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位
包的实例
-
1、首先看一下我的文件tree:
-
➜ assert tree . ├── TestAssert.class ├── TestAssert.java ├── Vector.java └── com └── bruceeckel └── tools ├── Assert │ ├── Assert.class │ └── Assert.java └── HelloWorld ├── HelloWorld.class └── HelloWorld.java
-
-
2、看一下Assert的代码:
-
package com.bruceeckel.tools.Assert; public class Assert { private static void perr(String msg){ System.err.println(msg); } public final static void is_true(boolean exp) { if(!exp) perr("Assertion failed"); } public final static void is_false(boolean exp) { if(!exp) perr("Assertion failed"); } public final static void is_true(boolean exp, String msg) { if(!exp) perr("Assertion failed: " + msg); } public final static void is_false(boolean exp, String msg) { if(!exp) perr("Assertion failed: " + msg); } }
-
-
3、下面是helloworld包的代码:
-
package com.bruceeckel.tools.HelloWorld; public class HelloWorld { public void say(){ System.out.println( "my name is zhangyin test " ); } }
-
- 下面是测试代码:
-
import com.bruceeckel.tools.HelloWorld.*; import com.bruceeckel.tools.Assert.*; public class TestAssert { public static void main(String[] args) { HelloWorld stu = new HelloWorld(); stu.say(); Assert.is_true((2 + 2) == 5); Assert.is_false((1 + 1) == 2); Assert.is_true((2 + 2) == 5, "2 + 2 == 5"); Assert.is_false((1 + 1) == 2, "1 + 1 != 2"); } }
-
- 运行结果:
➜ assert java TestAssert my name is zhangyin test Assertion failed Assertion failed: 2 + 2 == 5
上面的实际例子很清楚的解释了package的用法,具体的代码请参考:
https://github.com/DyLanCao/java_example/tree/master/base/assert
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2018-12-06 快速熟悉Matlab
2017-12-06 解压缩遇到问题解决和分析