Java自学笔记系列三:数组

在Java纯面向对象的语言世界中,万事万物皆是对象。数组也不例外,香港虚拟主机,而数组这个数据结构类型在编程的世界也是一个宠儿,因为它可以批量化处理具有共性的数据。接下来就对数组的整体做一个梳理.

一,基础

1.1 数组的声明,数组对象与初始化(以一维数组为例)

声明:

创建数组对象:

初始化,可以分为三种形式。

默认初始化:

静态初始化:即是直接赋具体数值给数组。

动态初始化:最常用的一种形式。

数组的概念,C/C++/Java定义都是一致的,数组内存储的数据类型必须是一致的,且索引都是从 0~length-1 。而PHP,javascript语言的数组定义就相对来说比较宽泛,除了索引数组外(且没有硬性规定数组的数据类型,所以可以存储各种类型的数据),还有关联数组。 在访问索引数组的时候,任何语言都会有一个报出数组越界的错误。但在Java中会报出ArrayIndexOutOfBoundsException错误(异常是我们都不想看到的,香港服务器租用,所以基本功的扎实与否是写出一手好代码的前提)。 二,N维数组

N在理论上讲可以从1到无穷,只是我们认识的维度最高还不超过4维,所以多维数组的声明,对象创建与使用从理论上讲和一维是一致的。如下:

一维: int[] arrays = new int[length];

二维: int[][] arrays = new int[m][n]; //m,n为非零正整数,且不一定相等;且n可以不写任何数字,即使不一定要求二维数组是矩阵。

三维: int[][][] arrays = new int[l][m][n];

三,数组对象概念分析

一维数组的对象参考,如下代码所示:

程序的第二行的意思是,将arrays1参考的对象也给arrays2参考,并没有改变对象所指向的数组内容。执行完第十四行后,arrays1[0]的数值发生了变化.如图一所示:

图一

二维数组的对象与参考名称,

直接参见图二所示:

图二

重点在这里,若是基本数据类来创建,会不会也是同样的效果呢?

如一:

请问上面的这个程序片段建立几个Integer对象呢? 3个?错,是0个,不对啊,length=3啊!事实上如图三所示,因为对象默认的值是null.

图三

那么同样的道理,如是看到下面的这个代码,阁下就不会认为是6个对象了吧!

直接上图,参考图四.

图四

四,数组对象操作

4.1 数据填充 fill();需要import java.util.Arrays;

在三数组对象分析的第一个程序中已经有所体现,故略去代码。

4,2 数组复制

方式一:

方式二:调用系统函数System.arraycopy(来源数组,来源起始索引,目的数组,目的启示索引,香港虚拟主机,复制长度)

方式三:JDK6以上,有一个更加方便的函数Arrays.copyof(),这种情况下不用建立新的数组.

4.3 深层复制(Deep Copy)

先参考如下代码:

深层复制行为就是c1每个索引参考的对象会被复制,分别指定给c2每个索引,结果就会显示red。可参见图五.

图五

本文出自 “IvanTian” 博客,请务必保留此出处

君子当权积福,小人仗势欺人。

Java自学笔记系列三:数组

相关文章:

你感兴趣的文章:

标签云: