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