JavaSE基础语法--数组(1)

数组的定义与使用

数组就是存储相同数据类型的一组数据。它有如下特点:

1.数组中存放的数据是一样的

2.数组的空间是连续的

3.每个空间有自己的编号,其实位置的编号为0,即数组的下标


那么在Java里面如何定义一个数组呢?

假设我现在想定义一个整形数组,数组名为arr,那么我可以有如下写法:

int[] arr={1,2,3,4,5,6};    //第一种定义

是不是和C语言的有点区别。在Java中,为了更好的区别变量和数据类型,将方括号放在了数组名的前面,这样的好处是能一眼看出这个变量的类型是什么。而在C语言中定义一个变量是这样的:

int arr[]={1,2,3,4,5,6};

Java这两种写法都支持,但是C语言只支持int arr[]的这种写法。注意:在Java数组的方括号中是不能填写数字来标识有几个元素。那么Java还提供了另外二种种定义方式:

int[] arr=new int[]{1,2,3,4,5,6};  //第二种定义
int[] arr=new int[10];   //第三种定义

使用new关键字来定义数组。通过new关键字,来实例化一个对象。所以Java当中的数组,其实就是一个对象。第一种定义和第二种定义本质是是没有区别的,第一种只是第二种的简写方式。

第三种定义方式是可以在右边的方括号中放入数据的个数,但是他不能通过{}来初始化数据,默认填充的都是0;如图:


 在定义数组的时候如果没有初始化,数组空间里面存的值就是默认值:

 这里我对boolean类型做了测试,我们看到不初始化的时候它里面默认是填入false。那么我们再对char类型做一下测试如图:

 可以看到里面存的是\u0000。


 数组的使用

数组的使用和C语言是类似的,都是通过下标去访问,并且是从0数组下标开始:

 现在我们想得知这个数组的长度是多少我们可以使用数组名.length来求:


 如果我想对数组的某个位置赋值也是通过下标来引用,比如我想把第一个元素也就是数组下标为0的元素改成100:


 遍历数组也是非常简单的,结合我们上面的数组操作以及for循环语句就可以实现数组的遍历:


Java中还有一种不一样的for循环遍历方式:

对比两种for循环遍历,我们发现第一种for循环是通过数组下标访问的,第二种for循环遍历数组和下标是没有关系的。

Java为了开发的便利性,提供了很多现成的方法。有专门的一个处理数组的类来帮助我们实现高效的开发,这个类叫Arrays我们尝试一下:

 单纯打印数组的话这种方法是最方便的。如果想要精确操作数组的元素还是需要用for循环来自己写逻辑。Arrays里面有很多的方法都很好用,下面在举一个例子排序:

 我们使用Arrays.sort这个类方法实现了排序,非常的方便简洁。


数组是引用类型

 最后我们说一下引用类型。因为Java数组是一个引用类型的变量。那什么是引用类型呢?

首先我们的了解Java虚拟机的布局。

 上面是一个大概的内存布局图,我们知道数组是定义在一个方法内的,那么它是一个局部变量。局部变量是存在栈上的。为什么称之为引用类型呢,因为在栈上数组本身并不存储数据,数组开辟的空间存放的数据是在堆上的,而栈上存储了一个地址,这个地址是指向堆上开辟的数组空间的起始地址。用一个图来理解是这样的:

 因此我们可以理解为对数组数据的访问是间接访问的形式,因此也称之为引用类型。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值