包package详解
一.情景需求:
1.描述:
新建一个文件名Demo1,在里面写一个类文件Demo1,然后再新建一个文件名Demo2,在里面类文件仍然以Demo1命名,先对Demo1进行编译,然后再对Demo2进行编译,再运行Demo1的时候,输出的是Demo2的main方法因为后编译的Demo2也会产生一个Demo1.class这个文件,后编译的就会把前面编译的给覆盖掉。
2.实例:
(1) Demo1代码如下:
class Demo1{public static void main(String[] args){System.out.println("这个是Demo1的main方法");}
}
(2) Demo2代码如下:
class Demo1{public static void main(String[] args){System.out.println("这个是Demo2的main方法");}
}
(3) 运行结果:
(4) 存在的问题:如果出现相同的类名,那么后编译的就会把前面的覆盖掉。
(5) 解决办法:
包就可以解决这个问题,类名覆盖的情况在现实开发中也存在很多,假设一个项目组10个人,这10个人各干各的,最终把代码合成一块,如果这些人中一旦写了同样的类名,这时候后提交给服务器的就会把前面提交给服务器的给覆盖掉,包就可以解决类名重复的问题。
二.包:
1.Java中的包就相当于windows中的文件夹。
2.包的作用:
(1) 解决类名重复产生冲突的问题。
(2) 便于软件版本的发布。
3.定义包的格式:package 包名;
4.包名命名规范:包名全部小写。
5.包语句要注意的事项:
(1) package语句必须位于Java文件中的第一个语句。import语句要放在package语句的下面。
(2) 如果一个类加上了包语句,那么该类的完整类名就是: 包名.类名
(3) 一个Java文件只能有一个包语句。
6.问题:当我们使用包以后,每次编译的时候都需要自己创建一个文件夹,把对应 的class文件存储到文件夹中。这样会很繁琐
解决方法:编译时候使用javac -d 指定类文件的存放路径 java源文件(javac -d . Demo1.java其中的.表示当前路径下。)
7.实例:
package aa;
class Demo1{public static void main(String[] args){System.out.println("这个是Demo1的main方法");}
}
运行结果如下图所示:
三.导包语句:
1.存在的问题:有了包之后类与类之间的访问每次都必须 要写上包名!这样会显得很繁琐。
解决方案:sun提供了导包语句可以让我们解决该问题。
2.导包语句的作用:简化书写。
3.导包语句的格式: import 包名.类名; (导入xxx包中的某个类)
4.导包语句要注意的细节:
(1) 一个Java文件中可以出现多句导包语句。
(2) "*"是 导包语句的通配符。可以匹配任何的类名。(*号用作导包语句,只能用来匹配类名,不能匹配包名)
(3) import aa.*; 是不会作用于aa包下面的子包的。
5.推荐使用:import 包名.类名; 因为使用*通配符会导致结构不清晰。
6.误区:千万不要认为导包语句就是把一个类导入到内存中,导包语句只可以简化书写。所以,import aa.*;这种语法并不会使得效率降低,因为只有当我们使用到哪个类,这个类才会被加载到内存中。没有使用时是绝对不会加载到内存中的。
7.import的使用场景(什么时候使用import语句?)
(1) 相互访问的两个类不是在同一个包下面,这时候就需要使用到导包语句。
(2) java.lang 是默认导入 的,不需要我们自己导入。
包package详解相关推荐
- python哪里下载import包-【Python实战】模块和包导入详解(import)
1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...
- jmeter 导入java,JMeter导入自定义的Jar包的详解教程
1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...
- npm命令--安装依赖包--用法/详解
原文网址:npm命令--安装依赖包--用法/详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍npm如何安装依赖包. 用法 命令 作用 详述 npm install <pkg> //同 ...
- Java开源项目Hibernate包作用详解
Java开源项目Hibernate包作用详解 本文引自:http://hi.baidu.com/nick6610/blog/item/70b58afa0d0eab9259ee90f7.html Jav ...
- 负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解
负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负载均衡的基 ...
- 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解
本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二: 一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...
- 浏览器实现抓包过程详解
浏览器实现抓包过程详解 几乎所有浏览器都提供了抓取数据包的功能,因为浏览器为抓包提供了一个专门的操作界面,因此这种抓包方式也被称为"控制台抓包".本节以 Chrome 浏览器为例进 ...
- python解包什么意思_python解包用法详解
对于一堆资料,我们可以把它分给不同的人使用,这个分散的过程,我们可以看成是解包方法是实现.当然实际python解包的使用会相对复杂一点,我们会对常见的列表.函数等进行操作.下面我们就Python解包的 ...
- HTTP协议版本介绍以及使用Wireshark工具针对HTTP进行抓包分析详解
一.http协议版本介绍 http:Hyper Text Transfer Protocol 超文本传输协议,是互联网应用最为广泛的一种网络协议,主要用于Web服务.通过计算机处理文本信息,格式为HT ...
最新文章
- UIWebView和UIActivityIndicatorView的结合使用
- 大脑模拟AI学习策略,这项逼近反向传播的研究登上《自然-神经科学》
- 开发人员最喜爱的十大免费的Visual Studio插件
- Delphi用ini文档实现界面无闪烁多语言转换
- 信息学奥赛一本通 2064:【例2.1】交换值
- python-函数的返回值
- centos7 编译php5.3,centos7下编译安装php7.3
- 神技能!在上司靠近座位时,用人脸识别技术及时屏幕切换
- 5.数据中台 --- 数据汇聚联通:打破企业数据孤岛
- animate auto
- oracle 关系 表 视图_在Oracle数据库中,表和视图的区别与联系
- 防止vps上SSH被猜测密码
- 企业数字化/数智化转型(一):数智力创新2.0
- Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx)
- 为什么工厂要实现自动化、智能化?
- VENC 通道属性配置参数理解
- Neo4j ① <图论>图,节点,关系,属性<知识图谱和图库>图谱,图库,优势<基础>模块,应用场景,环境搭建,浏览器
- 技术分享 | 服务端接口自动化测试, Requests 库的这些功能你了解吗?
- 数据库原理 ODBC概述
- Javascript进阶笔记
热门文章
- 此方案适用于:手机能找到的WiFi,但笔记本查找不到该WiFi的情况,亲测有效
- action mutation 调用_浅谈vuex之mutation和action的基本使用
- CISP 老师课堂笔记
- 路由器显示不安全网络连接到服务器地址,无线网显示不安全网络怎么解决?
- 在 windows 下安装和简单配置 trac 0.12
- SpringCloud微服务完整项目实例源码
- 瞎扯Boost、Code::Blocks和D
- oracle REPLACE 函数 介绍
- Spring 几种事务理解测试
- python处理word_python处理word文档