堆栈方法区笔记记录
成员变量分两种:
1)实例变量:没有static修饰,属于对象,存储在堆中,有几个对象就有几份,通过对象点来访问
2)静态变量:由static修饰,属于类,存储在方法区中,只有一份,通过类名点来访问
堆:new出来的对象(包括实例变量)
栈:局部变量(包括方法的参数)
方法区:.class字节码文件(包括静态变量、所有方法)
-
static:
1)静态变量:
1.1)由static修饰
1.2)属于类,存储在方法区中,只有一份
1.3)常常通过类名点来访问
1.4)何时用:所有对象所共享的数据(图片、音频、视频等)
2)静态方法:
2.1)由static修饰
2.2)属于类,存储在方法区中,只有一份
2.3)常常通过类名点来访问
2.4)静态方法中没有隐式this传递,所以静态方法中不能直接访问实例成员
2.5)何时用:方法的操作与对象无关
3)静态块:
3.1)由static修饰
3.2)属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块也只执行一次
3.3)何时用:加载/初始化静态资源(图片、音频、视频等)
-
static final常量:
1)必须声明同时初始化
2)常常通过类名点来访问,不能被改变
3)建议:常量名所有字母都大写,多个单词用_分隔
4)编译器在编译时会将常量直接替换为具体的值,效率高
5)何时用:数据永远不变,并且经常使用