第六章 static、final和常量设计 第一节 static

static(1):

--static:静态的,Java中特殊的关键字

--Java中的static关键字(可以作用在):

(1)变量

(2)方法

(3)类

(4)匿名方法块

static(2):

--静态变量,类共有成员

(1)查看例子Potato.java

(2)static变量只依赖于类存在(通过类就可访问),不依赖于对象实例存在。也就是说,如果类中存在一个static变量,那么可以通过  类名.变量名  就可以访问,也可以通过  对象名.变量名  访问。

(3)所有的对象实例,如例子中的obj1和obj2关于price变量的值都共享存储在一个共同的空间(栈)。也就是说,不管这个类创建了很多很多的对象,在内存里面只有同一个static变量,只有一个拷贝。

第六章 static、final和常量设计 第一节 static

static(3):

--static方法

(1)静态方法也无需通过对象(可以但是会有警告,不推荐的访问方式)来引用,而通过类名可以直接引用。

(2)在静态方法中,只能使用静态变量,不能使用非静态变量。

(3)静态方法禁止引用非静态方法。

(4)非静态方法(普通方法)可以使用静态/非静态变量,引用静态/非静态方法。

--关于static修饰类(内部类),使用的机会较少,暂时忽略不计。

static(4):

--只在类第一次被加载时调用(哪怕new了多个对象,static块代码也只执行一次,非static块代码可以执行多次)。

--换句话说,在程序运行期间,这段代码值运行一次。

--执行顺序:static块 > 匿名块 > 构造函数。

参看StaticBlockTest例子

类里面除了成员变量,还有成员方法,实际上还有一种,就是代码块(静态或者非静态的),可以理解为一个没有名字的方法。

--不建议编写块代码,因为块代码会给程序带来混淆。建议将块代码封装成函数再调用。

 

总结:

第六章 static、final和常量设计 第一节 static