学Java· 从new说对象实例化

学Java· 从new说对象实例化前言各位铁汁们大家好呀 我们上次博客讲了 通过 Studentstude newStudent 就可以实例化一个对象 这个对象就有 Student 类中的所以成员变量 可是对象 student1 和类 Student 到底是怎样建立联系的 在内存中到底发生了什么 想要知道内存中发生了什么 我们先来了解两个内存概念 堆内存 保存对象的属性内容 堆内存需要用 new 关键字来分配空间 栈内存 保存的是堆内存的地址 在这里为了分析方便 可以简单理解为栈内存保存的是对象的名字

目录

前言

概念了解

第一种情况

第二种情况


更正说明:

我之前的的标题有点文不对题,我这篇博客的内容明明说的是:java中对象创建的过程,对内存之种底层的东西,我其实提的不太多。

所以我原来的标题:《当你实例化对象时,在内存中到底发生了什么》是不合适的

前言

各位铁汁们大家好呀?,我们上次博客讲了,通过 Student student1 = new Student();就可以实例化一个对象,这个对象就有Student类中的所以成员变量。可是 对象student1 和 类Student到底是怎样建立联系的,在内存中到底发生了什么??

学Java· 从new说对象实例化

概念了解

想要知道内存中发生了什么,我们先来了解两个内存概念??

  1. 堆内存:保存对象的属性内容。堆内存需要用new关键字来分配空间;
  2. 栈内存:保存的是堆内存的地址(在这里为了分析方便,可以简单理解为栈内存保存的是对象的名字)。

Student student1 = new Student()

这行代码可以分为两部分

1、Student student1 声明对象,会在栈上开辟一块区域,名叫student1,里面存了:堆中开辟的内存的地址?

2、new Student() 实例化student1对象,在堆里开辟了一块区域,名叫student1?

学Java· 从new说对象实例化

当用等号将两者关联的时候,其实就是将栈上声明的对象student1,指向堆上实例化的具体空间

如图所示:

学Java· 从new说对象实例化

从图中也可以看出,在“=”关联的时候,就是将堆中student1开辟内存的地址0X99存放到了栈里,可以吧内存地址看成Student类的一把钥匙?

实例化后对象student1获得了这把钥匙,所以可以在类中任意拿东西,即调用属性、方法等?

(大多数情况下可以这么认为,其实变量名student1储存的不一定是地址?)

第一种情况

因此可以通过对象名 student1 ,给堆中的具体成员变量赋值、调用?。

其实栈中存放的就是堆中某一个内存的引用,这就是对象引用的概念,其中的 student1 也被称作对象的引用变量?

class Student { String name; //学生类的属性 int age; public void eat() { System.out.println(name + "在吃饭, 他" + age + "岁了"); // 学生类的行为(方法) } } public class TestDemo3 { // 不同的实例化对象在栈中拥有不同的空间,他们也指向堆中不同的内存地址 public static void main(String[] args) { Student student1 = new Student(); // 学生对象student1 student1.name = "小强"; // 通过 对象名.属性 来给堆中的具体成员变量赋值 student1.age = 18; student1.eat(); // 调用类中的eat()方法 Student student2 = new Student(); // 学生对象student2 student2.name = "小红"; student2.age = 23; student2.eat(); } }

学Java· 从new说对象实例化

第二种情况

class Dog { String name; int age; public void show() { System.out.println("姓名:" + name + " 年龄: " + age); } } public class TestDemo4 { public static void main(String[] args) { Dog one = new Dog(); Dog two = one; } } 

对象one在实例化后,拥有一块栈的空间,空间里存放堆的一个内存地址?

那么将one赋值给two之后,two的栈的空间里,也会存放one拥有的堆的内存地址?。

用一个很形象的比喻,妻子带着一幅画嫁给了丈夫,那么她的画也就属于丈夫了,两人共有?。

不论是丈夫还是妻子,只要是对画做出了最后的更改,那么这幅画的内容就会改变。即最后一次修改是有效的,会覆盖掉原先的内容?

学Java· 从new说对象实例化

用代码来展示:

class Dog { String name; int age; public void show() { System.out.println("姓名:" + name + " 年龄: " + age); } } public class TestDemo4 { public static void main(String[] args) { Dog one = new Dog(); Dog two = one; one.name = "阿黄"; one.age = 10; two.name = "旺财"; two.age = 3; one.show(); System.out.println("========这是分割线========"); two.show(); } } 

学Java· 从new说对象实例化

怎么样!通过对象one对姓名和年龄的赋值是不是被覆盖掉了,内存中的场景大概是这样 

学Java· 从new说对象实例化

