static关键字,用于修饰类的成员,如成员变量,成员方法以及代码块。
在一个java类中,可以 用static关键字来修饰成员变量,该变量被称作静态变量。不管实例化多少对象,静态变量的数据在内存中只有一份,被所有实例所共享,可以使用“类名.变量名”的形式来访问,也可以使用“对象名.变量名”来访问。不可以用于修饰局部变量。
在一个静态变量中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能被访问,而静态方法在被调用时不用创建任何对象。
一般全局变量都要指定,也可以不写,不写表示隐式申明为(friendly);
局部变量不能指定,他的范围只在方法中有效,如果在for循环或者if中申明他的作用范围就更小了
只在for/if中有效,当然了通常我们不分这么细
Java中的类是什么时候被加载到虚拟机?
(来源:http://wenda.so.com/q/1385882376061888)
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。
2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的class实例的缓存中获取,谁用谁取就可以了,不会再去文件系统中加载.class文件了。
当类被加载时,静态代码块被执行,由于类只加载一次,因此静态代码块只执行一次。