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



目录
相关文章
|
存储 Java 数据库连接
activiti工作流数据库表介绍
activiti工作流数据库表介绍
421 0
|
数据可视化
mac环境下graphviz安装及使用
mac环境下graphviz安装及使用
3804 0
mac环境下graphviz安装及使用
|
应用服务中间件
IDEA出现问题:idea启动tomcat 很慢解决方案
IDEA出现问题:idea启动tomcat 很慢解决方案
1868 0
IDEA出现问题:idea启动tomcat 很慢解决方案
|
Java API 数据库
如何在Java中使用GraphQL
如何在Java中使用GraphQL
QLExpress的基本语法
1、操作符和java对象操作 普通java语法 //支持 +,-,*,/,<,>,<=,>=,==,!=,<>【等同于!=】,%,mod【取模等同于%】,++,--,&&,|| //in【类似sql】,like【类似sql】,&&,||,!,等操作符 //and、or 和java里面的&& || .
26923 0
|
存储 缓存 Java
面试必杀技,讲一讲Spring中的循环依赖
纠正业界对循环依赖的几个错误认知,明确三级缓存的真正作用
28482 17
|
前端开发 Java 大数据
关于Spring MVC ModelAndView重定向时的跳转问题
你好看官,里面请!今天笔者讲的是在Spring MVC框架中关于ModelAndView重定向时的跳转问题。不懂可以在评论区留言,我看到会及时回复。 注意:本文仅用与学习参考,不可用于商业用途。
570 3
|
Arthas Java 测试技术
Arthas可以对线上jar中的代码进行断点查看
Arthas可以对线上jar中的代码进行断点查看
4165 1
|
Android开发 Windows