static内存方面...

Filed和Method

  • 被static修饰的成员变量和方法,存放在方法区,这在内存方面和普通的成员变量的不同表现在:
  • 1.对于成员变量,在堆中为对象开辟空间时,静态成员变量所在的空间,存放的是指向方法区的地址,而普通的是直接存放值or指向堆中的地址。(某老师说的,应该不对,根本和this不兼容
  • 2.对于方法,在堆中为对象开辟空间时,不会为静态方法开辟空间,但是会为普通方法开辟空间,存放指向方法区的地址(方法地址)。
  • 静态成员变量存放在方法区,同一个类的多个对象通过在堆区存放地址,来共享静态成员变量。
  • 因此静态成员变量可能在某些情况下会造成:过高的耦合,因为是多个对象共享的,只要有一个对象修改了该“静态成员变量”,相当于修改了所有对象中的该静态成员变量。因此将静态成员变量声明为final是一个不错的选择。
    static内存方面..._第1张图片
    Paste_Image.png

你可能感兴趣的:(static内存方面...)