堆栈方法区笔记记录

成员变量分两种:
1)实例变量:没有static修饰,属于对象,存储在堆中,有几个对象就有几份,通过对象点来访问
2)静态变量:由static修饰,属于类,存储在方法区中,只有一份,通过类名点来访问

堆:new出来的对象(包括实例变量)
栈:局部变量(包括方法的参数)
方法区:.class字节码文件(包括静态变量、所有方法)

  1. 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)何时用:加载/初始化静态资源(图片、音频、视频等)
  2. static final常量:

    1)必须声明同时初始化
    2)常常通过类名点来访问,不能被改变
    3)建议:常量名所有字母都大写,多个单词用_分隔
    4)编译器在编译时会将常量直接替换为具体的值,效率高
    5)何时用:数据永远不变,并且经常使用

你可能感兴趣的:(java,笔记)