黑马程序员技术交流社区
标题:
成员变量和局部变量的区别
[打印本页]
作者:
xiaoya0o0o
时间:
2015-9-16 22:17
标题:
成员变量和局部变量的区别
成员变量和局部变量的区别:
1).成员变量:
A.定义在"类体"中;可以是任何数据类型;
B.会被自动初始化;
class Student{
String name;
void show(){
System.out.println("我叫:" + num); //打印:我叫:null
}
}
C.当实例化对象后,被存储在"堆"中;
D.当"对象"不被使用(没有任何引用),并被垃圾回收器回收时被清理;
2).局部变量:
A.定义在某个方法、或其它代码块中;
B.必须显示初始化,否则不能访问其值;
class Student{
void show(){
String name;
System.out.println("我叫:" + name); //编译错误。局部变量必须显示初始化才能访问其值;
name = "张三"; //OK。可以被赋值。
}
}
C.当方法或其它代码块被执行时,基本数据类型的"值"和引用数据类型的"引用"都是存储在"栈"中;
D.当方法或代码块执行完毕时,会被立即清理;
/*
局部变量:
1.定义的位置:在某个方法,或者代码块内部;
2.在内存中的位置:在"栈"中:
基本数据类型:int a = 10; //a 和10 都存储在栈中
引用数据类型:int[] array = new int[3];// array 和 "数组的引用"都存储在栈中;
3.在使用(获取值)前,必须要先赋初始值;
4.当所在的方法,或者代码块执行完毕,对于"局部变量"的"栈"内存,会立即释放;
成员变量:
1.定义的位置:在"类体"中;
2.在内存中的位置:在"堆"中;
3.定义后,即使不赋初始值,也可以直接访问。因为JVM会自动赋初始值:
整数:0
小数:0.0
字符:'\u0000'
布尔:false
引用类型:null
4.当栈中的引用消失后,堆中的内容不会立即消失,会成为垃圾,后期被"垃圾回收器"自动检测,并处理。
*/
class Book
{
String name;//成员变量
String author;//成员变量
}
class Demo
{
public static void main(String[] args)
{
int a = 10 ;//局部变量
int[] arr = {24,4,23};
System.out.println(a);//a此时没有值,编译错误
for(int i = 0;i < 10 ;i++){//i 是局部变量
}
}
}
复制代码
作者:
史世锋
时间:
2015-9-16 22:19
总结得相当详细 感谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2