java中数组为空和数组长度为0的区别

java中数组为空和数组长度为0的区别
String[] s0={};
String[] s1={null,null};
Strign s2=new String[2];
String[] s3=null;

此时s0不为空,但长度为0,开辟了内存,但内存中没有放任何东西,所以其长度为0,但不为空(已经开辟内存了)
s1不为空,长度为2,开辟内存的同时,将两个null放入内存中,所以长度为3.
s2不为空,长度为2,虽然没有初始化但s2[0],s2[1]有默认值null,和s1类似.
s3为空,没有长度,调用s3.length会空指针异常,虚拟机不会为其开辟内存,s3不指向任何地方
注:一旦等号右边有大括号产生,或者长度已经定,在内存中都会为其开辟内存,而数组的长度则取决于开辟的内存中放入东西的个数,数组为空时,不存在长度这一说,但当长度为0是数组却不一定为空
改文章只是我个人对数组为空和长度为0的一些理解,哪块有不对的地方还请 各位指出错误,以便及时修改!

你可能感兴趣的:(java中数组为空和数组长度为0的区别)