java创建对象底层原理是什么,java中的对象到底在内存中是什么,别说什么类的具体实例化
发布网友
发布时间:2022-04-24 13:58
我来回答
共2个回答
热心网友
时间:2023-10-15 10:11
对象是类的实例,同一个类的不同实例当然拥有相同的机器指令(相同的方法行为),不同的实例拥有不同的属性内存,相同的指令操作不同的内存得到各自的结果。
举个例子:
我们描述一个类:水果,它有两个属性,名称和数量,一个方法设置数量(setNum)。
现在,我们实例两个水果,一个苹果和一个西瓜(假如初始是一个),此时得为苹果和西瓜各自准备一个不同的存放空间(不能重叠了是吧,这就是为不同对象分配不同的堆内存),然后我们为两个对象都执行设置数量方法(都是setNum,同一个行为),假如苹果改为2,西瓜
改为5,此时两个不同对象执行了同一个方法得到个各自的结果。
下面补充一些官方描述:
java创建类时,也即是你所说的原类,其实只是对那个类的对象的外观与行为的描述(此时并未开辟堆内存,当然static例外)。只有当使用new创建那个类的对象时才会分配数据存储空间,其方法才供外界调用。
java为指定类创建对象,其实就是为类的描述创建属性值存储空间并初始化,并在堆栈中创建其指针,如果有方法局部变量,方法也会有自己的临时堆栈。
一个对象是一个堆栈地址所指向的一组堆内存,然后对象的行为则是java语言编译后的机器指令代码,指令执行操纵内存的数据。
如果有更合理的理解,或者认为我的理解有不对的地方欢迎指正,学习就是不断接近*。
热心网友
时间:2023-10-15 10:11
java是用c++写的!你尝试往c++那方面想一下!然而c++的类又和c++的结构体有惊人的相似之处。然而c++的结构体又是c语言的结构体的加强!c语言的结构体呢?又是存放数据的一个集合!
class Student{
String name;
int age;
int score;
}
/*结构体 和数组差不多,只不过数组只能存放相同的数据结构!相同地:结构体大小等于里面的数据结构大小之和!*/
/*大小可以使用sizeof算一算……sizeof(stu)=sizeof(stu.name)+sizeof(stu.age)+sizeof(stu.score)*/
struct student{
char name[10];
int age;
int score;
}stu;
看!是不是很像!功能也大致相同!