java的import
来源:互联网 发布:怪物猎人2g多玩数据库 编辑:程序博客网 时间:2024/05/23 14:23
1.import作用
没有使用import之前,操作不在同一个包中的类,得使用全限定名来操作.
/**没有使用import每次调用Arrays类的方法时都要使用它的全限定名*/class ImportDemo {public static void main(String[] args) {int[] arr = {1,5,78,34,23,5,6,2};String arrString1 = java.util.Arrays.toString(arr); //打印数组返回字符串System.out.println(arrString1);java.util.Arrays.sort(arr); //对数组进行排序String arrString2 = java.util.Arrays.toString(arr); //打印排序后的数组返回字符串System.out.println(arrString2);}}
使用import语句,直接把某个包下的类导入到当前类中.
语法格式: import 需要导入类的全限定名;此后,在本Java文件中,只需要使用类的简单名称即可.
/**使用import每次调用Arrays类的方法时只需要简单类名即可*/import java.util.Arrays;class ImportDemo {public static void main(String[] args) {int[] arr = {1,5,78,34,23,5,6,2};String arrString1 = Arrays.toString(arr); //打印数组返回字符串System.out.println(arrString1);Arrays.sort(arr); //对数组进行排序String arrString2 = Arrays.toString(arr); //打印排序后的数组返回字符串System.out.println(arrString2);}}注意:编译会自动去java.lang包中去寻找使用到的类,比如String,System.所以他们不需要导入.
推论:非java.lang包的类,都需要导入.
问题:如果我们还需要继续引入java.util包中其他的类,我们还得提供N个import语句,要写很多次,不爽.
解决方案:使用通配符(*).
import 类的全限定名; 只能导入某一个类.
import 包名.子包名.*; 表示会引入该包下的所有的在当前文件中使用到的类.
import java.util.*; 此时的*表示类名.
在Eclipse工具中,即使我们使用了通配符*,在格式化代码的时候,也会转换为N条import语句.
/**import java.util.*; 等价于下面3句import java.util.Arrays;import java.util.List;import java.util.Set;*/import java.util.*;class ImportDemo {public static void main(String[] args) {int[] arr = {1,5,78,34,23,5,6,2};String arrString1 = Arrays.toString(arr); //打印数组返回字符串System.out.println(arrString1);List list = new ArrayList();Set set= new HashSet();}}注意: 编译器会默认找java.lang包下的类. 但是却不会去找java.lang的子包下的类.
比如:java.lang.reflect.Method类.此时我们也得使用import java.lang.reflect.Method.
2.静态导入(static import)
import java.util.*;class ImportDemo {public static void main(String[] args) {int[] arr = {1,5,78,34,23,5,6,2};String arrString1 = Arrays.toString(arr); //打印数组返回字符串System.out.println(arrString1);Arrays.sort(arr); //对数组进行排序String arrString2 = Arrays.toString(arr); //打印排序后的数组返回字符串System.out.println(arrString2);}}在上述代码中,每次使用Arrays类中的静态方法,即使我们使用了import语句,但是每次都需要使用Arrays类名去调用静态方法.
我就觉得不爽, 我期望:我能把Arrays类中的静态成员作为自己的静态成员一样调用:sort(arr);
解决方案:
语法格式: import static 类的全限定名.该类中的static成员名;
语法格式: import static 类的全限定名.该类中的static成员名;
import static java.util.Arrays.sort;import static java.util.Arrays.toString;class ImportDemo {public static void main(String[] args) {int[] arr = {1,5,78,34,23,5,6,2};String arrString1 = toString(arr); //直接调用toString方法打印数组返回字符串System.out.println(arrString1);sort(arr); //直接调用sort方法对数组进行排序String arrString2 = toString(arr); //打印排序后的数组返回字符串System.out.println(arrString2);}}注意:也可以使用通配符 import static 类的全限定名.*; 此时的*表示当前类的任意使用到的静态成员.
--------------------------------------------------------------------------------------------------------------------------------
通过反编译工具,其实所谓的静态导入也是一个语法糖/编译器级别的新特性.
在实际开发中,我们不使用静态导入,因为如此,分不清某一个静态方法或字段来源于哪一个类.
Eclipse工具,当格式化代码的时候,就自动取消了所有的静态导入,变成使用类名调用.
阅读全文
0 0
- 浅谈java的import
- java的 import static
- java 的 import
- java的static import
- java的import处理
- java import的机制
- 浅谈java的import
- Java import的机制
- 浅谈java的import
- Java import的机制
- Java的import
- java import的机制
- Java import的机制
- 谈java的import
- java import的机制
- java import的机制
- java的import
- Java的static import
- Elasticsearch 中文分词器 IK 配置和使用
- faad2在C++环境下的运行依赖库
- activiti-explorer(activiti 5.22) 替换为mysql数据库
- mysql CONCAT()函数
- android Activity 生命周期详解
- java的import
- 为已有的web project项目加入maven支持,并使用myeclipse的插件.
- 查找大于等于左侧所有数小于等于右侧所有数
- linux 安装包
- 通过解析Xml配置文件,获取配置信息,进行实例化
- 31 completion完成量,wait_queue_head_t等待队列和epoll
- Mybatis 数据库物理分页插件 PageHelper
- MYSQL数据库(十二)- 添加表关系join、insert...select、create ...select多表更新
- Router构造配置mode