为啥不建议你使用 import *

简介: Java 存在两种包的导入机制• 单类型导入、这个也是推荐并且也是常见常用的• 按需类型导入、这个是不推荐的、也就是我们常说的 import xxx.xx.*

Java 存在两种包的导入机制

  • 单类型导入、这个也是推荐并且也是常见常用的
  • 按需类型导入、这个是不推荐的、也就是我们常说的 import xxx.xx.*


单类型导入仅仅是导入一个接口或者类、而按需导入也是仅仅导入当前类所需要使用的类、两者的差别只是对类文件的定位算法不一样。


Java 编译器会从启动目录、扩展目录以及用户类路径目录去定位需要导入的类。这三个目录也是我们所说的类的顶级目录。


编译器定位类文件的方法大概如下

顶层路径名(也就是目录) \ 包名\文件名.class

这三者加起来就是一个绝对路径了


因为单类型导入、包名和类名都是确定的、所以可以一次性查找定位

而按需导入因为其包名和类名是不确定、那么就需要组合排列、比如说

package com;
 import java.util.*;
 import java.awt.*;
 public class TestImport {
     public static void main(String[] args) {
         List list;
     }
 }
复制代码


这个代码中使用到 List 这个类、那么它可能的包名 + 类名就是

  • List 属于无包名
  • com.List 跟当前的类属于同一个包
  • java.lang.List 编译器自动导入 java.lang 包
  • java.util.List
  • java.awt.List

编译器即使找到 java.util.List 也不会停下来、而是会继续寻找、找出所有的判断是否有类导入冲突

网络异常,图片无法展示
|


如果是一个顶层路径、那么就比单类型导入多出四次查找、如果是两个顶层路径就多出八次


所以按需导入不会影响我们实际运行 class 文件、只是会影响编译的速度

所以综上所述、import * 还是不推荐的。idea 中可以设置、

网络异常,图片无法展示
|


启动优化导入、移除无用的 import

网络异常,图片无法展示
|

  • 同一个包下的 xxx 个类自动合并为 import *
  • 导入静态类时、达到 xxx 个自动合并为 import static *



目录
相关文章
|
2月前
|
数据可视化 数据挖掘 开发者
import有什么用,python中怎么使用import
import有什么用,python中怎么使用import
28 1
|
5月前
|
NoSQL Java 应用服务中间件
Java模拟面试总结
Java模拟面试总结
|
5月前
|
XML 数据格式 Python
Python解释import、from ... import ... 和 from ... import *的区别。
解释import、from ... import ... 和 from ... import *的区别。
|
9月前
java202304java学习笔记第六十天-ssm-spring配置文件-import和知识要点
java202304java学习笔记第六十天-ssm-spring配置文件-import和知识要点
26 0
|
9月前
|
缓存 NoSQL Java
|
10月前
|
Java
java中package和import的作用(初学之用)
Package (包)就是用来解决这个问题的。
95 0
|
10月前
|
Java 编译器 C++
java入门概念个人理解之package与import浅析
java入门概念个人理解之package与import浅析
76 0
|
12月前
java202303java学习笔记第三十五天有差read方法解析2
java202303java学习笔记第三十五天有差read方法解析2
35 0
|
12月前
java202303java学习笔记第三十五天有差read方法解析1
java202303java学习笔记第三十五天有差read方法解析1
35 0
|
12月前
java202303java学习笔记第三十八天常用工具包hutool生成假数据
java202303java学习笔记第三十八天常用工具包hutool生成假数据
32 0