Java程序设计5

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一维数组的定义 type arrayName[]; ; 或 type[] arrayName; ;
char s[ ]; int[ ] intNumber; ; int intArray[ ]; ; Date dateArray[ ]; Point points[ ];
注意:数组在定义时不为数组分配内存空间, 注意:数组在定义时不为数组分配内存空间,因此不必 给出数组的元素个数。 给出数组的元素个数。
静态初始化
静态初始化就是在定义数组的同时对数组元素 进行初始化
• 静态初始化可用于任何元素类型,初值块中每个位 静态初始化可用于任何元素类型, 置的每个元素对应一个引用。 置的每个元素对应一个引用。
• 定义格式
数据类型
数组名[ ]={元素 初值,元素2初值,元素3初值, 元素1 数组名[ ]={元素1初值,元素2初值,元素3初值,…} 或 数据类型[ ] 数组名={元素1初值,元素2初值,元素3初值,…} 数据类型[ 数组名={元素1初值,元素2初值,元素3初值, ={元素
第二步分别创建各个数组元素: 第二步分别创建各个数组元素: arrayName[0] = new type(paramList); … arrayName[arraySize-1] = new type(paramList);
复合类型的数组
Point类 类
class Point { int x, y; void test1 ( int x1, int y1) { x = x1; y = y1; } void print() { Systm.out.println(“print test”); } }
二维数组例二 二维数组例二 String s[ ][ ]=new String[2][ ]; s[0] = new String[2]; s[1] = new String[3]; s[0][0] = new String(“Good”); s[0][1] = new String(“Luck”); s[1][0] = new String(“to”); s[1][1] = new String(“you”); s[1][2] = new String(“!”);
int intArray[5]; //是错误的 //是错误的 String stringArrar[]; stringArray = new String[3]; stringArray[0] = new String(“how”); stringArray[1] = new String(“are”);
复合类型的数组
Point points[]; points = new Point[100]; points[0] = new Point(); points[1] = new Point(); Java中没有静态的数组定义 Java中没有静态的数组定义, 中没有静态的数组定义, … 内存都是通过new动态分配的 points[99] = 内存都是通过new动态分配的。 new Point(); 动态分配的。
数组边界例 int list[] = new int [10]; for (int i = 0; i < list.length; i++) { // 进行相应处理的代码 }
循环的结束条件中使用 list.length,而不是常数 。这 ,而不是常数10。 样做不会引起数组下标越界, 样做不会引起数组下标越界, 使程序更健壮,修改更方便。 使程序更健壮,修改更方便。
int intArray[ ][ ]= {{2,3}, {1,5}, {3,4}}; 数组intArray为一个 行 2列的数组 , 它的 为一个3行 列的数组 列的数组, 数组 为一个 形式如下: 形式如下: 23 15 34
多维数组的初始化 动态初始化
type arrayN[ ][ ] = new type [ arrleng1 ][ ]; arrayN [0] = new type [arrleng2]; arrayN [1] = new type [arrleng2]; ...... 直接为每一维分配空间 arrayN [arrleng1 - 1] = new type [arrleng2];
注:如果使用没有初始化的数组,系统会产生 如果使用没有初始化的数组, NullPointException异常,提示用户数组没有初始化 异常, 异常 提示用户数组没有初始化。
程序5 设给定一组整型数, 程序5-1设给定一组整型数,求它们的平均值
多维数组 多维数组的定义
Java中没有真正的多维数组,可以建立数组的 中没有真正的多维数组, 中没有真正的多维数组 数组(的数组……),由此得到多维数组 ),由此得到多维数组 数组(的数组 ), n维数组是 维数组的数组 维数组是n-1维数组的数组 维数组是 说明多维数组时使用类型及多对方括号
数组是具有同一性质的一批数据的集合 数组中的元素可通过下标来访问 Java中,数组是对象。类Object中定义的方法 中 数组是对象。 中定义的方法 都可以用于数组对象。 都可以用于数组对象。 数组的类型,既可以是基本类型, 数组的类型,既可以是基本类型,也可以是类 或者接口基本类型 类类型, 基本类型, 或者接口基本类型,类类型,数组等 数组在使用之前必须先说明
type[ ] arrayName = new type[arraySize] type arrayName[ ] = new type[arraySize]
char s[]; s = new char[20]; char[] s= new char[20]; char s[] = new char[20];
Length:100 … x y
test1() print()
points[1] = new Point ();
(a)
(b)
(c)
数组说明注意 数组变量的类型可以指向它的父类
正确
Object [] points; points = new Point [100];
错误
Point [] points; points = new Object [100];
非矩阵数组 int twoDim[ ][ ] = new int [ 4 ][ ]; twoDim[0] = new int[2]; twoDim[1] = new int[4]; twoDim[2] = new int[6]; twoDim[3] = new int[8];
XX XXXX XXXXXX XXXXXXXX twoDim数组为4行,每 行的元素个数分别为2, 4,6,8个
数组元素的引用
数组名加上下标, 引用方式为: 数组名加上下标 引用方式为: index为数组下标,下标从 开始,一直到 为数组下标, 开始, 为数组下标 下标从0开始 一直到length-1
arrayName[index]
下标是整型常数或表达式
arrayName[1], arrayName[i], ຫໍສະໝຸດ BaidurrayName[6*i]
静态初始化例 int intArray[ ]={1,2,3,4}; int[] ages = {34, 12, 45}; double[] heights = {84.124, 78.2, 61.5}; boolean[] tired = {true, false, false, true}; String[] names ={“Zhang",“Li",“Wang"};
数组说明与创建关系
points points
points = new Point [100]; 执行完毕, 执行完毕,系统在内存中分配一 个数组对象并把数组引用赋给变 量points
points
Length:100 …
Point [] points; 执行完毕, 执行完毕,系统为变量 points分配一个引用空间 points分配一个引用空间
例如: 例如:int a[ ][ ] = new int[2][3]; ;
二维数组例一 二维数组例一 int twoDim [ ][ ] = new int [4][ ]; twoDim[0] = new int[5]; twoDim[1] = new int[5]; twoDim[2] = new int[3];
第5章 数组、向量、字符串 章 数组、向量、
本章知识重点 掌握数组的定义、 掌握数组的定义、分配空间及数组的使用 了解Vector类的概念和使用 了解 类的概念和使用 掌握String类和 类和StringBuffer类处理字符串 掌握 类和 类处理字符串 的使用差别 了解字符串和数值转换的方法
数组 数组说明
注意:数组中第一个元素的下标值从 开始 开始, 注意:数组中第一个元素的下标值从0开始,依次往后 类推, 类推,各元素的存储空间是连续的
动态初始化
动态初始化是使用运算符new为数组分配空间。 动态初始化是使用运算符new为数组分配空间。数组 new为数组分配空间 说明的方括号中的数字表示数组元素个数
多维数组的初始化 静态初始化
在定义数组的同时为数组分配空间
数组名[ 初值表1}, 初值表2}, 初值表3}, 数据类型 数组名 ] [ ]={{ 初值表 ,{ 初值表 ,{ 初值表 ,…} 或 数据类型[ 数组名={{ 初值表 ,{ 初值表 ,{ 初值表 ,…} 初值表1}, 初值表2}, 初值表3}, 数据类型 ] [ ] 数组名
二维矩阵数组 int matrix[ ][ ] = new int [4][5]; 将创建一个有4个一维数组的数组, 将创建一个有 个一维数组的数组,每个一维 个一维数组的数组 数组中又有5个整数 个整数, 列的整数矩阵。 数组中又有 个整数,即4行5列的整数矩阵。 行 列的整数矩阵 该行等价于下列这段代码: 该行等价于下列这段代码: int matrix[ ][ ] = new int [4][ ]; for (int j = 0; j < matrix.length; j++) matrix[j] = new int[5];
二维数组 二维数组的定义方式: 二维数组的定义方式:
type arrayName[ ][ ] type[ ][ ] arrayName type[ ] arrayName[ ]
与一维数组一样, 与一维数组一样,定义对数组元素也没有 分配内存空间,要使用运算符new来分配内 分配内存空间,要使用运算符 来分配内 存,然后才可以访问每个元素
复合类型的数组 复合类型的数组需要经过两步进行空间分配
使用运算符new只是为数组本身分配空间,并没有 只是为数组本身分配空间, 使用运算符 只是为数组本身分配空间 对数组的元素进行初始化 第一步先创建数组本身: 第一步先创建数组本身:
• type arrayName[ ] = new type[arraySize];
多维数组说明 正确的声明: 正确的声明: int a1[][] = new int [2][3]; int a2[][] = new 不允许说明 int [2][]; int []a3[] = new 静态数组 int [4][6]; 说明顺序应从 数组维数的指定 错误的说明: 错误的说明: 高维到低维 只能出现在new 只能出现在 int errarr1[2][3]; 运算符之后 int errarr2[][] = new int [ ] [ 4 ]; int errarr3[][4] = new int [3][4];
数组名[ 数据类型[行数 列数 行数] 列数]; 数据类型 数组名 ] [ ]= new 数据类型 行数 [列数
从最高维起(而且必须从最高维开始),分别为 从最高维起(而且必须从最高维开始),分别为 ), type 每一维分配内存 arrayName[ ][ ] = new type[arraylength1][arraylength2]
数组边界 数组下标从0开始,元素个数 数组下标从 开始,元素个数length是数组 开始 是数组 类中唯一的数据成员变量
new创建数组时系统自动给 创建数组时系统自动给length赋值 创建数组时系统自动给 赋值 数组一旦创建完毕,其大小就固定下来 数组一旦创建完毕, 程序运行时可以使用length进行数组边界检查。 进行数组边界检查。 程序运行时可以使用 进行数组边界检查 如果发生越界访问, 如果发生越界访问,则抛出一个异常
相关文档
最新文档