1.内存区域的划分
1.寄存器
2.本地方法区
3.栈内存
存储的都是局部变量(凡是定义在方法中的都是局部变量)而且变量所属的作用域一旦结束,该变量就自动释放,特点:生命周期短,更新速度快。栈的内存地址是不连续的,每个线程都拥有自己的栈。
4.堆内存
存储的是数组和对象(其实数组就是对象)凡是new建立的都在堆中。
特点:
1.每一个实体都有首地址值。
2.堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数是0.0或者0.0f,布尔 false char '\u0000'
3.引用型数据类型,使用”=null “取消引用型数据指向。取消指向后,堆中的垃圾数据会被垃圾回收机制回收,但何时收不一定
5.方法区
2.成员变量与局部变量的区别
定义类其实就是在定义类中的成员,成员:成员变量-----属性, 成员函数------行为
1. 成员变量定义在类中,整个类都可以访问。
局部变量定义在函数,语句,代码块中,只在所属区域有效
2. 成员变量存在于堆内存的对象中
局部变量存在于栈内存的方法中
3. 成员变量随着对象的创建而存在,随着对象的消失而消失
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放
4. 成员变量都有默认初始化值
局部变量没有默认初始化值
3.匿名对象
当对象对方法仅进行一次调用的时候,可以简化为匿名对象
比如 new Car();
匿名对象可以作为实际参数进行传递,注意,此时该对象不会变成垃圾,因为,方法中参数列表会有接收它的引用型变量
有一方法为 show(Car c){} 那么调用时 show( new Car ()),c会接收这个匿名对象,此时c 指向 new Car(); 类类型变量一定指向对象,要不就是null.
4.面向对象概念
面向过程:对于面向过程来讲,强调的是过程(动作),方法
面向对象: 对于面向对象来讲,强调的是对象(实体),将方法等封装到对象中,对象所具备一系列动作。
4.封装
隐藏对象的属性和实现细节, 仅对外提供公共访问方式。
好处:将变化隔离,便于使用,提高重用性,提高安全性。
封装原则,将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。