Java数组定义及初始化

数组定义及初始化

数组这玩意是一种用于存放数据最常见数据结构。

数组的的概念及注意点

  • 数组要求所有的数组元素具有相同的数据类型,且只能存在一种数据类型,要多专一有多专一。
  • 数据类型既可以是基本类型也可以是引用类型,类里虽然有不同对象,但都属于同一类,也可存于数组。
  • 数组就是一种引用类型。
  • 数组一旦初始化完成,长度就已经确定,所占内存空间也被固定且不能改变,把数据删除也没用。

数组的定义

// 定义数组
char[] initArrays;
char initArrays1[];
  • 两者都可以定义一个数组,但建议使用第一种,也就是type[] arrayname,因为具有较好的可读性,让人一看就知道是个char[]类型的。
  • 仅仅定义了一个引用对象,且并没有指向任何的内存,所以暂时是不能使用的,需要对它初始化

数组的初始化

形式

  • 静态初始化
//静态初始化
char[] initArrays0;
initArrays0 = new char[]{'1','2'};
//char[] initArrays0= {'1','2'};

静态初始化需要人为显式指定每个数组元素的初始值,由系统决定数组长度。

type[] arrayname={element1,element2...};是上面两条语句的对于数组静态初始化的简化语法格式。

注意数组元素由花括号扩起,且由逗号分隔。

  • 动态初始化
//动态初始化
int[] arrays;
arrays = new int[3];
//int[] arrays = new int[3];

动态初始化是人为指定数组长度,由系统为数组元素分配初始值。

同样,动态初始化也有简化格式:type []arrayname = new int[length];

注意方括号内需指定数组的长度。

一旦为数组的每个元素数组分配了内存空间,每个内存空间里存储的内容就是该元素的值,即使内容为空,也是null值,所以不论哪种方式初始化数组,都会使数组元素获得初始值。只不过初始值的获得的方式不一样罢了,一个是人给的,一个是系统给的。

动态分配的初始值

既然动态初始化数组只需要指定每个元素所需的内存空间,由系统为各个元素赋初值,那么,这些初值系统又是如何来赋予的呢。以下是对各个不同类型的数组赋初值的尝试:

int[] arrays = new int[3];
boolean[] arrays1 = new boolean[3];
String[] arrays2 = new String[3];
float[] arrays3 = new float[3];
char[] arrays4 = new char[3];
System.out.println(arrays[0]);//0
System.out.println(arrays1[0]);//false
System.out.println(arrays2[0]);//null
System.out.println(arrays3[0]);//0.0
System.out.println(arrays4[0]);//输出'\u0000'为空
}

再根据查找资料,做出总结:

  • 整数类型(byte,short,int,long)->0;
  • 浮点类型(float,double)->0.0;
  • 字符类型(char) ->'\u0000';
  • 布尔类型(boolean) ->false;
  • 引用类型(类,接口,数组)->null;

通向Java深入:Java数组深入理解

小tips:关于输出'\u0000'为空引发的思考:Java 中各种空(""、\u0000、null)的区别?

posted @ 2019-11-16 19:00  天乔巴夏丶  阅读(10480)  评论(0编辑  收藏  举报