static 关键字谈

静态变量:
静态变量在某种程序上与其他语言的全局变量相类似。
静态方法:
希望不必创建对象就可调用某个方法。也即方法不必和对象绑在一起。实现这种效果可以通过static关键字。即静态方法。
同静态成员变量一样,可以用类名直接访问静态成员方法。也可以用类的实例对象来访问静态成员方法,还可以在类的非静态的成员方法中像访问其他非静态方法一样去访问这个静态方法。
System.out.println();
//System是一个类名,out是System类的一个静态成员变量,println()方法则是out所引用的对象的方法。
System.gc()也是类的一个静态方法。


需要注意是:
一:在静态方法里只能直接调用同类中其他的静态成员(包括变量 和方法),而不能直接访问类中的非静态成员。这是因为:对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
二:静态方法不能以任何方式引用this和super关键字。因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。
三:main()方法是静态的,因为JVM在执行main()方法时,不创建其方法所在的类的实例对象,因为在main()方法中,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员。


静态代码块经常用来进行类属性的初始化。在类载入时被执行。且只被执行一次。

static{
System.out.println("The staticcode .");
}
结论:类是在第一次被使用的时候才被装载,而不是在程序启动时候就装载程序中所有可能要用到的类。

你可能感兴趣的:(jvm)