在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。

1、静态导入的与普通import的区别:

import语句可以导入一个类,或者包中的类;

import static 语句可以导入一个类的中的某个静态成员,也可以导入所有的静态成员。

2、优劣分析:

优点:可以少写类名,使某些代码变简洁

缺点:成员归属不明确,使可读性不强,易产生混淆

3、用法示例:

[html] view
plain
copy

  1. package cn.itheima.blog1;
  2. //import static java.lang.Math.*;//导入所有成员
  3. import static java.lang.Math.PI;//静态导入成员变量
  4. import static java.lang.Math.max;//静态导入成员函数
  5. public class StaticImportDemo {
  6. /**
  7. * 静态导入示例(Math类)
  8. * 1、导入所有成员
  9. * 2、导入某个成员函数
  10. * 3、导入某个成员变量
  11. */
  12. public static void main(String[] args) {
  13. System.out.println("PI的值是" + PI);
  14. System.out.println("1,2之间较大的数为:" + max(1,2));
  15. }

当你想使用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方法上进行静态导入。

java5的静态导入import static的更多相关文章

  1. 2017.12.19 Java包的静态导入import static和import的区别

    import static静态导入是JDK1.5中的新特性.一般我们导入一个类都用 import com-..ClassName;而静态导入是这样:import static com-..ClassN ...

  2. 静态导入(static import)

    1.传统静态方法的调用方式 定义一个Common类,里面有静态方法和静态常量 package com.example.common; public class Common { public stat ...

  3. java高新技术-java5的静态导入与编译器语法设置

    静态导入 import语句可以导入一个类或某个包中的所有类 import static 语句导入有一个类中的某个静态方法或所有静态方法 使用Math.random() 可以这样做 package co ...

  4. 动态导入(import)和静态导入(import)的区别

    import static静态导入是JDK1.5中的新特性.一般我们导入一个类都用 import com.....ClassName;而静态导入是这样:import static com.....Cl ...

  5. JAVA静态导入(inport static)详解

    在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的.这种新的特性成为静态导入. 当你想使用static成员时,可以使用静态导入( ...

  6. Java JDK5新特性-静态导入

    2017-10-31 00:10:50 静态导入格式:import static 包名 ...类名.方法名: 也就说可以直接导入到方法名. 注意: 方法必须是静态的 如果有多个同名的静态方法,容易不知 ...

  7. 在Eclipse里静态导入

    静态导入import static 介绍见import static和import的区别 在Eclipse里配置静态导入,步骤见下面截图的箭头 例如导入下面的jar 常用的静态导入方法如下: com. ...

  8. (14)jdk1.5开始的一些新特性:静态导入,增强for循环,可变参数,自动装箱/拆箱,枚举类型

    Jdk1.5新特性之静态导入 jdk1.5新特性值静态导入 静态导入的作用:简化缩写 静态导入的作用:可以作用一个类的所有静态成员. 静态导入的格式:import static 包名.类名.静态的成员 ...

  9. import 与 import static

    原文链接:https://www.geeksforgeeks.org/static-import-java/ java中的静态引用 直接解释 一般引入类的方式:import java.lang.Mat ...

随机推荐

  1. CPU压力测试--限制到指定范围

    作用:增加CPU使用率到指定范围 1.书写shell脚本增加CPU压力 #! /bin/bash # filename cputest.sh endless_loop() { echo -ne &qu ...

  2. @ConfigurationProperties的几个使用细节

    1.只有当前组件是容器中的组件,才能使用容器提供的@ConfigurationPropeities功能 2.使用@ConfigurationProperties,被注入字段必须要有set .get 方 ...

  3. 24.docker 部署 wordPress

    1. 拉取远程 mysql 和 wordpress 镜像 并 启动起来 使用 docker pull mysql:5.7.27 docker pull wordpress 2. 创建mysql 的 c ...

  4. 2019牛客暑期多校训练营(第七场)A.String【最小表示法】

    传送门:https://ac.nowcoder.com/acm/contest/887/A 题意:大意就是给你一个只含有0和1的字符串,找出一种分割方法,使得每个分割出的字符串都是在该字符串自循环节中 ...

  5. Java机器学习软件介绍

    Java机器学习软件介绍 编写程序是最好的学习机器学习的方法.你可以从头开始编写算法,但是如果你要取得更多的进展,建议你采用现有的开源库.在这篇文章中你会发现有关Java中机器学习的主要平台和开放源码 ...

  6. Java之同步代码块处理实现Runnable的线程安全问题

    /** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * * 1.问题:卖票过程中,出现了重票.错票 -->出现了线程的安全问题 * 2.问题出现的原因:当某 ...

  7. python类的继承、多继承及其常用魔术方法

    继承 一个类可以派生出一个子类,这个子类可以使用父类的属性及方法,也可以在父类的基础上添加自己的独特属性或方法.属性和方法的继承的顺序是先从自己开始,找不到再去找父类,父类没有再找父类的父类,其尽头就 ...

  8. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)

    字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...

  9. 【iOS入门】UITableView加载图片

    学习带图片的列表 官方 LazyTableImages demo  http://download.csdn.net/detail/jlyidianyuan/5726749 分析源码是学习的好方法. ...

  10. SQL Link Oracle

    转自:http://www.2cto.com/database/201107/96105.html 做项目过程中常用到数据库同步,现把前一段时间做的一个项目部分,同步过程贴出来,供分享与自己参考! 本 ...