java中成员变量和局部变量的初始化

java中成员变量和局部变量的初始化

成员变量的初始化

在java中,成员变量存在于类之内,方法和代码块之外。

class A{
修饰符  数据类型 成员变量名;
方法(){}
}

这类变量在创建时如果不给初始化值,创建之后java会自动赋默认值:

基本数据类型默认值
byte0
short0
int0
long0L
char\u0000(空格)
float0.0f
double0.0d
booleanfalse

所有引用类型的初始化值为null。
class
interface
array

*开始我在疑问array为什么初始化值为null,一般在用的时候,int[] 中元素都初始化为了0,不应该是null啊。后来恍然大悟:


public class Demo1_Array {
    static int[] arr; 
    public static void main(String[] args) { 
        System.out.println(arr); 
    }

}

结果打印输出null;
很显然这里的arr并没有给地址,数组内也就没有元素,默认初始化是将地址值初始null;
然而我定义一个int[] arr =new int [5]后,其中的arr[0]才是基本数据类型int,初始化值为0;

局部变量的初始化

局部变量存在于方法中和代码块中;
java自己不会执行局部变量的初始化,需要人为赋值,才可以使用。
但是,定义一个局部的数组:
int[] arr =new int[5] ;
其中的元素也被赋上默认初始值,打印结果为0,看来数组还真是不简单。百度后发现和new关键字有关,并且需要掌握内存中的栈和堆。

变量在内存中的分配

原来,内存中分为堆内存和栈内存,程序开始时,main方法进栈,在堆内存中分配空间创建的成员变量;局部变量保存在栈中。
创建数组则是在堆中,分配空间后默认初始化值。
我觉得可以这样认为,在堆内存中分配空间的变量都会java都会自动初始化值,像成员变量。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值