 栈中的对象one、two同时指向堆中的同一块空间,也就是不同的栈可以修改同一块堆内存的内容?,这样堆内存的内容自然就是最后对象two所赋值的内容了?。

哈哈! 原来在我们实例化new一个对象的时候,内存里偷偷干了这么多事啊?!

学Java· 从new说对象实例化

各位铁汁们,我们下篇博客见,嘻嘻? 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205849.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午5:02
下一篇 2026年3月19日 下午5:02


相关推荐

  • 淘宝,天猫,京东,苏宁抢购茅台、手机等脚本(适合兼职,亲测可用)「建议收藏」

    淘宝,天猫,京东,苏宁抢购茅台、手机等脚本(适合兼职,亲测可用)「建议收藏」由来:最近用钱比较多,缺钱,自己也是除了一份死工资就没有别的收入了,而且每个月的工资发了就立马还给了马爸爸,所以一直在想是不是工作之余搞点什么兼职做做,但是一直也是找不到什么门路。碰巧看到uc给我推了一个文章(其实一直有推只是之前没有想法每注意),说天猫,京东,苏宁这些网购平台的茅台90%都是买来卖的,一瓶利润能有一千块。我顿时有了想法,就想着能不能搞个脚本啥的去抢抢,总比自己手动来得好,然后就上网去找脚本,修修补补改改,基于别人的基础上搞了个脚本(目前只有安卓版,后续可能会出苹果的)。然后坚持了几天,

    2022年5月16日
    106
  • idea2021.7.15激活码【2021.7最新】

    (idea2021.7.15激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsa…

    2022年3月21日
    49
  • Win7 64的cmd控制台进入下级目录和返回上级目录(上级目录cd .. 下级目录cd+文件名称)

    Win7 64的cmd控制台进入下级目录和返回上级目录(上级目录cd .. 下级目录cd+文件名称)本博客主要总结在 win764 位系统下 在 cmd 控制台 一级一级进入目录 然后再一级一级返回上一级目录 具体的如下面所述 背景知识 a1 进入下一级目录命令 nbsp nbsp nbsp nbsp cd 文件夹名称 nbsp nbsp cd 文件夹名称 a2 返回上一级目录命令 nbsp nbsp nbsp nbsp cd nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp cd 下面我要在 cmd 控制台一级一级进入文件夹 D 1test 2test 3test 4tes

    2025年9月20日
    5
  • 电子琴入门教程视频电子琴简谱

    电子琴入门教程视频电子琴简谱电子琴入门教程视频电子琴简谱9套少儿电子琴教程1,儿童电子琴启蒙(上下集)2,儿童专用-简谱五线谱视频教程3,电子琴启蒙视频教程4,儿童电子琴启蒙-全套教程5,少儿电子琴教程6,少儿电子琴入门7,少年儿童电子琴初级、中级、高级教程8,经典儿童歌曲歌谱大全9,儿童电子琴启蒙文档网盘链接:链接:https://pan.baidu.com/s/1PpguBcJOeS82SzELRyG9PA提取码:love领到了给个赞鼓励下哦~…

    2022年8月29日
    8
  • pycharm + docker 环境创建

    pycharm + docker 环境创建吐个槽 公司不给用自己的笔记本 windows 环境莫名其妙的配置不起来 之前装了个 GPU 驱动 tensorflow 就一直装不上 hanlp 就一直装不上 后来就用 docker 公司服务器就莫名其妙的一直卡一直卡 没办法 只能用 windows docker 都是泪 pycharm 需要用专业版的 配置 docker 的环境步骤参考 https www jetbrains com help

    2026年3月27日
    2
  • 四大顶流AI绘图模型真实评测 – Midjourney、Adobe、SD、DALLE

    四大顶流AI绘图模型真实评测 – Midjourney、Adobe、SD、DALLE

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号