Java 中 static 修饰符:静态成员与实例成员的区别 - 详解与示例
使用static修饰的成员是静态成员,而不使用static修饰的成员是实例成员。\n\n1. 访问方式:静态成员可以通过类名直接访问,也可以通过实例对象访问;实例成员只能通过实例对象访问。\n 示例:\n java\n class Example {\n static int staticMember;\n int instanceMember;\n }\n // 访问静态成员\n Example.staticMember = 10;\n Example instance1 = new Example();\n instance1.staticMember = 20;\n // 访问实例成员\n instance1.instanceMember = 30;\n \n\n2. 存储位置:静态成员存储在静态区,实例成员存储在堆内存中的对象中。\n 示例:\n java\n class Example {\n static int staticMember;\n int instanceMember;\n }\n Example.staticMember = 10; // 静态成员存储在静态区\n Example instance1 = new Example();\n instance1.instanceMember = 20; // 实例成员存储在堆内存中的对象中\n \n\n3. 生命周期:静态成员的生命周期和程序的生命周期相同,当类加载时创建,直到程序结束才销毁;实例成员的生命周期与对象的生命周期相同,当对象创建时创建,当对象被垃圾回收器回收时销毁。\n 示例:\n java\n class Example {\n static int staticMember;\n int instanceMember;\n }\n Example.staticMember = 10; // 静态成员生命周期与程序相同\n Example instance1 = new Example();\n instance1.instanceMember = 20; // 实例成员生命周期与对象相同\n \n\n4. 内存占用:静态成员只会有一份内存空间,被所有实例对象共享;实例成员每个对象都会有自己的内存空间。\n 示例:\n java\n class Example {\n static int staticMember;\n int instanceMember;\n }\n Example.staticMember = 10; // 静态成员只有一份内存空间\n Example instance1 = new Example();\n instance1.instanceMember = 20; // 每个对象都有自己的实例成员内存空间\n \n\n需要根据具体的需求和使用场景来选择使用static修饰成员还是不使用static修饰成员。
原文地址: https://www.cveoy.top/t/topic/pTtu 著作权归作者所有。请勿转载和采集!