Java面向对象内存分析学习

1.面向对象的内存分析:

(1)栈:存储局部变量(基本数据类型变量,引用数据类型变量)
在调用方法时,jvm会为该方法开辟一个栈帧,存储该方法里的
参数,局部变量等等;
引用变量存的是地址值;
(2)堆:存放的是对象及属性其数据;在new 一个对象的在堆中已经产生了地址值;
每个对象的地址值不同
注意:
Student stu=new Student();
Student stu1=stu;
此时stu1和stu的地址值相同,指向的是同一个对象;

(3)方法区:存放类的信息,和一些字节信息;

(4)操作对象的属性数据时的流程:
栈中的引用通过new对象产生的地址值,去操作在堆里面的属性给其赋值、取值;
在没有初始化的时候其属性的默认值是各个数据类型的默认值;

成员变量:
定义在类中,方法外;有默认值,不用初始化;堆中;
与对象一起在堆中,对象使用完毕,就被gc()回收;


局部变量:
定义方法中;
没有初始值,使用之前,必须初始化;
存储在栈中,一旦方法使用完,变量就失效

2.封装:

方法的封装、类的封装(组件)
get/set方法(set是赋值,get是取值)
类的封装的步骤:
1.修改属性的权限,限制对属性的访问--private;
2.为每一个属性建立set、get方法,用于对属性的操作;
3.对操作属性的方法加入限制--public;

构建JavaBean的原则:
数据全私有,方法全公开,无参构造方法

例:

public class Student{
private String name;//数据私有
private int age;

public void setName(String name){//方法公开
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.name=name;
}
public int getAge(){
return age;
}    
}

 



封装的作用:
对外部提供可调用的稳定功能,降低代码的出错率,提供代码的复用性和可维护性
无论方法内部里面的数据逻辑是否改变,只要其功能不变,其他的功能就不会收到
此方法的改变;

构建的JavaBean的目的:
方便使用该组件


posted @ 2019-02-14 22:35  十七-Li  阅读(256)  评论(0编辑  收藏  举报