我正在学习java语言,我有一个问题,在类中声明的变量例如int b=17作为属性;不在特定方法中,也不是静态的 无需调用 new 构造函数将其存储在堆中。默认情况下它在程序执行过程中存储在哪里?
在 Java 中,当您将变量声明为类中的实例变量(也称为成员变量或属性)时,它与该类的每个实例相关联,而不是与该类的任何特定方法或实例相关联。
当从类创建对象时,这些变量存储在对象的内存空间中。让我们来详细分析一下:
当你声明一个实例变量时,如 int b = 17;在课堂上,它 成为对象状态的一部分。
每次使用 new 关键字创建对象时,都会生成一个单独的对象 创建实例变量的副本并与之关联 特定对象。
这些实例变量的内存是在堆上分配的,并且 只要对象存在,它就存在。
公共类我的类{ 整数 b = 17; // 这是一个实例变量
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
// obj1 and obj2 have their own separate 'b' variables
System.out.println(obj1.b); // prints 17
System.out.println(obj2.b); // prints 17
// You can modify the values independently
obj1.b = 20;
System.out.println(obj1.b); // prints 20
System.out.println(obj2.b); // prints 17
}
}
总而言之,类中声明的实例变量在创建对象时存储在堆内存中,并且每个对象都有自己的这些变量的副本。