共计 1417 个字符,预计需要花费 4 分钟才能阅读完成。
本文接上一篇:乐字节 Java|this 关键字、static 关键字、block 块。本文是接着讲述 JavaGC 垃圾回收机制、package 和 import 语句。
一、GC 垃圾回收机制
GC 全名:Garbage Collection 垃圾回收机制
程序员无权调用垃圾回收器。
程序员可以通过 System.gc()。通知 GC 运行,但是 JAVA 规范并不能保证立刻运行。
finalize 方法,是 JAVA 提供给程序员用来释放对象或资源的方法,但是尽量少用。
GC 回收的三种基本方式
1、标记 - 清除
标记存活对象,清理其他垃圾对象(阴影为存活对象,空白为垃圾对象)。
优点:效率高
缺点:产生碎片,使内存分布碎片化,造成内存空间不连续。若出现大的对象,内存空间不连续则难以存取
2、标记 - 整理
标记存活对象,清除垃圾对象,对垃圾对象进行整理。
优点:没有碎片
缺点:效率低
3、复制
在内存中分配两块内存,将标记的存活对象复制到另一块内存当中,再将原内存的对象清除。
优点:效率高
缺点:浪费内存
二、package 和 import 语句
为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java 引入包 (package) 机制,提供类的多重类命名空间。
一般的命名为: 公司域名倒写 + 功能名 | 模块名。
package 语句作为 Java 源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。
格式:package com.shsxt.test; → package pkg1[.pkg2[.pkg3…]];
Java 编译器把包对应于文件系统的目录管理,package 语句中,用’.’来指明包(目录)的层次,例如使用语句: package com.shsxt , 则该文件中所有的类位于.comshsxt 目录下
注意: 不要定义与 jdk 相同的包,相同的类,否则会引起很多你觉得莫名其妙的问题
如果一个类存在包名,则在使用该类时,必须使用全额限定名(简称全名或完整类名,com.shsxt.MyClass),编译器才能找到该类;也可以使用 import 在文件的开头引入要使用到的类。
不需要使用 import 的类有:
语言包(java.lang)下的类
同包下的类
静态导入:
import 语句不仅可以导入类,还增加了导入静态方法的功能。
三、总结
如果想将一个类放入包中,在类的源文件首行使用 package
必须保证该类的 class 文件位于正确的目录下
另外的类想访问的话:
1、写全名
2、引入
1)、* 模糊匹配(会将该包下所有用到的类引入进来),会降低编译速度,但是不会影响运行速度。
2)、具体类名。
3、同包下的类不需要导入。
JDK 中常用的包简单介绍:
①java.lang –语言包:语言中常用的功能,如 String、Math、System、Integer、Thread…
②java.util – 工具包:提供一些实用的工具类,如 容器(List、Set、Map…), 日期类
③java.io – 输入输出包:提供操作读取文件的相关类,如 File、InputStream、OutputStrem…
④java.net – 网络包:操作远程资源的类,如 InetSocketAddress、DatagramPacket、ServerSocket…
⑤java.sql – 数据库包:操作 JDBC 的类,Connection、Statement、ResultSet….
欢迎关注乐字节,Java 相关技术文章干货持续更新。