java基础:成员变量和静态变量有什么不同?

admin 百科 11
成员变量属于对象,静态变量属于类本身;前者各对象独立副本、堆内存分配、需实例访问、可被子类隐藏;后者所有对象共享、方法区分配、可类名访问、仅能被隐藏、静态方法不可直接访问。

java基础:成员变量和静态变量有什么不同?-第1张图片-佛山资讯网

成员变量属于对象,静态变量属于类本身。这是最核心的区别。同一个类的不同对象,各自拥有独立的成员变量副本;而所有对象共享同一份静态变量。

内存分配位置不同

成员变量随着对象的创建而分配在堆内存中,对象被回收时随之消失;静态变量在类加载时就分配在方法区(JDK 8 及以后是元空间),生命周期与类一致,直到类卸载才释放。

访问方式不同

成员变量只能通过对象实例访问(如 obj.name);静态变量既可以通过类名直接访问(如 MyClass.count),也可以通过对象访问(但不推荐,容易混淆语义)。

初始化时机和方式不同

成员变量在对象创建时初始化,可设默认值,也可在构造方法、实例初始化块中赋值;静态变量在类加载时初始化,可通过静态初始化块或直接赋值完成,且只执行一次。

标签: java 工具 区别

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~