前面两篇分别介绍了static的属性以及方法。本篇就作一个收尾,介绍下剩下的。java
在以前的总结:this
静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”便可调用类方法,更加方便。可是看上面的就不是特别直观,不便于阅读代码。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的理解。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