C中的#include与Java中的import

意义:都是为了让程序更加简洁

include,通过在源文件开头声明接下来要使用到的头文件,达到多文件协作开发。原理很简单粗暴,编译器在编译期间将声明的头文件复制粘贴过来即可。

import,在java文件开头引入接下来会使用到的类,避免 全类名导致的代码冗长。

这两者看似作用差不多,其实差距还是不小的。include就没啥可说的了,主要聊聊import吧。

首先聊一聊package,package的出现是为了解决类的命名冲突问题,大家一般遵守域名倒序的规范来为包命名,一般也就不会导致类的命名冲突;这种解决问题的方式也很简单粗暴,重名?那就把名字加长!这时,一个类的完整名字就是 包名.类名,或者说这就是类的名字,全类名的概念只是让我们开发者区分罢了,JVM只知道全类名。

我们在程序中可不想每次使用类的时候都把所谓的全类名都写出来,对于com.poemcode.Test类,我只想写Test,这时候import的作用就显现出来了,通过在文件头部声明 import com.poemcode.Test,接下来该文件中的所有Test编译的时候都会变成com.poemcode.Test,如果别的包里也有Test类,抱歉,用全类名。

package还对应着类所在文件路径的概念,Test类在文件系统中的上两级目录一定是com/poemcode,看来package不止解决了命名冲突,还对项目结构的清晰性功不可没;这里有一个小问题,当我们想用java命令执行Test.class时,必须在com的上一级目录中执行 java com.poemcode.Test,如果进入poemcode下执行java Test,抱歉,JVM可不知道Test是什么鬼,它只知道com.poemcode.Test

发表评论

邮箱地址不会被公开。 必填项已用*标注