static关键字:
static在Java中可以修饰属性、方法、代码块。
1、static修饰属性
(1)在程序中使用static声明属性,此属性成为全局属性(也称为静态属性)。声明有全局属性的类产生的所有对象公用此静态属性。类的公共属性最好由类进行修改。有时可以把使用static声明的属性称为类属性。
类属性调用: 类名称.static属性
(2)在Java程序中有一种特殊的属性,就是常量,用static修饰的常量称为静态常量,同时也是全类公有。
class Math{
. . . . . .
public static final double PI = 3.14;
. . . . . .
}
在程序中可以直接使用Math.PI获取这个常量。
注意:静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
2、static修饰方法
用static声明的方法有时被称为类方法,可以直接由类名直接调用。
注意:(1) 非static声明的方法可以去调用static声明的方法或属性。但是static声明的方法不能调用非static声明的属性和方法。
(2) 在static方法里不能出现this或者super等关键字。
(3) 父子类中,静态方法只能被静态方法覆盖,父子类中,非静态方法只能被非静态方法覆盖
3、static修饰java代码块
static的另一个作用是用来修饰类里一个独立的代码块,static代码块可以放置在类中的任何位置,类中也可以有过个static代码块。在类被初次加载的时候,会按照static块的顺序执行static块,并且只会执行一次。
类的加载:JVM在第一次使用一个类时,会到classpath所指的路径里去找这个类所对应的字节码文件,并读进JVM保存起来,这个过程称之为类加载