java数组学习笔记

发表于: java/j2ee | 作者: | 日期: 2009/8/11 04:08
标签:

数组是用来集合相同类型的对象并通过一个名称来引用这个集合。作为一种最典型的数据结构,基本上所有的高级语言都有数组的概念,包括C、C++、Java、php等。

在Java中,使用数组分为以下三个步骤:
(1)声明数组
(2)创建数组
(3)初始化数组
下面,我们按以上步骤来讲解数组在Java中的使用。

声明数组
一维数组的声明方式:
type var[]; 或type[] var;
推荐使用后者,同时需要注意声明数组时不能指定其长度(数组中元素的个数)。

在Java中,我们可以声明任何类型的数组──原始类型或类类型:
char chars[];
Point p; // where point is a class

在Java编程语言中,即使数组是由原始类型构成,甚或带有其它类类型,数组也是一个对象。声明不能创建对象本身,而创建的是一个引用,该引用可被用来引用数组。数组元素使用的实际存储器可由new语句或数组初始化软件动态分配。

创建数组
Java中使用关键字new创建数组对象,格式为:
数组名 = new 数组元素的类型 [数组元素的个数]

示例:
char[] chars = new char[20];
Point[] points= new Point[20];

第一行创建了一个可以容纳20个char值的数组;
第二行创建了一个可以容纳20个Point对象的数组;值得注意的是,此处并没有创建20个Point对象,创建工作必须分别完成如下:
points[0] = new Point();
points[1] = new Point();
等等。这部分工作被称为数组的初始化。

初始化数组
当创建一个数组时,每个元素都被初始化。在上述char数组chars的例子中,每个值都被初始化为0 (\u0000-null)字符;在数组points的例子中, 每个值都被初始化为null,表明它还未引用一个Point对象。在经过赋值 points[0]= new Point()之后,数组的第一个元素引用为实际Point对象。数组的初始化有如下两种方式:
1.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行;
2.静态初始化:在定义数组的同时就为数组元素分配空间并赋值;

动态初始化数组示例:

public class TestD {
public static void main(String args[]) {
int a[];
a = new int[3];
a[0] = 0;
a[1] = 1;
a[2] = 2;
Date days[];
days = new Date[3];
days[0] = new Date(2008, 4, 5);
days[1] = new Date(2008, 2, 31);
days[2] = new Date(2008, 4, 4);
}
}

class Date {
int year, month, day;

Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
}

静态初始化数组示例:

public class TestS {
public static void main(String args[]) {
int a[] = { 0, 1, 2 };
Time times[] = { new Time(19, 42, 42), new Time(1, 23, 54), new Time(5, 3, 2) };
}
}

class Time {
int hour, min, sec;

Time(int hour, int min, int sec) {
this.hour = hour;
this.min = min;
this.sec = sec;
}
}

数组的默认初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。

public class TestDefault {
public static void main(String args[]) {
int a[] = new int[5];
System.out.println(“” + a[3]);
}
}

参考链接:
http://developer.51cto.com/art/200906/128274.htm
http://tech.ccidnet.com/art/3539/20070608/1107247_1.html
http://tech.163.com/06/0410/09/2EBATT9K0009159T.html
http://java.e800.com.cn/articles/2008/73/1215063991778_1.html
http://www.qqread.com/java/2008/06/w416323.html

: https://blog.darkmi.com/2009/08/11/931.html

本文相关评论 - 1条评论都没有呢
Post a comment now » 本文目前不可评论

No comments yet.

Sorry, the comment form is closed at this time.