为啥不建议你使用 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 *



目录
相关文章
|
6月前
|
数据可视化 数据挖掘 开发者
import有什么用,python中怎么使用import
import有什么用,python中怎么使用import
68 1
|
4月前
|
Java 容器 Spring
@Import 源码解析
@Import 源码解析
52 10
|
3月前
|
Oracle Java 关系型数据库
为啥叫Java呢
为啥叫Java呢
20 0
|
6月前
|
XML 数据格式 Python
Python解释import、from ... import ... 和 from ... import *的区别。
解释import、from ... import ... 和 from ... import *的区别。
89 1
|
XML 缓存 SpringCloudAlibaba
Spring注解导入:@Import使用及原理详解
`@Import` 是 Spring 基于 Java 注解配置的主要组成部分,`@Import` 注解提供了类似 `@Bean` 注解的功能,向Spring容器中注入bean,也对应实现了与Spring XML中的<import/>元素相同的功能
844 0
java202304java学习笔记第六十天-ssm-spring配置文件-import和知识要点
java202304java学习笔记第六十天-ssm-spring配置文件-import和知识要点
42 0
|
Java
java中package和import的作用(初学之用)
Package (包)就是用来解决这个问题的。
128 0
java202303java学习笔记第三十七天恢复顺序3
java202303java学习笔记第三十七天恢复顺序3
29 0
java202303java学习笔记第三十五天有差read方法解析2
java202303java学习笔记第三十五天有差read方法解析2
48 0
java202303java学习笔记第三十五天有差read方法解析1
java202303java学习笔记第三十五天有差read方法解析1
49 0