java 数组

 

第六章  数组

一. 数组概述

1.1  什么是数组?

数组是存储在一个连续的内存块中的元素集合。

数组中的每个元素必须是相同的数据类型,并且通过索引进行区分。数组中的第一个元素的索引为0。

      为什么要用数组?

单一值类型变量有时候很难满足应用程序的设计要求。

  数组类型变量可以同时存储多个同类型基础数据类型变量或对象。

 

二. 创建数组

在Java中,创建数组有两个步骤:

声明一个数组变量;

语法:

            数据类型[]数组变量名;

            或

            数据类型 数组变量名[];

      例如:

            int[] sums;或 int sums[];

2、使用new关键字初始化数组,并指定数组的大小。

语法:

                 数组变量 = new 数组类型[数组长度];

      例如:

                 sums= new int[20];

 

三. 访问数组

p  数组中的元素通过用对该数组的变量名(引用)加上一个用于描述我们要访问数组哪一个元素的整型索引值来访问。

      int [] sums = new int[20];

      sums[0] = 1;

      sums[1] = 2;

      …….

      sums[19] =20;

     

      为了给20个元素赋值,就需要20条语句。显然,用for循环赋值更方便。

     

      for(int i = 0; i < 20; i++){

             sums[i] = i + 1;

四. 数组的引用double[] rainfall = newdouble[12];

数组在内存中是地址连续的一串空间。

五. 数组的长度

在使用访问数组元素时,特别要注意,不要超出数组所分配的空间

Java语言的数组与其它语言的数组的不同之处在于:Java中的数组是对象。这样做的好处之一为:Java中的每个数组都有一个length属性来代表数组的大小,可以极大地减少数组访问越界的可能性。

六. 引用数组

一个对象数组被声明和创建,同基本数据类型数组被创建一样,

第一步:定义数组  Person[] personArr;

第二步:创建数组  personArr= new Person[20];

l  数组元素被初始化为null

因为每个数组元素都是一个对象,每个对象也都必须被创建.

person[0] = new Person( );

l  当为了能分配数据值给对象,我们能执行

person[0].setName (“Ms. Latte”);

person[0].setAge (20);

person[0].setGender (‘F’);

这里的语法是调用对象的方法,我们使用索引表达式来引用对象,从而代替一个引用变量。

 

七. 数组初始化

数组的初始化有两种方式:静态初始化和动态初始化。

l  静态初始化:数组初始化程序在创建数组时,有两种写法

      int [] odds = new int[]{1, 3, 5, 7, 9};

      String [] weekend =new String[] {"星期六", "星期天"};

      或者,不需要使用new关键字。

     int [] odds = {1, 3, 5, 7, 9};

      String [] weekend = {"星期六", "星期天"};

     值得注意的是:数组初始化程序只能用在声明新数组引用时。

      String [] weekend;

      weekend = {"星期六", "星期天"};    //编译不能通过 

 

l  动态初始化:通过 new关键字开辟指定内存空间,然后再赋值

 

八.  数组复制

将已存在的数组的内容复制到新的数组中。

方法一:创建一个新数组,然后使用for循环挨个拷贝

方法二:

system.arraycopy(num , 0, this.num,0 , 5)

  第一个参数是原数组名,第二个参数是原数组的起始位置,要复制到目标的数组名,第四个是目标小标的起始位置,第五个是数组的原数组的个数。

 

 

九. 应用类型的复制

 

1.浅复制:

    他是通过拷贝目标数组元素的值完成考别

特点:原数组与目标数组的元素指向同一对象,这种类型复制就叫浅类型复制。

 

2.深复制:(copy)

1.目标数组通过实例化对象复制给数组元素。

2.元素指向的对象复制给目标数组元素指向的对象

 

深拷贝耗资源,

用深拷贝的时候需要谨慎使用,为了节省空间。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值