static :
1,修饰符,用于修饰成员变量和成员方法
2,被static修饰后的成员变量被对象共享。
3,静态优先于对象存在。
4,静态成员可以被对象访问,也可以被类名访问。
5,静态随着类的加载而加载。
对象特有的数据存储到对象的堆内存中。
对象共享的数据存储在方法区的静态区中。
什么时间定义静态?
1,静态变量:当变量被对象共享时。
2,静态函数:方法中没有访问到非静态变量时(特有数据)
静态使用的注意事项:
1,静态方法只能访问静态成员(所以静态虽然多了一种用类名调用的方式,但是也出现了访问的局限性)。
2,非静态方法即可以访问静态又可以访问非静态。(静态先存在于方法区)非静态都属于对象。
3,静态方法中不可以出现this,super关键字。 因为this代表对象,static方法存在是还没有对象。
4,主函数是静态的。
静态变量和成员变量的区别:
1,在内存空间存储的位置:
a) 静态变量:方法区的静态区中。
b) 成员变量:堆内存中。
2,什么周期:
a) 静态变量:随着类的加载而加载,随着类的消失而消失。
b) 成员变量:随着对象的创建而出现,随着所属对象变成垃圾被收回而消失
3,调用方式:
a) 成员变量:只能被对象调用。
b) 静态变量:既可以被对象调用,也可以被类名调用。
4,数据体现:
a) 成员变量的值称为对象中的特有数据。
b) 静态变量的值称为对象中的共享数据。
只有类中的成员变量被用到,类才会被加载。
main函数:
public static voidmain(String[] args)
public : 主函数是一个功能,被jvm调用所以权限要足够大。
static : jvm调用主函数,是不需要对象的。
void : 主函数没有返回值。
main : 主函数固定的名称的,jvm认识。
(String[] args): 主函数的参数列表,就一个参数,字符串数组类型。
arguments-->args:
静态代码块:
static {}
特点:
随着类的加载而执行,只执行一次。
作用:
给类进行初始化。
类被加载(类中的成员被调用)à静态代码块à构造代码块à构造函数
类名为public时 ,.java文件名必须与类名同名。