美文网首页
java static学习记录

java static学习记录

作者: jinelei | 来源:发表于2019-02-18 13:19 被阅读0次

    static可以用来修饰类、成员、方法。

    1. 修饰类

    通常是静态内部类(不能用static修饰顶级类
    譬如常用的builder模式。

    class Foo {
        private String name;
    
        private Foo(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "Foo{" +
                    "name='" + name + '\'' +
                    '}';
        }
    
        public static class Builder {
            private String name;
    
            public Builder setName(String n) {
                name = n;
                return this;
            }
    
            public Foo build() {
                return new Foo(name);
            }
        }
    
        public static void main(String[] args) {
            System.out.println(new Builder().setName("test").build());
        }
    }
    

    什么是顶级类:

    class TopLevelClass { //顶级类
        static class NestedTopLevelClass { //嵌套顶级类
        }
    }
    

    2. 修饰方法

    通常称之为静态方法,是没有this对象的方法,因此不能访问任何非静态变量和方法。也就是在方法中不能使用this、super关键字。

    • 反之可以,实例方法可以访问静态方法、变量,因为静态方法与类绑定

    3. 修饰变量

    通常称之为静态变量,静态变量被所有对象所共享,在内存中只有一个副本。存放于方法区(共享数据区)的静态区

    • 静态变量的初始化顺序是按照定义顺序进行初始化的
    • static是不允许用来修饰局部变量
    • 静态变量的生命周期跟随类而不随对象

    4. 修饰代码块

    静态代码块可以放置于任何地方,初始化时将根据定义顺序进行。静态代码块将于类初次加载时调用,只会执行一次。

    • 静态代码块调用是早于同级别构造函数和非静态构造块的
    • 非静态初始化块的代码会在类构造函数之前执行,通常用于多个重载构造函数进行代码复用

    5. 静态导包

    用import static代替import静态导入包是JDK1.5中的新特性。
    import static java.lang.System.out;,意思是导入这个类里的静态方法。

    • 注意这里只能导入静态方法或者静态类
    • 这里导入可能会产生冲突。例如同时导入import static java.lang.Integer.*;import static java.lang.Long.*;

    相关文章

      网友评论

          本文标题:java static学习记录

          本文链接:https://www.haomeiwen.com/subject/jbraeqtx.html