java static笔记

来源:互联网 发布:数据质检是干什么的 编辑:程序博客网 时间:2024/06/17 00:13

一、java的static import

允许在代码中直接引用别的类的static变量和方法(在权限许可范围内),是import的延续。

引入static import最主要考虑到两个需要,第一个就是对一些工具性的,常用的静态方法进行直接引用。比如,java.lang.Math里的一大堆数学方法abs,exp等。

第二个就是对常数变量进行直接引用,其中也包扩对enum的直接引用。

static import的限制和import也基本一样,就是不能出现二义性。另外,static import不支持先import类,然后import static 类.*(不加package)的形式。

例:

import static java.lang.Math.PI;
public class MathUtils{
    // 计算圆面积
    public static double calCircleArea(double r){
        return PI * r * r;
    }
    // 计算球面积
    public static double calBallArea(double r){
        return 4 * PI * r * r;
    }
}

静态导入的作用是把Math 类中的PI 常量引入到本类中,这会使程序更简单,更容易阅读,只要看到PI 就知道这是圆周率,不用每次都要把类名写全了。但是,滥用静态导入会使程序更难阅读,更难维护。静态导入后,代码中就不用再写类名了,但是我们知道类是“一类事物的描述”,缺少了类名的修饰,静态属性和静态方法的表象意义可以被无限放大,这会让阅读者很难弄清楚其属性或方法代表何意,甚至是哪一个类的属性(方法)都要思考一番(当然,IDE 友好提示功能是另说),特别是在一个类中有多个静态导入语句时,若还使用了*(星号)通配符,把一个类的所有静态元素都导入进来了,那简直就是恶梦。

对于静态导入,一定要遵循两个规则:

  • 不使用*(星号)通配符,除非是导入静态常量类(只包含常量的类或接口)。
  • 方法名是具有明确、清晰表象意义的工具类。
二、static方法中new的对象是否为static类型的:

个人认为istatic方法中new的对象就是一个局部变量,不是static类型。

0 0
原创粉丝点击