Java对象-在内存中是怎样执行的?

devtools/2024/11/6 12:25:07/

首先,java程序是在JVM中跑的,而JVM是在内存中执行的,虚拟机为了更好的执行程序,会把内存划分为三个区域,栈内存,堆内存,方法区,其中方法区用来存放类文件

java">class Student{String name;double chinese;double math;public void printTotalScore(){System.out.println(name+"的总分是"+(chinese+math));}public void printAverageScore(){System.out.println(name+"的平均分是"+(chinese+math)/2);}
}
class StudentTest{public static void main(String[] args) {Student s1=new Student();s1.name="tom";s1.chinese=50;s1.math=80;s1.printAverageScore();s1.printTotalScore();}
}

对于这个代码来说,studenttest拿到方法区去执行,然后到main方法,把main方法提到栈内存中去跑,栈是后进先出,先进后出的,然后到Student s1=new Student(),首先Student s1会把student类加载到方法区,然后在栈内存的main方法中开辟一个空间给变量s1。new Student()会在堆内存中开辟一个对象,其中包括一个类的地址,指向方法区的student类,栈内存的s1中会存储一个堆内存中对象的地址

java">        s1.name="tom";s1.chinese=50;s1.math=80;

接着这三行,会利用s1指向的堆内存中的对象分别对其赋值

java">        s1.printAverageScore();s1.printTotalScore();

接着这两行会先通过s1的地址找到堆内存中的对象,再通过对象中存储的类的地址,找到方法区的student类,再调用student类中的这两个方法,然后把这两个方法拿到堆中去执行,执行完出栈继续往下执行main函数。

在这里插入图片描述
总结一下就是变量存栈里,栈里有对象的地址,对象存堆里,堆里有方法区的地址,方法区存方法,在栈中调用
小结:
在这里插入图片描述


http://www.ppmy.cn/devtools/131756.html

相关文章

JS之正则表达式

一、什么是正则表达式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…

软件测试面试题个人总结

前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些面试题…

HTMLCSS:3D 旋转卡片的炫酷动画

效果演示 这段代码是一个HTML和CSS的组合&#xff0c;用于创建一个具有3D效果的动画卡片。 HTML <div class"obj"><div class"objchild"><span class"inn6"><h3 class"text">我是谁&#xff1f;我在那<…

HTTP 和 HTTPS 的区别

安全性&#xff1a; HTTP是一种超文本传输协议&#xff0c;信息是明文传输&#xff0c;不提供任何数据加密。这意味着在传输过程中&#xff0c;数据可能会被窃取、篡改或监听&#xff0c;存在较大的安全风险‌。 HTTPS&#xff0c;是 HTTP 的安全版&#xff0c;通过 SSL 或者…

如何判断本地DNS是否污染

本地DNS污染是一种比较复杂且会对网络访问产生负面影响的现象。DNS即域名系统&#xff0c;它的主要功能是将便于人们记忆的域名转换为计算机能够理解的IP地址。本地DNS污染是指在本地网络环境中&#xff0c;DNS解析过程受到恶意干扰或错误配置的影响&#xff0c;使得域名被解析…

ArkUI常用布局:构建响应式和高效的用户界面

在HarmonyOS应用开发中&#xff0c;ArkUI作为用户界面开发框架&#xff0c;提供了多种布局方式来帮助开发者构建响应式和高效的用户界面。本文将详细介绍ArkUI中的常用布局方式&#xff0c;包括线性布局、层叠布局、弹性布局、相对布局、栅格布局、列表和轮播布局&#xff0c;并…

★ C++进阶篇 ★ C++11(上)

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将和大家一起学习C11 ~ ​❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页&#xff1a;椎名澄嵐-CSDN博客 C基础篇专栏&#xff1a;★ C基础篇 ★_椎名澄嵐的博客-CSDN博客 C进阶篇专栏&#xff…

从头开始学PHP之面向对象

首先介绍下最近情况&#xff0c;因为最近入职了且通勤距离较远&#xff0c;导致精力不够了&#xff0c;而且我发现&#xff0c;人一旦上了班&#xff0c;下班之后就不想再进行任何脑力劳动了&#xff08;对大部分牛马来说&#xff0c;精英除外&#xff09;。 话不多说进入今天的…