java数组的学习

我对数组学习主要分为三部分:①定义和创建 ②使用 ③操作

一 定义和创建

定义

谈到数组定义,我们想到是int[] a 或者 int a[]形式的。没错,这两种形式都可以,个人推荐第一种,更能体现数组是一个新的类型。 

提问:为什么不是c语言中 int a[10]这种形式

答:数组变量是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量,这个引用变量还未指向任何有效的内存,因此定义数组变量时不能指定数组的长度

创建

既然标题分为定义和创建,那么我们完成了定义以后肯定还需要进行创建(因为这一步得到的只是一个引用,类似类和对象)。

所谓初始化就是为数组的元素分配内存空间,并为每个元素赋初始值。    

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

静态初始化初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。

动态初始化 :初始化时程序员只指定数组长度,由系统为数组分配初始值。

提问:能不能只分配内存空间,而不赋予初始值?

答:能,即动态初始化

静态初始化(由编译器确定长度)举例说明:

int[ ] a = new int[ ]{3,5,8,10,100}; //数组长度=5

Integer[] b = new Integer[]{new Integer(3), 5, new Integer(8)}; //长度=3

Integer[] d;

d={new Integer(3), 5, new Integer(8)}; //错误的赋值语句(数组常量只能在初始化操作中使用)

d=new Integer[]{new Integer(3), 5, new Integer(8)}; //正确的赋值语句

动态初始化(由程序员指定长度)举例说明

产生数组对象,包含5个元素,首先元素只‘零值’初始化;然后调用数组对象引用再初始化数组变量price

int[]  price = new int[5]; 

price = new int[5];  //引用另一个数组

for (int i=0; i<price.length; i++)

price[i]=8;

提问:下面代码正确吗?

for (int e : price)

  e=8;

错误,数组各变量的值仍为0。使用foreach循环迭代数组元素时,并不能改变数组元素的值,因此不要对foreach的循环变量进行赋值。

注意:不要静态初始化和动态初始化同时使用,也就是不要再进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。 

 

二 使用注意

(1)数组作为参数传递到方法中时,传递的是数组的引用,故改变是内外同时进行的。

(2)数组可作为返回类型返回

public static int[] reverse(int[] list)

 

三 数组操作

Java.util.Arrays提供了许多方法可用于数组操作,如:

数组的填充( fill )

数组的复制( copyof

数组的比较( equals )

数组的排序( sort )

数组查找( binarySearch

总结:当需要对一组对象进行处理时,数组是效率最高的一种数据结构。

操作具体例题不再啰嗦,有需要的直接搜索关键字就可得到大量文章介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值