Java基础知识整理之static应用与总结

前面两篇分别介绍了static的属性以及方法。本篇就作一个收尾,介绍下剩下的。java

在以前的总结:this

  • 无论多少个对象,都使用同一个 static 属性
  • 使用 static 方法能够避免掉用实例化方法以后才能调用的限制。

导入 static 类的包

静态导入包

静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”便可调用类方法,更加方便。可是看上面的就不是特别直观,不便于阅读代码。code

Utils.java对象

package statics.utils;

public class Utils {

    public static int int2Str(String str) {
        return Integer.valueOf(str);
    }

    public static int add(int x, int y) {
        return x+y;
    }
}

Test.java内存

// 导入包 注意使用了 static 关键字
import static statics.utils.Utils.*;

public class Test {

    public static void main(String[] args) {
        // 上面使用了 static 关键字以后,能够直接使用 Utils 中的方法。
        add(1, 2);
    }
}

经过 类名.方法名

Test.javaget

// 导入包 注意没有使用 static 关键字了
import statics.utils.Utils;

public class Test {

    public static void main(String[] args) {
        // 上面使用了 static 关键字以后,能够直接使用 Utils 中的方法。
        Utils.add(1, 2);
    }
}

static 的实例用法

对于了解了static 方法以后,在来看几个实际的例子回顾与加深下对 static的理解。it

示例一:实现类实例化的统计

需求class

但愿在每次实例化对象的时候,都打印一个信息,输出产生第 x 个实例化对象。import

Test.java方法

class Book {
    
    static int Index = 0;
    
    Book(){
        Index++;
        System.out.println("实例化对象第"+ Index + "个");
    }
}

public class Test {

    public static void main(String[] args) {
        new Book();     new Book();     new Book();
        new Book();     new Book();     new Book();
    }
}

控制台输出

实例化对象第1个
实例化对象第2个
实例化对象第3个
实例化对象第4个
实例化对象第5个
实例化对象第6个

示例二:实现属性的自动设置

需求

例如:如今某一个类有一个无参构造方法,一个有参构造方法,有参构造主要的目的是传递一个 title 属性,可是但愿调用的无论是 有参构造方法仍是无参构造方法,均可觉得 title 设置内容,但愿内容不要重复。

Test.java

class Book {

    private String title;
    static int Index = 0;

    Book() {
        // 经过 this 关键字调用有参构造方法
        this("NOTITLE" + Index++);
    }

    Book(String title) {
        this.title = title;
    }
    
    public String getTitle() {
        return this.title;
    }
}

public class Test {

    public static void main(String[] args) {
        System.out.println(new Book("java").getTitle());
        System.out.println(new Book().getTitle());
        System.out.println(new Book().getTitle());
    }
}

控制台输出

java
NOTITLE0
NOTITLE1

总结

  • static 属性和方法能够再没有实例化对象的时候直接由类名称进行调用。
  • static 属性保存在全局数据区。内存区一共有四个:栈内存、堆内存、全局数据区(存放全部的数据)、全局代码区(存放全部的方法)
相关文章
相关标签/搜索