包+类导入+静态导入+类放入包中+包作用域

【0】README

0.1)本文转自 core java volume 1, 旨在理清 包和类导入的相关知识;


【1】 包

1.1) java 允许使用包将类组织起来,包可以方便组织代码,并将自己的代码与别人提供的代码库分开管理;
1.2) 标准的java 类库分别在多个包中, 包括 java.lang、java.util 和java.net;所有标准的 java 包都处于java 和 javax 包层次中;
1.3) 使用包的主要原因是确保类名的唯一性;且为了保证包名的绝对唯一,Sun 公司建议将公司的因特网域名以逆序的形式作为包名;


【2】 类的导入

2.1)一个类可以使用所属包中的所有类,以及其他包中的共有类;
2.2)我们可以采用两种方式访问另一个包中的公有类:

  • 第一种方式是: 在类名之前添加完整的包名; java.util.Date today = new java.util.Date();
  • 第二种方式是:更简单的方式是 使用import 语句;

Attention)需要注意的是, 只能使用星号(*)导入一个包, 而不能使用 import java.* 或 import java.*.* 导入以 java为前缀的所有包;
2.3)出现的问题+解决方法:当类名发生命名冲突的时候,就要注意包名, 看个荔枝:
如,java.util 和 java.sql 都有日期类Date, 如果导入了两个包:

import java.util.* ;
import java.sql.*;
  • 2.3.1)问题: 那么在程序中使用的Date类的时候,就会出现编译错误;
  • 2.3.1)解决方法: 此时编译器无法确定程序使用的是哪一个Date 类;可以增加一个 import语句来解决这个问题:
import java.util.* ;
import java.sql.*;
import java.util.Date ;
  • 2.3.2)问题: 如果这两个 Date 类都需要使用;
  • 2.3.2)解决方法: 在每个类名的前面加上完整的包名:
java.util.Date today = new java.util.Date();
java.sql.Date today = new java.sql.Date();

在包中定位类是编译器的工作, 类文件中的字节码肯定使用完整的包名来引用其他类;


【3】 静态导入

3.1) import语句不仅可以导入类,还增加了导入静态方法和静态域的功能;
3.2)看个荔枝(导入静态域 和 静态方法):
如,添加一条指令, import static java.lang.System.*; 就可以使用 System类的静态方法和静态域, 而不必加类名前缀:

out.println("hello, world");
exit(0);

3.3)看个荔枝(导入特定的方法和域):

import static java.lang.Math.sqrt;
import static java.lang.Math.pow;
import static java.lang.System.out;public static void main(String[] args){double aDouble;aDouble = sqrt(4);out.printf("%4f", pow(aDouble, 2));}

这里写图片描述
我们还可以看到 sqrt(pow(x, 2) + pow(y, 2)) 看起来要比 Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) 清晰多了;


【4】 将类放入包中

4.1)要想将类放入包中, 就必须将包的名字放在源文件的开头, 包中定义类的代码之前;
4.2)默认包:如果没有在 源文件中放置 package 语句, 这个源文件的类就被放置在默认包中;
4.3)将包中的文件放到与完整包名匹配的子目录中, 如, com.horstmann.corejava 包中的所有源文件应该被放置在 子目录 com/hosrtman/corejava 中;编译器将类文件也放在相同的目录结构中;
4.4)需要注意: 编译器对文件(带有文件分隔符 和 扩展名.java 的文件)进行操作, 而java 解释器加载类(带有点(.)分隔符), 如(.号 和 /号 的区别)

javac com/mycompany/Pay.java
java com.mycompany.Pay.java

Alert)编译器在编译源文件的时候不检查目录结构(但该程序却无法运行):
如, 假定有一个源文件开头有下列语句: package com.mycompany;即使这个源文件没有在子目录 com/mycompany 下,也可以进行编译;如果它不依赖于其他包, 就不会出现编译错误。但是,最终的出程序将无法运行,因为虚拟机找不到类文件;


【5】包的作用域

1)如果没有指定 public 或 private, 那么这个部分(类、方法或变量)可以被同一个包中的所有方法访问;
Attention)

  • A1) JDK 的实现者修改了类加载器, 明确禁止加载用户自定义的、包名以“java.” 开始的类!
  • A2)可以通过 包密封机制 来解决将各种包混杂在一起的问题, 如果将一个包密封起来,就不能再向这个包添加类了;( 制作包含密封包的 JAR 文件的方法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium自动化测试_使用Selenium自动化测试处理多个浏览器选项卡

selenium自动化测试使用Selenium进行自动化测试一直是将萌芽的自动化测试人员培养为专业人员的生命线。 Selenium是开源的,在全球范围内被广泛采用。 结果,您会得到社区的大力支持。 提供了与Selenium绑定的不同语言的多种框架。 因此,您已经…

qt和c#怎么选_请问目前做windows桌面应用程序,MFC、QT、C#哪个更好?

回答问题之前,先装个逼——没有主导过生命周期三年以上的桌面软件项目的,闭嘴。你连一个桌面软件项目的生命周期都没经历过,你凭什么做技术选型?凭信仰吗?装逼结束,正文开始。首先,非主流技术和…

java 白皮书的关键术语

【0】README 0.1) 本文转自 core java volume 1,仅供了解,所谓爱屋及乌嘛; 0.2) java的设计者编写了颇有影响力的白皮书,用来解释设计的初衷以及完成的情况,并发布了一个摘要;【1】…

当集合a为空集时a的取值范围_高中数学必修一第一章集合分节练习和章末测试题含答案[1] 2...

