Java0108学习

本文围绕Java进行内存分析,通过无参构造器、有参构造器的例题,阐述了对象在栈、堆、方法区的存储情况。还介绍了this关键字在属性、方法、构造器中的使用,以及static关键字的特性和调用方式,帮助理解Java内存机制和关键字用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存分析

内存分析1例题(无参构造器)
在这里插入图片描述

解释语句:Person p1 = new Person();
1 看等号右边 new Person 。Person是在方法区内,有字节码信息。
2 new一个对象放在堆里面。地址一般为16进制(图例为ox99,ox是16进制标志)person中有两个属性,无方法体。
3 p1是新对象,存放在栈里面。有位子存放堆里对应p1的地址数据。
内存分析2例题(有参构造器)

解释语句:Person p = new Person(1,20,”海淀”);

在这里插入图片描述

栈:局部变量,形参
堆:new出来的东西
方法区:字节码信息
解释语句:Person p = new Person(1,20,”海淀”);
1 从=右边开始解释,先加载出来Person的字节码信息(保存在方法区,)
2 参照字节码信息开始创造对象,有一个字节码信息指向,开辟完空间开始初始化(放入栈里面,a=1,b=20,c=ox99先进后出)
3 对于字符串“海淀”有专门的存储区域,在方法区,名字叫字符串常量池
特点:唯一(有直接用,没有就放进去)
4 id=a 即堆里面放入id=a,以此类推
5 当构造器执行完了,形参数据就没有用了,栈中的abc自动消除
6 当下图代码执行完成后,形成一个区域,名字随便写,例如0x88

在这里插入图片描述

7 把0x88赋给左侧p,p是局部变量放入栈,p中写地址0x88。
8 当这句话执行完了。p就没了,p指向的数据(堆中数据)也就没了,垃圾收集器收走了。
内存分析3例题
This–属性
This指的是当前对象自身。
你想要表示一个属性的时候,前面就加上this.,在重名的时候不可以省略,其他情况可省略。
This–方法
与其他方法中的代码相同(代码复用率低),引用this调用自身Person
/this./eat();//同一个类中this可省略
This–构造器
方法可以用this传递,构造器也可以。
this(age); //this修饰构造器必须放在第一行,与方法的表示方式不同。

Static
Static修饰的东西先与对象存在(static在方法区内,里面有没有东西都会存在。)
Static中只会保留最后的数值。
在这里插入图片描述

是不是所有的属性都有static修饰?
对于不常用的内容你用static修饰就消耗空间了。

Static修饰怎么调用:
(1)对象名.属性名:systom.out.println(t1.sid);
(2)类名.属性名:----------推荐
Test.sid=90;
System.out.println(Test.sid);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值