day26

今天:本次三节 Java 面向对象课程依次学习基础数据类型与引用数据类型的底层区别、this 关键字的内存运行原理、成员变量和局部变量的区分规则,基础类型直接在栈内存存放真实数值,引用类型栈内只保存对象堆内存地址;当对象被实例化之后,this 代表当前堆当中的对象地址,在构造方法、成员方法依靠 this 访问对象属性,还能够实现构造方法之间的互相调用;成员变量定义于类内、方法之外,存放于堆对象空间,具备默认初始值,局部变量写在方法、代码块里面,存放在栈内存,使用前必须手动赋值,遇到变量名称重合时遵循就近优先原则,需要借助 this 关键字指明成员变量,以此区分两层作用域的同名变量。
晚上和朋友出去逛了会,天有点阴快下雨了。
帮爸妈做饭和家务。
问题和解决方案:练习这三节面向对象知识点的时候我遇到了三处很头疼的 bug。一开始我老是分不清基础类型和引用类型传参,在方法里面修改基础类型参数,还天真以为外面的数据会跟着改变,过后才想起基础类型只是复制一份数值。
之后对于 this 关键字我一直懵圈,创建好几个对象去调用同一个方法,我总是分不清 this 到底指向哪一个堆里面的实例,调用构造方法的时候顺序搞错,代码直接运行失败。
最麻烦的就是成员变量和局部变量重名,代码默认优先读取方法里的局部变量,折腾好久对象的属性始终改不动。
后面我慢慢摸索出办法,传参的时候心里分清数值拷贝和地址传递,想要改动原数据就用引用类型;写代码时脑补内存图,记住谁调用方法 this 就代表谁;遇上重名变量直接加上 this,专门区分开属性和局部变量,写完再检查一遍变量的作用域,现在出错已经少很多了。
明天继续学习Java。

posted @ 2026-08-11 21:49  王军炜  阅读(9)  评论(0)    收藏  举报