Java基础随笔之静态导入
来源:互联网 发布:做网页的软件 知乎 编辑:程序博客网 时间:2024/05/21 11:23
1、package、import的来龙去脉
有些人写了一阵子Java,可是对于Java的package 和 import 还是不太理解。很多人以为xx.java文件中的import会让编译器把所import的程序统统拷到.class文件中。或者是认为像c/c++中的#include预处理指令相似,实际上这是错误的。
(1)package
其实package的名称就像我们的姓,而class文件名称就像是我们的名字。在package中有很多包含点,其实理解不难,就下你给是我们的复姓一样。打个比方,比如java.lang.String就是复姓java.lang名为String。再比如java.io.InputStream复姓java.io名为InputStream。
在java中使用package这种机制其实原因也很简单,就像我们取名一样。在一个学校同一届学生中有很多同名(名同,姓不同)的学生,那么如何区分这些同名的学生呢,那么就出现了用姓来区分。所以sun公司就采取这种方式用了package。根据sun公司的命名规则,不允许同一个学校一届同学中有同姓同名的学生。也就是不允许package同名,以防止查找文件的时候产生冲突。
(2)import
针对(1)中所述一个文件的全名(姓名)会很长,在写代码过程中会很累赘,很浪费写作时间,比如说
java.io.InputStream is = java.lang.System.in;
java.io.InputStreamReader isr= new java.io.InputStreamReader(is);
java.io.BufferedReader br = new java.io.BufferedReader(isr);
所以sun公司引进了import来解决上述问题。import会在.java 文件中的开头就先说明该文件中要使用的所有文件的姓名,在具体代码中只要简单的使用名就可了。比如:
import java.lang.System;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
这几行说明了这个四个文件的明名称,在程序中使用,只要直接使用名就可以使用,在程序中使用了System就是指java.lang.System,依此类推。可是即使这样已经使代码更加的简洁了,但是还有人不满足,认为敲太多的import是浪费时间。所以sun公司又提供了一个懒人的方法。
import java.lang.*;
import java.io.*; 意思就是,等一下程序中提到的没有姓名的文件,不是姓 java.lang,就是姓
java.io,如果这两个裡面有同样名字的类别,而不幸的你又只用名字称呼这
个类别,那编译器仍然会跟你抱怨,因為它还是不知道你说的这个类别指那一
个姓的类别。那可不可以再懒一点呢,只写:
import java.*; 历史告诉我们,人可以懒,但不能太懒,这样是不行的。因為那些类别是姓
java.io 而不是姓 java。就像姓『诸葛』的人应该不会喜欢你称他為『诸』
先生吧。为什么我一开始说 import 跟 #include 不同呢?因為 import 的功能
到此為止,它不像 #include 一样,会将文件内容全部载入进来。import 只是请
编译器帮你打字,让编译器把没有姓的类别加上姓,并不会把别的类中的代码写进来。如果你想练习打字,可以不要使用 import,只要在用到类别的
时候,用它的全部姓名来称呼它就行了(就像例子一开始那样),跟使用
import 完全没有甚麼两样。另外,虽然人不可以太懒,但是 Sun 还是帮我们多偷了一点懒。因為
java.lang 这个套件实在是太常太常太常用到了,几乎没有程式不用它的,
所以不管你有没有写 import java.lang;,编译器都会自动帮你补上,也就
是说编译器只要看到没有姓的类别,它就会自动去 java.lang 裡面找找看,
看这个类别是不是属於这个套件的。所以我们就不用特别去
import java.lang 了。import导入声明可分为两中:
1>单类型导入(single-type-import)
例:import java.util.ArrayList; 就是具体到集体的类和接口,包括他们的姓和名2>按需类型导入(type-import-on-demand)
例:import java.util.*; 对于按需类型导入,有人误解为导入一个包下的所有类,其实不然,看名字就知道,他只会按需导入,也就是说它并非导入整个包,而仅仅导入当前类需要使用的类。(3)静态import
java1.5之后引入了静态导入,所谓静态导入就是导入某个类中的静态方法或者所有静态方法。这是普通import是做不到的。比如 import java.lang.Math.max,或者是import java.lang.Math.*;
0 0
- Java基础随笔之静态导入
- java基础之静态导入 static import
- Java基础 静态导入
- java之静态导入
- java之静态导入
- java基础入门-----静态导入
- java基础入门-静态导入
- Java面试系列【静态导入】-静态导入,基础篇
- java知识点之静态导入
- Java基础-静态导入:static import
- Java基础之集合框架(四)--Collections、Arrays、增强for循环、可变参数、静态导入
- Java基础之集合框架(四)--Collections、Arrays、增强for循环、可变参数、静态导入
- Java基础之静态static
- java 神奇的import之静态导入
- Java 基础随笔
- Java多线程基础随笔
- Java基础随笔
- java基础随笔
- HTML 保留显示空格
- 收藏功能实现及源代码
- C#.Net过滤特殊字符通用类库方法
- HashMap多线程并发问题分析
- xpath中normalize-space的实际应用
- Java基础随笔之静态导入
- sublime text 3103 怎么设置中文
- C#获取汉字的拼音首字母帮助类库
- 加班那点事(三)
- java IO 三(字节流的使用)
- 对“视觉机器学习20讲配套仿真代码”的研究心得---决策树学习
- Sublime Text 2 使用过程记录
- Maven pom文件提示Missing artifact org.springframework:spring-context-support:jar:3.2.2.RELEASE:compile
- 从前端开始