局部变量与成员变量
2019-07-23 本文已影响0人
G_uest
局部变量
定义在方法中的变量
属于方法,在栈内存的方法的栈帧中。
随方法的调用而产生,随方法的结束而消失
没有默认的初始化值,必须手动赋值后,才能使用
测试代码
//正确写法
int a = 10;
System.out.println(a);
//错误写法
// int a;
// long a;
// char a;
long a;
System.out.println(a);
错误写法抛出异常
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The local variable a may not have been initialized
成员变量
定义在类中成员位置的变量(类中方法外)
属于对象,在堆内存的对象中
随对象的创建而产生,随对象的消失而消失。
有初始值
- 基本数据类型
- 整数类型:0
- 小数类型:0.0
- 布尔类型:false
- 字符类型:'\u0000' (Unicode值, 控制台输出的是空格)
- 引用数据类型:null
测试代码
class Test {
// 基本数据类型
int i;
long l;
byte b;
char c;
// 引用类型
String s;
int[] a;
// 扩展,数组 new 之后,在堆中 int 类型自动初始化为 0 。
int[] extend = new int[5];
public void outPut(){
System.out.println("int--" + i);
System.out.println("long--" + l);
System.out.println("byte--" + b);
System.out.println("char--" + c + "占位专用");
System.out.println("String--" + s + "占位专用");
System.out.println("数组--" + a);
System.out.println("数组 new 之后,堆中int类型初始化为0--" + Arrays.toString(a));
}
}
测试输出
int--0
long--0
byte--0
char-- 占位专用
String--null占位专用
数组--null
数组 new 之后,堆中int类型初始化为0--[0, 0, 0, 0, 0]