自学Java系列 笔记2 高级类特性1

来源:互联网 发布:android 电子商城源码 编辑:程序博客网 时间:2024/06/16 20:01

关键字static(静态的)

在Java类中声明变量、方法内部类时,可使用关键字static做为修饰符。

static标记的变量或方法由整个类(所有实例)共享,如访问控制权限允许,可不必创建该类对象而直接用类名加‘.’调用

static成员也称类成员或静态成员,如:类变量、类方法、静态方法等

总结:

1.若需要一个类的多个对象共享一个变量,则该变量需要使用static 修饰

2.因为static 修饰的变量为类的所有实例所共享,所以 static 成员不属于某个类的实例,而属于整个类,所以在访问权限允许的情况下,可以使用“类名.”直接访问静态成员。

3.注意:在static方法内部只能访问类的static属性,不能访问类的非static属性。而在非static方法中可以直接来访问类的static属性

4.因为不需要实例就可以访问static方法,因此static方法内部不能有this,(也不能有super )

5.静态初始化指 对类的静态属性进行初始化。

5.1 不应该在构造器中对静态成员进行初始化:因为静态成员不因类的实例而改变

5.2静态代码块:使用 static 修饰的代码块,在类被加载时执行一次,且执行一次,可以在静态代码块中对静态成员变量进行初始化,先于非静态代码块和构造器执行

5.3 非静态代码块:先于构造器执行,每创建一个对象都会执行一次

 

静态初始化

1、一个类中可以使用不包含在任何方法体中的静态代码块(static block )当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。

2static块通常用于初始化static ()属性

class Person {

      publicstatic int total;

      static{

              total = 100;//total赋初值

      }

      ……//其它属性或方法声明

 }

 

 

 

 

 

类方法(classMethod)

1.在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。

2.静态方法不能以任何方式引用thissuper关键字。与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。

3.main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,我们在以后的例子中会多次碰到

 

类属性、类方法的设计思想

1.类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些类属性不因对象的不同而改变,将这些属性设置为类属性。相应的方法设置为类方法。

2. 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用


0 0
原创粉丝点击