java5的静态导入import static
2014-02-21 16:51
471 查看
在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。
1、静态导入的与普通import的区别:
import语句可以导入一个类,或者包中的类;
import static 语句可以导入一个类的中的某个静态成员,也可以导入所有的静态成员。
2、优劣分析:
优点:可以少写类名,使某些代码变简洁
缺点:成员归属不明确,使可读性不强,易产生混淆
3、用法示例:
[html] view
plaincopy
package cn.itheima.blog1;
//import static java.lang.Math.*;//导入所有成员
import static java.lang.Math.PI;//静态导入成员变量
import static java.lang.Math.max;//静态导入成员函数
public class StaticImportDemo {
/**
* 静态导入示例(Math类)
* 1、导入所有成员
* 2、导入某个成员函数
* 3、导入某个成员变量
*/
public static void main(String[] args) {
System.out.println("PI的值是" + PI);
System.out.println("1,2之间较大的数为:" + max(1,2));
}
当你想使用static成员时,可以使用静态导入(在API中的类和你自己的类上,都可以使用该特性)。下面是静态导入前后的代码实例:
两个类都产生相同的输出:
2147483647
2a
让我们看一下使用静态导入特性的代码中将发生什么:
1、虽然该特性通常称为“静态导入”,但语法必须是import static,后面跟你想导入的static成员的完全限定名称,或者通配符。在本例中,我们在System类的out对象上进行静态导入。
2、在本例中,我们可能想使用java.lang.Integer类的几个static成员。该静态导入语句使用通配符来表达“我想在此类中的所有静态成员上进行静态导入”。
3、现在我们终于看到静态导入特性的好处!我们不必在System.out.println中键入System。太好了!另外,我们不必在Integer.MAX_VALUE中键入Integer。因此,在这行代码中,我们能够将快捷方式用于静态方法和一个常量。
4、最后,我们进行更多的快捷操作,这次针对Integer类的方法。
关于该特性,我们已经有点儿讽刺意味儿了,但不仅我们是这样的。我们不认为节省少量的击键次数会让代码难于阅读一点,但许多开发人员要求将它添加到语言中。
下面是使用静态导入的几条原则:
你必须说import static, 不能说static import。
提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。
你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。
1、静态导入的与普通import的区别:
import语句可以导入一个类,或者包中的类;
import static 语句可以导入一个类的中的某个静态成员,也可以导入所有的静态成员。
2、优劣分析:
优点:可以少写类名,使某些代码变简洁
缺点:成员归属不明确,使可读性不强,易产生混淆
3、用法示例:
[html] view
plaincopy
package cn.itheima.blog1;
//import static java.lang.Math.*;//导入所有成员
import static java.lang.Math.PI;//静态导入成员变量
import static java.lang.Math.max;//静态导入成员函数
public class StaticImportDemo {
/**
* 静态导入示例(Math类)
* 1、导入所有成员
* 2、导入某个成员函数
* 3、导入某个成员变量
*/
public static void main(String[] args) {
System.out.println("PI的值是" + PI);
System.out.println("1,2之间较大的数为:" + max(1,2));
}
当你想使用static成员时,可以使用静态导入(在API中的类和你自己的类上,都可以使用该特性)。下面是静态导入前后的代码实例:
在静态导入之前: public class TestStatic { public static void main(String[] args) { System.out.println(Integer.MAX_VALUE); System.out.println(Integer.toHexString(42)); } } 在静态导入之后: import static java.lang.System.out; import static java.lang.Integer.*; public class TestStaticImport { public static void main(String[] args) { out.println(MAX_VALUE); out.println(toHexString(42)); } }
两个类都产生相同的输出:
2147483647
2a
让我们看一下使用静态导入特性的代码中将发生什么:
1、虽然该特性通常称为“静态导入”,但语法必须是import static,后面跟你想导入的static成员的完全限定名称,或者通配符。在本例中,我们在System类的out对象上进行静态导入。
2、在本例中,我们可能想使用java.lang.Integer类的几个static成员。该静态导入语句使用通配符来表达“我想在此类中的所有静态成员上进行静态导入”。
3、现在我们终于看到静态导入特性的好处!我们不必在System.out.println中键入System。太好了!另外,我们不必在Integer.MAX_VALUE中键入Integer。因此,在这行代码中,我们能够将快捷方式用于静态方法和一个常量。
4、最后,我们进行更多的快捷操作,这次针对Integer类的方法。
关于该特性,我们已经有点儿讽刺意味儿了,但不仅我们是这样的。我们不认为节省少量的击键次数会让代码难于阅读一点,但许多开发人员要求将它添加到语言中。
下面是使用静态导入的几条原则:
你必须说import static, 不能说static import。
提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。
你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。
相关文章推荐
- Java判断字符串是否为数字(正则表达式)
- java Date Calendar 区别
- 【java performance】不要在循环体中实例化变量
- Java thread notes
- MyEclipse项目中,让修改后的Servlet文件生效方法
- 网页实现浏览器的向前,后退
- 【java performance】用'StringTokenizer'代替 'indexOf()' 和'substring()'
- spring配置datasource三种方式
- JAVA 基础知识复习
- 【Java】 第四章 异常处理 Notes learn Ma
- 【Java】 第四章 异常处理 Notes learn Ma
- 如何安装java环境
- Struts2 自定义拦截器配置和使用
- Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate(转)
- eclipse安装教程
- win7 64+jdk64访问access出现 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
- Java 自定义注解@interface
- rose-scanning reading
- 基础----Java的作用域
- 【java performance】将try/catch块移出循环