1. 局部变量和成员变量的区别
局部变量和成员变量的区别
1:语法格式
局部变量
数据类型 变量名 = 值; 例如:int a = 0;
成员变量
[修饰符] 数据类型 变量名 = 值; 例如:public int b = 0;
2:作用范围
局部变量:方法体
成员变量:整个类体
3:内存分配
局部变量:栈
成员变量:堆
4:是否有默认值
局部变量:没有默认值
成员变量:有默认值
使用场合:
只给当前方法使用,建议使用局部变量
如果要给这个类中的所有方法都是用,用成员变量
注意:能用局部变量就不要使用成员变量了
1:如果声明成成员变量,每个方法都能直接对这个变量做修改,很有可能引起程序的值的改变
2:内存使用,声明为成员变量,会在堆中一致存在,除非垃圾回收器来回收它,否则一直占用空间
3:内存使用,声明为局部变量,会在占中存活,随着方法的接受而销毁,不占用内存
2. 引用
引用可以理解为一种受限的指针
引用的组成部分
1:类的全名 带包名的
2:@ 连接符号
3:hashCode 16进制的数字
例如: com.dxl.entity.Woman@15db9742
指针:就是一个整型的数字,可以做算术运算,程序员可以任意修改指针的值
15db9742
15db9742+1 = 15db9743
以C语言为例 开辟的内存空间,程序员必须手动的是释放内存,如果释放有误,将系统内存释放掉,很有可能造成系统崩溃
以java为例 程序员开辟内存空间,释放的工作不需要程序员来做,交给JVM来做,JVM中有一个线程:叫做垃圾回收器,由这个GC自动回收垃圾,变得更加安全
java把c中指针做了一些修改,不能做算术运算了,只能做赋值运算
总结:引用其实就是栈中的一个地址符指向堆中的一个实际开辟好的一个内存空间
凡是使用new关键字,new出来的对象,都在堆中放
内存划分
1:栈:局部变量
2:堆:new出来的对象
3:方法区:类的信息,常量,static变量