static

Yao Yao on March 18, 2009

static member / field / method

  每 new 一个 object 即相当于申请了一块内存,用来存放这个 object 的 member/field/method。两个 object 的 member/field 不尽相同,同时也许因为如此,导致两个 object 的 method 不尽相同,从而这两个 object 要占据两块内存,而且它们之间没有共享 member/field/method。

  如果有 field/member/method 只与 class 有关,即不会在不同的 object 中有不同的值或操作,亦即在所有的 object 中表现都一样,可以将其设置为 static。可以将 static member/field/method 理解为归 class 所有,即存在于 class 的内存块中,而不是在 object 的内存块中。

  在调用时,可以直接使用 class.staticMember/staticField/staticMethod,当然,用 object.staticMember/staticField/staticMethod 也行,但这样无法体现 member/field/method 的 static 性。


static import

// 精确导入方式:
// import 最后只用写出成员名,就算是 method,也不用写出括号或是参数列表。
import static pkg.class/interface.staticMember;  
// 模糊导入方式:
// 这样可以将 class/interface 中的 staticMember 静态导入,在后面的代码中就不用写 class/interface.staticMember 这么麻烦,直接写 staticMember 了事。
// 如果是 field 就直接写 staticField,不用写 class/interface.staticField;
// 如果是 method 就直接写 staticMethod(),不用写 class/interface.staticMethod()。
import static pkg.class/interface.*;  

  例如:

import static java.lang.System.out;  

  之后就可以直接写 out.println(),不用写 System.out.println()。注意,这里 out 才是 static member,println 是 out 的方法,且不是 static,所以不能直接写 println()。



blog comments powered by Disqus