Java数组_解惑篇

数组是编程语言中最常见的一种数据结构,可用于存储多个数据,每个数组元素存放一个数据,通常可通过数组元素的索引来访问数组元素,包括为数组元素赋值和取出数组元素的值。Java语言的数组具有其特有的特性。

理解数组:数组也是一种类型
  • Java 的数组要求所有的数组元素具有相同的数据类型,因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能存储多种数据类型的数据。

  • 注意:因为 Java 语言是面向对象的语言,而类与类之间可以支持继承关系,这样可能产生一个数组可以存放多种数据类型的假象。
    (子类会自动向上转型)

  • 一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。即使把某个数组元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。

  • Java 的数组即可以存储基本类型数据,也可以存储引用类型的数据,只要所有的数组元素具有相同类型即可。

  • 指定指出的是,数组也是一种数据类型,它本身是一种引用类型,例如 int 是一个基本类型,但 int[] (这是定义数组的一种方式) 就是一种引用类型了。

定义数组
  • java语言支持两种语法格式来定义数组
	type[] arrayName;
	type arrayName[];
  • 推荐使用第一种格式。因为第一种格式不仅具有更好的语意,而且具有更好的可读性。对于type[] arrayName,很容易理解这是定义一个变量,其中变量名是 arrayName,而变量类型是 type[].前面已经指出:type[] 确实是一种新类型,与 type 类型完全不同(例如 int 类型是基本类型,但 int[] 是引用类型)。因此,这种方式即容易理解,也符合定义变量的语法。
  • 数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定义了一个指针),这个引用变量还未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有对数组进行初始化后才可以使用。
  • 注意:定义数组时不能指定数组的长度,例: int[3] array; ×
数组初始化
  • Java语言中数组必须先初始化,然后才能使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。
  • 只要为数组元素分配了内存空间,(不管以哪种方式来初始化数组) 数组元素就具有了初始值。初始值的获得由两种形式:①由系统自动分配;②由程序员指定。

数组初始化的两种方式:

  1. 静态初始化:始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度 格式:arrayName = new type[] {e1, e2, e3 ,e4 };:静态初始化,不要再写上数组长度如:type[4],系统会根据程序员显示指定的元素,确认数组长度。(元素个数已经很明确,所以不要画蛇添足)静态初始化还有简化语法格式:type[] arrayName = {e1, e2, e3, e4};

  2. 动态初始化:初始化时程序员只要指定数组长度,由系统为数组元素分配初始值。格式 :arrayName = new type[ length ]; 动态初始化数组后,数组的每个元素都会分配一个初始值,如果此时想为数组值指定值,格式:arrayName[ index ] = 值; index 数组元素下标-从0开始。

系统分配的初始值规则如下:
  • 数组元素类型是基本类型中的整数类型(byte, short, int 和 long),则数组元素的值是0.
  • 数组元素类型是基本类型中的浮点类型(float, double),则数组元素的值是0.0.
  • 数组元素类型是基本类型中的字符类型(char ),则数组元素的值是’\u0000’.
  • 数组元素类型是基本类型中的布尔类型(byte, short, int 和 long),则数组元素的值是false.
  • 数组元素类型是引用类型(byte, short, int 和 long),则数组元素的值是null.

数组初始化完成后,就可以使用数组了,包括为数组元素赋值,访问数组元素值和获取数组长度(arrray.length )等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值