------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
面向对象初步:
一、成员变量和局部变量内存分配问题:
当局部变量的代码执行到时,会为其开辟栈内存空间,一旦这段代码执行完毕后,立刻会释放 栈内存,也就是说,本来存在栈内存里面的属性之类的都会消失不见。
而成员变量不同,只有在new对象时,才会在堆内存中为对象开辟空间,只要这个对象有被类 引用变了指向,那么它就一直存在,当没有引用变量指向它时,它就变成垃圾,但是并不会立 刻销毁,只有等到虚拟机执行垃圾回收机制时,才会释放该对象的堆内存。
二、构造函数和构造代码块的问题:
构造函数是给对象初始化,也就是说,对象一被new出来,就该具备那些属性。所以构造函数 是最先被执行的。并且这函数不可随意被调用,它只执行一次。
构造代码块是给所有对象初始化,也就是说,所有对象都有相同的属性。构造代码块优先于构 造函数执行。
三、匿名类
调用熟悉没意义是因为匿名对象没有引用指向,垃圾回收机制会随时将其处理。
调用方法是可行的,因为方法会执行。
当匿名对象作为参数传入时,是有引用指向它的,所以它不是垃圾。但是当方法执行完成之 后,就没有引用指向了,该对象会变成垃圾。等待JVM将其回收。
四 、this关键字
this是代表自己,只有当自己的函数要调用自己函数的对象时,就会使用this。
this函数必须放在第一行是因为防止用户传进来的数值被this函数修改。
当函数内嵌初始化函数时,要先执行内部的初始化,再执行自己初始化的函数。
下面是我整理画好的思维导图: