存放位置:
实例变量随着对象的建立存在于堆内存中,
类变量随着类的加载存在于方法区中
生命周期:
实例变量随着对象消失而消失
类变量随着类消失而消失
使用注意事项:
静态方法只能访问静态成员
静态方法中不可以定义this,super关键字(因为静态有限于对象存在)
主函数是静态的,作为程序入口,可以被jvm调用
利: 对共享数据进行单独空间存储,节省空间.
可以直接被类名调用
弊: 生命周期过长,访问出现局限性(只能访问静态)
public static void main(String[] args)解析:
/*
public:代表这该函数访问权限最大
static:代表主函数随着类的加载就已经存在
void:没有返回值
main:特殊单词,可以被jvm识别
String[] args:参数是一个数组,该数组中的元素是字符串
*/
主函数可以重载,但是jvm只识别main(String[] args);
静态变量:当对象中出现共享数据时
静态函数: 当功能内部没有访问到非静态数据时
若编译时,当前调用的class不存在时,会先去当前目录下找相应的java文件,如果有,则会直接编译,生成class文件
静态代码块:随着类的加载而执行,只执行一次,优先于主函数
用于给类进行初始化
构造代码块会执行多次;
运行顺序:静态代码块,构造代码块,构造函数
class StaticDemo
{
static
{
执行语句
}
void show(){}
}
StaticDemo.show();//加载
StaticDemo s1 = new StaticDemo;//加载
StaticDemo s1 = null;//未加载 |
|