Java数组类型的定义和初始化

学了很久的Java,总感觉自己很会,可是越往深处想,越觉得什么也不会。

今天看了一下数组类型,把自己的感觉和体会记录下来,希望能有更多的人看到,并且受益:


在Java中,数组不是基本数据类型,而是引用数据类型,刚从C语言转过来的朋友,可能有点迷茫。我也不知道怎么安慰你,如果你指针学的比较好,相信你会理解的。可以拿数组指针来进行类比:C语言中数组指针和指针数组是不一样的(自己好好查资料,如果有时间,我会在博客中写)。

数组指针的定义是:int (*p)[4];

这个定义就是一个数组指针,由于()优先级比* 的高,所以*和p构成一个指针的定义,指针的变量名为p,int修饰的是数组的内容,即数组中每个元素。


Java定义数组有两种方式:

type[] array_name;

type array_name[];

本质没有差别,第一种比第二种的可读性要好,更加符合变量类型的定义。


数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(我的第一门语言是C语言,所以我在这理解成就是地址变量,说白了就是定义了一个存放地址的变量),这个地址变量还未指向任何有效地内存(比如:C语言中 int *num的定义,里面存放的是地址变量,但是目前还没有具体指向,里面是垃圾数字),因此定义的时候,不能指定数组的长度。由于是引用变量,并未指向任何有效地内存空间,所以还没有内存空间来存储数据元素,也就不能使用,只有对数组进行初始化后才可以使用。


数组的初始化有两种方式:

1、静态初始化:显示的指定每个数组元素的初始值,比如

int [] a = {4,54,5454,232,456};

2、动态初始化:只指定数组的长度,有系统为每个元素指定初始值,比如:

int [] num= new int(5);

动态初始化有系统指定初始值:如果数组类型为,

byte,short,int,long,数组的默认值为0

float,double型的,数组默认值为0.0

char,数组的默认值为'\u0000'

boolean,数组的默认值为false

引用类型(类,接口,数组),数组的默认值为null。


深入了解一下数组:

数组元素和数组变量是分开存放的,数组是一种引用数组类型,数组引用变量这是一个引用。这个引用变量可以指向任何有效地内存,只有当该引用指向有效地内存后,才可以通过数组变量来访问数组元素。

在定义并初始化一个数组后,在内存中分配了两个空间,一个用于存放数组的引用变量,这个变量存储在栈中。另一个用于存放数组本身,在堆内存中。


特别说明一下,Java中没有多维数组,type arrray_name = new tyep[length][]

相当于定义了length个 type[] 类型的变量,当然这些type[] 类型的变量都是数组类型的,因此必须再次初始化这些数组。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想做个自由的人

随缘吧打赏与否还是会坚持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值