Java数组

数组是我们接触的第一个容器,数组是长度固定的容器。数组是具有相同数据类型的,存储空间连续的变量的集合。它一但定义好大小将不能改变。Java中的数据类型分为两种:基本类型和引用类型,所以数组也有两种类型的:基本类型的数组和引用类型的数组(数组的数组也是引用类型的数组)。 
    目前可以用private, public 或着默认的修饰,private是封装的访问权限。将方括号置于变量名之后的声明数组的格式,是用于 C、C++和Java编程语言的标准格式。但这种格式会使数组的声明复杂难懂,因而,Java编程语言允许一种替代的格式,该格式中的方括号位于变量名的左边,意思是:声明一类型的数组,这个数组有一个引用名叫什么?JAVA推荐使用此格式。
    Java编程语言允许使用下列形式快速创建数组:
        String[] names = {
         “Georgianna”,
         “Jen”,
         “Simon”, 
        };
    其结果与下列代码等同:
        String[] names;
        names = new String [3];
        names [0] = “Georgianna”;
        names [1] = “Jen”;
        names [2] = “Simon”; 
     这种”速记”法可用在任何元素类型。例如: 
        MyDate[] Dates = {
          new MyDate (22,7,1964),
          new MyDate (1,1,2000),
          new MyDate (22,12,1964)
        };
   一个二维数组(JAVA中没有二维数组的概念,二维数组其实就是数组的数组)如下例所示:
int[][] twoDim = new int[4][];
twoDim[0] = new int[5];
twoDim[1] = new int[5];
    首次调用 new 而创建的对象是一个数组,它包含 4个元素,每个元素的类型也是 int 数组型,必须将数组的每个元素分别初始化。
注意:尽管声明的格式允许方括号在变量名左边或者右边,但此种灵活性不适用于数组句法的其它方面。
例如: new int [ ][4]是非法的。
    因为这种对每个元素的分别初始化,所以有可能创建非矩形数组的数组。也就是说,twoDim 的元素可按如下方式初始化:
twoDim[0] = new int [2]
twoDim[1] = new int [4];
twoDim[2] = new int [6];
twoDim[3] = new int [8];
    由于此种初始化的方法烦琐乏味,而且矩形数组的数组是最通用的形式,因而产生了一种”速记”方法来创建二维数组。例如:
Int[][] twoDim =  new int [4][5];  
  
    数组一旦创建后,其大小不可调整。然而,你可使用相同的引用变量来引用一个全新的数组:
int[] myArray = new int [6];
myArray = new int[10];
在这种情况下,第一个数组被丢弃,除非对它的其它引用保留在其它地方。 
Java编程语言在System类中提供了一种特殊方法拷贝数组,该方法被称作arraycopy()。例如,araycopy可作如下使用:
int[] myArray = { 1, 2, 3, 4, 5, 6 };              // 原始数组
int[] hold = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };    // 新的更大的数组 
 
System.arraycopy(myArray, 0, hold, 0, myArray.length);
// 从没有Array拷贝所有元素到hold,从下标0开始
这时,数组 hold有如下内容:1,2,3,4,5,6,4,3,2,1。注意:如果数组保存的是基本类型的话直接把值拷贝过来[深拷贝]。如果数组存放的是引用类型(类类型,数组类型(多维数组的拷贝)等),那么拷贝的是引用类型的地址[浅拷贝]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值