静态static的内存图与静态代码块
静态原理图解
static 修饰的内容:
是随着类的加载而加载的,且只加载一次。
存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
它优先于对象存在,所以,可以被所有对象共享。
注意:
根据类名称访问静态成员变量的时候
全程和对象没有关系,只和类有关系
静态代码块
静态代码块:定义在成员位置,使用static修饰的代码块{ }。
位置:类中方法外。
执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
格式:
public class ClassName{ static { // 执行语句 } }
作用:给类变量进行初始化赋值。用法演示,代码如下:
public class Game { public static int number; public static ArrayList<String> list; static { // 给类变量赋值 number = 2; list = new ArrayList<String>(); // 添加元素到集合中 list.add("张三"); list.add("李四"); } }
小贴士:
static 关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况
下,去调用方法。下面将介绍两个工具类,来体现static 方法的便利。
Class类
package demox.demopro; public class Class { static { System.out.println("静态代码块执行"); } public Class(){ System.out.println("构造方法"); } }
Class类
package demox.demopro; /* 静态代码块的格式是: public class类名称{ static i //静态代码块的内容 } } 特点:当第一次用到本类时,静态代码块热行唯一的一次。 静态内容总是优先于非静态,所以静态代鸠块比构造方法先执行。静态代码块的典型用途: 用来一次性地对静态成员变量进行赋值。* / */ public class Class01 { public static void main(String[] args) { Class aClass = new Class(); Class bClass = new Class(); } }