黑马程序员技术交流社区

标题: import和静态导入有啥区别?我怎么越看越不清楚了 [打印本页]

作者: 林豪    时间: 2012-5-18 14:41
标题: import和静态导入有啥区别?我怎么越看越不清楚了
比如  import java.System.*;和import static java.Sysem.*;
既然普通导入已经导入了System包了为什么用的时候还要System.xxx?
还有静态导入对那些不是静态的方法有效吗?
作者: 李保成    时间: 2012-5-18 14:46
静态导入是JKD1.5后新加的功能,一般不怎么常用,很简单给你举个例子你就能明白了,看这段代码:
import static java.lang.System.out;//导入java.lang包下的System类的静态方法out;
public class HelloWorld{
    public static void main(String[] args){
        out.print("Hello World!");//既是在这里不用再写成System.out.println("Hello World!")了,因为已经导入了这个静态方法out。
    }
}
import xxxx 和 import static xxxx的区别是前者一般导入的是类文件如import java.util.Scanner;后者一般是导入静态的方法,import static java.lang.System.out;
作者: 余宏    时间: 2012-5-18 15:10
import static 是静态导入,是jdk1.5的新特征,可以不通过调用包名,直接使用包里的静态方法。
使用静态导入可以使代码效率更高,可读性更强,
所谓静态导入,当然只对静态方法有效。

作者: 付信榕    时间: 2012-5-18 15:26
导包的目的就是为了简写类名或其方法。楼主可以这样理解:  import java.System.*;所有类名(写完整的名)都有java.System.以后都不用在写这么长了,一开始就把它都提取出来告诉jvm了,jvm就识别的到了。而import static java.Sysem.*;是简写类名中有static的名字。总结就是, import java.System.*;虽然导如了静态的内容,但没有完全简化到连static都省掉的地步,所以import static java.Sysem.*;就是连static都提取出来,简化到可以直接写方法就能被jvm识别的地步。所以要有必要导两次包





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2