Student s = new Student();在内存中做了哪些事情?

【Student s = new Student();在内存中做了哪些事情?】

1加载Student.class文件进内存

2在栈内存为s开辟空间

3在堆内存为学生对象开辟空间

4对学生对象的成员变量进行默认初始化

5对学生对象的成员变量进行显示初始化

6 通过构造代码块对学生对象进行初始化(若没有就不执行)

7通过构造方法对学生对象进行初始化 (通过构造方法对学生对象的成员变量赋值)    对象初始化完毕。

8学生对象初始化完毕,把对象地址赋值给s变量,让变量s指向学生对象。

时间: 2024-10-19 22:37:32

Student s = new Student();在内存中做了哪些事情?的相关文章

创建一个对象都在内存中做了什么事情

创建一个对象都在内存中做了什么事情? 1:先将硬盘上指定位置的Person.class文件加载进内存. 2:执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p. 3:在堆内存中开辟一个实体空间,分配了一个内存首地址值.new 4:在该实体空间中进行属性的空间分配,并进行了默认初始化. 5:对空间中的属性进行显示初始化. 6:进行实体的构造代码块初始化. 7:调用该实体对应的构造函数,进行构造函数初始化.() 8:将首地址赋值给p ,p变

java中的各种数据类型在内存中存储的方式

1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间.释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作.但同时,它也加重了JVM的工作.因为,GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请.引用.被引用.赋值等,GC都需要进行监控. 2.什么叫java的内存泄露 在j

求int型数据在内存中存储时1的个数

1.求int型数据在内存中存储时1的个数 输入一个int型数据,计算出该int型数据在内存中存储时1的个数. 我们非常easy想到例如以下方法: #include <iostream> using namespace std; int main() { int n,cnt=0; cin>>n; while(n) { if(n%2==1) cnt++; n=n/2; } cout<<cnt<<endl; return 0; } 在对代码进行測试时输入负数无法得

Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good

引言 接口是面向对象程序语言中一个很重要的元素,它被描述为一组服务的集合,对于客户端来说,我们关心的只是提供的服务,而不必关心服务是如何实现的:对于服务端的类来说,如果它想实现某种服务,实现与该服务相关的接口即可,它也不必与使用服务的客户端进行过多的交互.这种良好的设计方式已经受到很广泛的应用. 早在Delphi 3的时候就引入了接口的概念,当时完全是因为COM的出现而诞生的,但经过这么多版本的进化,Delphi的接口已经成为Object Pascal语言的一部分,我们完全可以用接口来完成我们的

java中数据在内存中的状态

此文转自csdn,看完瞬间就明白了 首先,我们知道,Java中的数据类型分为两种,基本数据类型和引用数据类型.而基本数据类型,为什么不直接使用他们的包装类呢,例如Integer.Long等等呢?下面是Thinking in Java 中的解释: 有 一系列类需特别对待:可将它们想象成“基本”.“主要”或者“主”(Primitive)类型,进行程序设计时要频繁用到它们.之所以要特别对待,是由于 用new创建对象(特别是小的.简单的变量)并不是非常有效,因为new将对象置于“堆”里.对于这些类型,J

移码及浮点数在内存中的存储方式

首先说一下十进制的小数怎么转化为二进制的小数,计算机根本就不认识10进制的数据,他只认识0和1,所以,10进制的小数在计算机中是用二进制的小数表示的. 十进制的小数转化为二进制的小数的方法: 可以简单的概括为正序取整,将十进制的小数部分乘以2,然后取整数部分. 例如将0.2转化为二进制的小数,那么0.2*2=0.4,其整数部分是0,所以二进制小数的第一位为0,然后0.4*2=0.8,其整数部分是0,所以二进制小数的第二位为0,然后0.8*2=1.6,其整数部分是1,所以二进制小数的第三位是1,然

浮点数如何在内存中存储

首先,将10进制的小数0.1转换为二进制,方法如下: 0.1*2==0.2  取0.2的整数部分, 结果为0.0 0.2*2==0.4  取0.4的整数部分, 结果为0.00 0.4*2==0.8  取0.8的整数部分, 结果为0.000 0.8*2==1.6  取1.6的整数部分, 结果为0.0001 0.6*2==1.2  取1.6的整数部分, 结果为0.00011 0.2*2==0.4  取0.4的整数部分, 结果为0.000110 最后这一步开始循环,因此0.1的二进制为数为: 0.00

JavaScript 变量类型 保存内存中的位置 和 引用

1. JavaScript变量 基本类型值在内存中占据固定大小的空间 因此被保存在栈内存中. 从一个变量向另一个变量复制基本来下的值 会创建这个值得一个副本. 引用类型的值是对象 保存在堆内存中. 包含引用类型值得变量实际上包含的并不是对象本身 而是一个指向该对象的指针. 从一个变量向另一个变量复制引用类型的值 复制的其实是指针 因此两个变量最终都指向同一个对象 2. 堆和栈 堆栈在数据结构里面的含义就是一组数据的存放方式 后进先出 push: 在最顶层加入数据 pop: 返回并移除最顶层的数据

浮点数在计算机内存中的存储方式

在计算机内存中,float型数据占4个字节,double型占8个字节,它们在计算机中的存储分为三个部分: 符号位:0代表正,1代表负. 指数位:将一个二进制数用科学计数法表示之后指数的值. 尾数位:用科学计数法表示的前面的数. 其中存储的方式如图 double型的数据存储方式与之类似,只不过能表示更大的数位 现在就用float型的数据来举例吧. 比如,12.5f为一个float型的浮点数,先把它转化为二进制数为1100.1,用科学计数法表示为1.1001*2^3.现在就可以表示把这个二进制数分为