Java chp2+
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分类
– 基本数据类型的数组与复合数据类型的数组 – 一维数组和多维数组
一维数组
– 声明格式: 声明Байду номын сангаас式:
Computer Science & Technology
类型 数组名[];
类型[] 数组名;
数组名的命名方法同简单变量,可以是任何合法的标识符; 数组名的命名方法同简单变量,可以是任何合法的标识符; 类型标识符可以是基本数据类型或者是类、接口; 类型标识符可以是基本数据类型或者是类、接口;
数组名[下标]
其中下标为非负的整型常数或表达式 , 其数据类型为 、 short、 其中下标为非负的整型常数或表达式, 其数据类型为int、 、 byte,但不可以是 ,但不可以是long。 。 Java会对数组的下标进行越界检查以保证安全性。下标的范围是从 会对数组的下标进行越界检查以保证安全性。 会对数组的下标进行越界检查以保证安全性 下标的范围是从0 到数组的长度减一。 到数组的长度减一。
Computer Science & Technology
– StringBuffer字符串的创建 字符串的创建
StringBuffer 字符串变量名 = new StringBuffer(); StringBuffer 字符串变量名 = new StringBuffer(字符串内容);
在使用 在使用new来分配内存时,对于多维数组至少要给出最高维的大小。 来分配内存时,对于多维数组至少要给出最高维的大小。 来分配内存时
– 在声明二维数组的同时分配数组空间
类型 数组名[][] = new 类型[行数][列数]; 类型[][] 数组名 = new 类型[行数][列数];
Computer Science & Technology
Java软件设计基础
2* 字符串与数组
2*.1 数组
数组是相同类型的数据元素按顺序组成的一种复合数据类 型。 特点
– – – – 数组也是一个对象; 数组也是一个对象; 一个数组中所有的元素应该是同一类型; 一个数组中所有的元素应该是同一类型; 数组中的元素是有序的; 数组中的元素是有序的; 数组中的一个元素通过数组名和数组下标来确定。 数组中的一个元素通过数组名和数组下标来确定。
Computer Science & Technology
2*.2 字符串
字符串是字符组成的序列,Java语言将字符串作为对象来 字符串是字符组成的序列, 语言将字符串作为对象来 处理。 处理。 分类: 分类:
– String类用于存储和处理那些值不会发生改变的字符串常量; 类用于存储和处理那些值不会发生改变的字符串常量; 类用于存储和处理那些值不会发生改变的字符串常量 – StringBuffer类用于存储和操作那些可能发生变化的字符串变量。 类用于存储和操作那些可能发生变化的字符串变量。 类用于存储和操作那些可能发生变化的字符串变量
– 二维数组初始化
赋初值与一维数组类似,可以直接对每个元素赋值,或者使用初值表 赋初值与一维数组类似,可以直接对每个元素赋值, 赋值。 赋值。
类型 数组名[][] = {{初值表1},{初值表2},…,{初值表n}}; 数组名[行下标][列下标] = 初值;
以下两种初始化方式是等价的: 以下两种初始化方式是等价的:
字符串变量的声明
– String字符串的创建 字符串的创建
String 字符串变量名 = new String(); String 字符串变量名 = new String(字符串内容);
其中字符串内容即为赋给字符串变量的值。 其中字符串内容即为赋给字符串变量的值。
Computer Science & Technology
复制数组
– 通过 通过System类提供的 类提供的arraycopy方法,格式如下 方法, 类提供的 方法
public static void arraycopy(Object src,int srcpos,Object dest,int destpos,int length)
其 中 src 和 dest 分 别 表 示 被 复 制 的 数 组 和 目 的 数 组 。 srcpos 、 destpos和length分别表示源数组中的开始位置、目的数组中的开始 分别表示源数组中的开始位置、 和 分别表示源数组中的开始位置 位置和要复制的数组元素的数量。 位置和要复制的数组元素的数量。
Computer Science & Technology
多维数组
– 严格的说 严格的说Java并不支持多维数组,多维数组的声明是通过对一维 并不支持多维数组, 并不支持多维数组 数组的嵌套形式声明来实现的。这样的好处是允许行的长度可变。 数组的嵌套形式声明来实现的。这样的好处是允许行的长度可变。 – 二维数组的声明
数组名 = new 类型[元素个数];
Computer Science & Technology
元素个数即数组长度。数组分配空间是连续的,可以通过属性length 元素个数即数组长度。数组分配空间是连续的,可以通过属性 获得该数组的元素个数,方法如下: 获得该数组的元素个数,方法如下:
数组名.length;
s
String对象: “Java”
s
String对象: “Java” String对象: “HTML”
Computer Science & Technology
字符串是不可变的,又被频繁的使用。当字符串字面量具有相同的字 字符串是不可变的,又被频繁的使用。 符序列时,通过使用唯一的实例,可提高JVM的效率并节约内存。这 的效率并节约内存。 符序列时,通过使用唯一的实例,可提高 的效率并节约内存 样的实例称为“被限定的”。 样的实例称为“被限定的” 在Java中,通过使用 对象的intern方法返回一个限定字符串。 方法返回一个限定字符串。 中 通过使用String对象的 对象的 方法返回一个限定字符串
类型 数组名[] = {初值表}; 数组名[下标] = 初值;
– 其中初值表是用逗号隔开的一组值。 其中初值表是用逗号隔开的一组值。
Computer Science & Technology
– 数组元素的使用
当声明了一个数组并分配了内存空间后,就可以在程序中任何可以使 当声明了一个数组并分配了内存空间后, 用变量的地方使用数组元素,其格式为: 用变量的地方使用数组元素,其格式为:
– 分配数组空间
在声明数组时,不直接指出数组中的元素个数(即数组长度)。数组 在声明数组时,不直接指出数组中的元素个数(即数组长度) 说明之后不能立即被访问,因为还没有为数组元素分配内存空间。 说明之后不能立即被访问,因为还没有为数组元素分配内存空间。因 此需要使用new操作来构造数组,为其分配内存空间,格式如下: 操作来构造数组, 此需要使用 操作来构造数组 为其分配内存空间,格式如下:
String对象: “Java”
Computer Science & Technology
在上例中,运算符“==”只能检测字符串是否指向同一个对象,而不 在上例中,运算符“ ”只能检测字符串是否指向同一个对象, 能判断是否具有相同的内容即字符序列。 能判断是否具有相同的内容即字符序列。 字符串的比较可使用 字符串的比较可使用equals()方法对对象的内容进行相等比较,例如: 方法对对象的内容进行相等比较, 方法对对象的内容进行相等比较 例如: 在上例中, 的值为true。 在上例中,s.equals(s1)的值为 的值为 。 字符串也可以使用campareTo方法进行比较, 当两个字符串相等时 字符串也可以使用 方法进行比较, 方法进行比较 返回值为0,当不相等时, 返回值为 ,当不相等时,返回两个字符串第一个不相等字符间的差 值。
类型 数组名[][]; 类型[][] 数组名;
– 分配二维数组空间
数组分配空间是连续的,构造方法如下: 数组分配空间是连续的,构造方法如下:
– 直接为每一维分配空间 数组名 = new 类型[行数][列数];
数组空间 int a[ ][ ] = new int[2][3];
Computer Science & Technology
String s=“abc”; String s1=“abg”; int a=pareTo(s1);
– 此时 的值应为-4,因为 与s1第一个不相等的字符分别为 和g,c比g小 此时a的值应为 ,因为s与 第一个不相等的字符分别为 第一个不相等的字符分别为c和 , 比 小 的值应为 4,因此返回 。 ,因此返回-4。
– – – – 数值型数组: 数值型数组:0 字符型数组:不可见ISO控制符(\u000) 控制符( 字符型数组:不可见 控制符 ) 布尔型数组: 布尔型数组:false 字符串数组以及其他对象数组: 字符串数组以及其他对象数组:null
当不希望数组的初值为系统给定的默认值时,可以用赋值语句对数组 当不希望数组的初值为系统给定的默认值时, 进行初始化。 进行初始化。 初始化可以在数组声明时进行,也可以声明以后,在构造数组的时候 初始化可以在数组声明时进行,也可以声明以后, 赋值。 赋值。
维数组赋值 int a[ ][ ] = new int[3][2]; a[0][0] = 2; a[0][1] = 3; a[1][0] = 1; a[1][1] = 5; a[2][0] = 3; a[2][1] = 4;
Computer Science & Technology
– 多维数组的创建和使用
– 从最高维开始,分别为每一维分配空间 从最高维开始,
可以通过属性 可以通过属性length获得该数组的元素个数,方法如下: 获得该数组的元素个数,方法如下: 获得该数组的元素个数
– 数组名 数组名.length求出多维数组中第一维的长度; 求出多维数组中第一维的长度; 求出多维数组中第一维的长度 – 数组名 数组名[0].length求出多维数组中第二维的长度; 求出多维数组中第二维的长度; 求出多维数组中第二维的长度 – 依此类推求出其余维的长度。 依此类推求出其余维的长度。
String对象是不可变的,它的内容不能改变。 对象是不可变的,它的内容不能改变。 对象是不可变的
String s=“Java”; s=“HTML”;
上述代码不能改变字符串的内容。 上述代码不能改变字符串的内容。
– 第一条语句创建了一个内容为“Java”的字符串对象,并将其引用赋值 第一条语句创建了一个内容为“ ”的字符串对象, 给s; ; – 第二条语句创建了一个内容为“HTML”的新 第二条语句创建了一个内容为“ 对象, ”的新String对象,并将其引用赋 对象 给s。 。 – 赋值后第一个 赋值后第一个String对象仍然存在,但是不能再访问它,因为变量 指向 对象仍然存在, 对象仍然存在 但是不能再访问它,因为变量s指向 了新的对象。 了新的对象。
声明
类型 数组名[][]…[]; 类型[][]…[] 数组名;
创建
类型 数组名[][]…[] = new 类型[长度1][长度2]…[长度n]; 类型[][]…[] 数组名 = new 类型[长度1][长度2]…[长度n];
使用
数组名[下标1][下标2]…[下标n]
Computer Science & Technology
String String String String s=“Java”; s1=new String(“Java”); s2=s1.intern(); s3=“Java”;
– 此时有: 此时有: s1==s为false 为 s2==s为true 为 s==s3为true 为
s s2 s3 s1
被限定的String对象: “Java”
– 声明数组的同时分配数组空间
类型 数组名[] = new 类型[元素个数]; 类型[] 数组名 = new 类型[元素个数];
数组一旦创建之后,就不能再改变其长度! 数组一旦创建之后,就不能再改变其长度!
Computer Science & Technology
– 数组的初始化
用new分配空间后,系统将为每个数组元素都赋予一个初值,初值取 分配空间后, 分配空间后 系统将为每个数组元素都赋予一个初值, 决于数组的类型。 决于数组的类型。