static基础知识


static修饰变量成员变量如果被static修饰叫静态变量或类变量,他就能够在她的类的任何对象创建前被访问,而不必引用任何对象。
static修饰方法被static修饰的方法称为静态方法或类方法。静态方法能直接调用静态方法于静态变量,但是不能直接访问实例变量和实例方法。直接通过类名调用静态方法与变量。
静态块构造代码块给对象进行初始化,静态块给类进行初始化。静态代码块只会被运行一次,静态块中的变量是局部变量,一个类中可以有多个静态代码块,执行顺序按位置决定。

对象的内存

对象的内存由:头+普通成员变量+内存填充 三个部分构成
检查对象在堆中所占内存大小的方法
在这里插入图片描述

class People{  //有8个字节,是头的内存大小
}
class People{  
short c;
int a ;         //内存大小是16字节,
short b;     //头--8字节,int--4字节,short--2字节
}                //对象内存整体以8字节对齐,内部没有内存填充
class People{
   int a;          //内存16字节,静态变量不在堆中存放,与方法一起存放在方法区中
   static long b;
}

单例

该类只能生成一个对象

快加载单例

class People{
  private static People p=new People();
  private People(){
  }
  public static People GetPeople(){
  return p;
  }
}

慢加载单例

class People{
  private static People ;
  private People(){
  p=new People()
  }
  public static People GetPeople(){
  return p;
  }
}

类的初始化过程

  • 静态变量成员
  • 静态块
  • 实例变量成员
  • 实例块
  • 构造方法

猜你喜欢

转载自blog.csdn.net/y75xwr/article/details/83870070