高中数学必修1 第一章 集合 分节练习和章末综合测试题含答案1 集合的含义与表示1、下列各组对象能否组成一个集合?(1)接近于0的数的全体; (2)2的近似值的全体; (3)平面上到点O 的距离等于1的点的全体; (4)正三角形的全体&#xff…

spring jpa 流式_从响应式Spring Data存储库流式传输实时更新

spring jpa 流式这篇文章详细介绍了从数据库到对该数据感兴趣的任何其他组件进行流更新的幼稚实现。 更准确地说,如何更改Spring Data R2DBC存储库以向相关订阅者发出事件。 对R2DBC和Spring的一点背景知识将对这篇文章有所帮助。 我以前的著作《 使用 Microsoft S…

弹窗页面交互_UI进阶知识-信息提交类弹窗该如何设计?

原文作者:风筝KK 信息提交类弹窗大家应该都比较熟悉,和其他弹窗的区别在于他有输入、选择等操作,比如我们常见的输入验证码、留言回复、充值转账、任务设置等。看上去设计都比较简单,但是当你验收时就会发现问题,为什么…

selenium并行_如何在不同的浏览器中设置Selenium网格以并行执行

selenium并行到目前为止,Selenium是最常用的Web自动化测试工具。 如此受欢迎的原因之一是Selenium的自动跨浏览器测试功能。 Selenium自动化测试可以帮助您在所有主要浏览器,所有主要操作系统甚至移动设备浏览器上进行测试。 您可以在所有功能测试中获得…

java 发展简史

【0】README 0.1) 本文转自 core java volume 1,仅供了解Java 的发展历史,它的前世今生,所谓知己知彼,百战不殆(just a joke) ; 【1】java 发展简史 1.1)java的历史要…

axios代理跨域 cli4_跨域本质及解决办法

1、什么是跨域?2、如何解决?跨域是前端所独有的,后端不存在跨域问题。是浏览器的一种安全保护手段,为了防止别人抓取、篡改你的网站数据信息。遵循同源策略、同协议(http)、同域名、同端口,少一…

如何使用eclemma插件_如何集成和使用EclEmma插件来获得良好的Junit覆盖率

如何使用eclemma插件你好朋友, 如果编写好的代码很重要,那么编写覆盖所有业务逻辑的优良Junit测试用例也同样重要。通过编写覆盖业务逻辑的Junit测试用例,我们实际上确保代码的每种方法都能正常工作按照预期进行,因此减少了在软…

Java 相关术语

【0】README 0.1) 本文转自 core java volume 1,仅供了解Java 的相关术语,包括像JDK、JRE等 ;而且我感觉,了解了这些过后,你会更懂 Java, 更热爱它; 【2】Java术语 2.1)…

一般试卷的纸张大小是多少_pdf试卷怎么打印在A3纸上

一般的PDF试卷的纸张大小都是A4大小,没有现成A3大小Word文档的试卷时,需要将PDF试卷转换Word文档之后进行排版,如何实现这一操作呢?请接着往下学习吧~一、将试卷的PDF格式转换为Word1.进入PDF快转官网,点击下载按钮下载…

设置 JDK环境变量(Windows)

【0】README 0.1) 本文转自 core java volume 1,旨在说明如何设置 JDK环境变量,以及为什么要设置的问题;【1】JDK目录树 Attention)就Java 而言, docs 和 src 是两个最有用的子目录:因为 docs …

光流法测试代码_高效的企业测试-工作流和代码质量(4/6)

光流法测试代码本文的这一部分将讨论在开发过程中拥有有效工作流程的影响,以及适当的测试代码质量如何使我们能够创建可维护的测试,尤其是对于复杂项目。 开发工作流程和管道 编程是一项流程活动,我们开发人员应该对保持工作流程高效和缩短…

水泵怎么做_泳池设备日常怎么维护和保养?

点击上方“蓝字”,关注我们.●电机突然停止运转怎么办?1.检查电路和电线接口等。2.检查输送到电机的电压是否过低(通常由于电源线太小而引致的电流不足)。3.检查是否有过载而引起电流过大。注:Hayward 水泵的单相电机有自动过热保护装置。该装…

鸡肉部位英文对照_鸡肉和鸡蛋–测试前解决Spring属性

鸡肉部位英文对照考虑一个负责进行远程调用和获取详细信息的服务类: ... public class CitiesService { private final WebClient.Builder webClientBuilder; private final String baseUrl; public CitiesService( WebClient.Builder webClientBuilder, Value ( &…

git pull忽略指定文件_Git忽略提交规则

在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git add .的时候,遇…

lombok var_使用var,Lombok和Fluxtion轻松处理事件

lombok var介绍 在本文中,我将结合使用Lombok和Fluxtion这两种产品,以展示工具如何在减少代码编写和交付时间的同时提高代码的可读性。 使用Java 10中的var可以进一步改善这种情况。 产品和var都在构建时使用推断来加速开发。 Fluxtion的精神是最大程度…

更换mysql_安利给你,关于MySQL字符集乱码与解决方案

推荐阅读:闭关修炼21天,“啃完”283页pdf,我终于4面拿下字节跳动offer肺炎在家“闭关”,阿里竟发来视频面试,4面顺利拿下offer字符集是一套符号和编码的规则,不论是在oracle数据库还是在mysql数据库&#x…

api自动化_如何在不增加人员的情况下自动化API安全程序

api自动化在这篇文章中,我们将撰写一篇综合文章,内容涉及如何在不增加人员的情况下自动执行API安全程序。 在现代世界中,数据对于提供者和消费者都至关重要。 数据科学的出现证明了这一事实。 对于某些组织,整个业务模型是建立在信…