Presentation is loading. Please wait.

Presentation is loading. Please wait.

第4章 数组与字符串 学习目标 本章要点 上机练习 习 题.

Similar presentations


Presentation on theme: "第4章 数组与字符串 学习目标 本章要点 上机练习 习 题."— Presentation transcript:

1 第4章 数组与字符串 学习目标 本章要点 上机练习 习 题

2 学习目标 数组与字符串是Java语言中非常重要且功能强大的对象,其作用渗透到程序设计的各个方面,是读者继续深入学习必不可少的基本知识。本章主要介绍了数组的概念,以及数组函数和向量类,讲解了数组和向量类的使用,还介绍了字符串String类和StringBuffer类,通过示例详细讲解了字符串的常用方法。让读者熟练掌握数组和字符串的特点与使用方法。

3 本章要点 一维数组和多维数组的概念 数组的声明、创建和初始化 数组函数的使用 String类和StringBuffer类字符串
字符串的常用方法

4 数 组 数组作为一种符合数据类型广泛应用于数据运算和图形程序设计中。 一维数组与多维数组 数组函数的使用 向量类
数 组 数组作为一种符合数据类型广泛应用于数据运算和图形程序设计中。 一维数组与多维数组 数组函数的使用 向量类 应用举例——数组与向量类的使用

5 一维数组与多维数组 数组有一维和多维两种形式,下面将详细介绍两种数组的使用方法。 一维数组的声明 一维数组的创建 数组的初始化 多维数组

6 一维数组的声明 数组是具有相同类型的元素按照顺序组成的一种复合数据类型。通过一个整数下标,可以访问其中的每一个值,下标从0开始排序,如果一个数组的长度为4,那么各元素序号为0、1、2和3。但是在Java中定义数组时候,不允许直接指定数组的大小。

7 一维数组的声明 根据这个定义,可以得出数组的特点:数组的所有元素是同一类型,各个元素是有顺序的,每个元素通过数组名和数组下标来表示。
一维数组的声明格式为: Type arrayName[ ]; 或者 type [ ] arrayName;

8 一维数组的声明 其中,type为该数组的数据类型,可以声明任何类型的数组──简单类型或类类型。ArrayName为数组名。

9 一维数组的声明 上述这种将方括号置于变量名之后可以声明数组的格式,是用于C、C++和Java编程语言的标准格式。有些观点认为这种格式会使声明的格式复杂难懂,因而,Java编程语言允许一种替代的格式,该格式中的方括号位于变量名的左边。

10 一维数组的声明 这样的结果可以认为类型部分在左,而变量名在右,上述两种格式并存,可以选择任何一种作为习惯的方式。当数组声明的方括号在左边时,该方括号可应用于所有位于其右的变量。

11 一维数组的创建 Java中所有数据类型都在定义时自动为其分配内存空间,但数组必须在声明后再经过创建数组这一步骤才能使用。创建数组是指在声明数组之后为数组分配内存空间,同时对数组元素进行初始化。创建数组有两种方式:

12 一维数组的创建 1)使用关键字new创建数组 使用关键字new来为一个已经声明的数组分配实际的内存空间。 其格式如下:
arrayName = new type[arraySize ]; 这里,arraySize是指明数组的实际长度。

13 一维数组的创建 char array1[] = new char 20; 这条语句相当于以下两条语句 char array1[];
而对于类类型数组的创建要多理解

14 一维数组的创建 2)直接指定初始值的方式创建数组 除使用关键字new创建数组以外,还可以以赋值的形式创建数组。

15 一维数组的创建 其格式如下: int I[]={1,2,3,4,5};
这条语句定义了一个包含5个元素的整型数组,同时又指定了元素的初始值,并为其创建了5个元素的存储区。

16 一维数组的创建 【例4-1】 一维数组的声明和创建(光盘:\源文件\第4章\例4-1.txt)。

17 数组的初始化 数组初始化是保证系统安全的基础,变量绝不能在未初始化的状态下使用。
当创建一个数组时,即为数组分配了内存空间,每个元素都被初始化,数值类型的数组元素被自动初始化为0,布尔类型的数组元素被自动初始化为false,引用类型的数组元素被自动初始化为null。

18 数组的初始化 对数组的初始化也可以在定义数组的同时进行。
另一方面,数组元素的范围也是非常重要的,用来指示单个数组元素的下标必须总是从0开始,且保持在合法范围之内——大于或等于0,且小于数组长度。任何访问在上述界限之外的数组元素的行为都会引起运行时出错。

19 数组的初始化 【例4-2】 用冒泡排序法将数组中的元素按从小到大的顺序排列(光盘:\源文件\第4章\例4-2.txt)。
冒泡排序法将数组中两个相邻的元素进行比较,并总是将小的元素交换到前面。

20 例4-2运行结果

21 多维数组 Java并不直接支持多维数组,所以多维数组的声明是通过对一维数组的嵌套来完成的,即使用“数组的数组”的方式来声明多维数组。这里我们首先来看二维数组。

22 多维数组 1)二维数组 一个二维数组的声明格式为: type arrayName[ ] [ ] ;

23 多维数组 与一维数组一样,多维数组对数组元素没有分配任何的空间,在声明后,必须使用关键字new来为其分配内存空间,然后才能访问里面的元素。多维数组有以下方法来分配空间。

24 多维数组 直接分配每一维的空间。 必须从最高维开始,由高到低,分别为每一维分配内存空间。 2)多维数组
Java采用“数组的数组”声明多维数组,使处理多维数组更灵活。多维数组可以不是矩形

25 多维数组 显然,这种多维数组是“不整齐”的,所以在声明和创建多维数组时候,不一定要指定每一维的元素个数。上述数组yanghui[][]的高维各元素由于包含不同个数的低维元素,所以右边的方括号中实际无法确定某个数值。

26 多维数组 因此,在多维数组的声明和创建时候,数组最前面的一维或多维必须指定元素的个数,后面的方括号中可以不指定元素个数。 以下写法是允许的:
int arrayDim[][][]=new int[3][][]

27 多维数组 但以下语句是错误的: int arrayDim [][]=new int[][][3]

28 多维数组 【例4-3】 二维数组的使用——矩阵相乘(光盘:\源文件\第4章\例4-3.txt)。
矩阵A(m,n)和B(n,1)相乘得到矩阵C(m,1),矩阵C的每个元素为Cij=aik*bkj(i=1,2,...,m,j=1,2...,n)

29 例4-3运行结果

30 数组函数的使用 在系统中很多关于数组的函数可以直接调用,下面将介绍几种常用的数组函数。 数组复制System.arraycopy()
数组排序Arrays.sort()

31 数组复制System.arraycopy()
Java语言在System类中提供了一种特殊的方法复制数组,该方法被称作arraycopy()。 数组复制的基本格式为: public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

32 数组复制System.arraycopy()
【例4-4】 数组的复制,将数组a1的前4个元素赋给数组b1(光盘:\源文件\第4章\例4-4.txt)。

33 数组排序Arrays.sort() ArraysSort()将数组中的元素按从小到大的顺序排列,结果仍然放在源数组中。
【例4-5】 将数组a1按升序排列,并显示排序结果(光盘:\源文件\第4章\例4-5.txt)。

34 类“test4_5”运行结果

35 向量类 向量类Vector是Java.util包提供的一个工具类,它是允许不同类型元素共存的变长数组,具有比数组更强大的功能。每个向量类的对象都可以表达一个完整的数据系列,同时,向量类还封装了许多有用的方法来操作和处理这些数据。向量类对象所表达的序列元素的个数是可变的,可以使用向量类实现变长数组。

36 向量类 向量类可为工作的各种元素类型的动态数组提供方法,如类继承关系。

37 向量类 向量类的构造函数 向量类的变量 向量类的基本方法

38 向量类的构造函数 向量类有如下3种构造函数。 public Vector():构造一个空向量。
public Vector(int initialCapacity):构造一个具有存储容量的空向量。 public Vector(int initialCapacity,int capacityInctrment):构造具有存储容量和增加量的空向量。

39 向量类的变量 向量类包含如下3种变量。 protected int capacityIncrement:增加量,如为0,则每次需要增加时,缓冲区的大小成倍。

40 向量类的变量 protected int elementCount:缓冲区中元素的数量。
rotected Object elementData[]:元素被贮存的缓冲区。

41 向量类的基本方法 下面是向量类中的一些方法,可以参照Java API查看该方法的描述。
public final int size():返回向量中元素的数量。 public final boolean contains(Object elem):如果指定对象是收集的值,返回真。

42 向量类的基本方法 public final int indexOf (Object elem):从起始位置搜索指定的对象,然后将一个索引返回到其中(或,如果元素未找到为-1)。 public finalsynchronized Object elementAt (int index):在指定的索引中返回元素。

43 向量类的基本方法 public final synchronized void setElementAt (int index):在指定索引中以指定对象替代指定元素。 public final synchronized void removeElementAt (int index):删除指定索引中的元素。

44 向量类的基本方法 public final synchronized void addElement (Object obj):附加指定对象作为向量的最后元素。 public final synchronized void insertElementAt (Object obj,int index):插入指定对象作为指定索引中的一个元素,上移具有同等或更大索引的所有元素。

45 应用举例——数组与向量类的使用 【例4-6】 Vector类的使用(光盘:\源文件\第4章\应用举例MyVector.txt)。

46 字 符 串 Java语言将字符串作为对象来处理,字符串及相关操作都被封装在Java.lang包中的String类和StringBuffer类之中。 String类 StringBuffer类 字符串的常用方法 应用举例——字符串操作的综合应用

47 String类 String类用于比较两个字符串、查找串中的字符及子串、字符串与其他类型的转换,String类对象的内容初始化后不能改变。
字符串的创建

48 String类构造函数 String类有许多构造函数,下面将介绍主要的5个。
public String(String value):生成一个空串。 public String(char value[]):生成一个字符数组。

49 String类构造函数 public String(char value[], int startIndex, int numChars):生成一个字符串,这个字符串从字符数组value[]中提取,即从value[]数组的startIndex位置开始提取字符,共提取numChars个字符组成一个字符串。

50 String类构造函数 public String(byte ascii[],int hiByte):以字节数组形式生成一个字符串,数组中存放字符串中各字符对应的ASCII码。

51 String类构造函数 public String(byte ascii[], int hiByte, int startIndex, int numChars):以字节数组形式生成一个字符串,这个字符串从字节数组ascii[]的startIndex位置开始提取字符,共提取numChars个字符组成一个字符串。

52 字符串的创建 String类不能派生子类,也就是说String类不能被其他类继承,另外,即使程序中不使用new关键字,Java编译器也能从String类生成一个对象。 String s=”Hello world!”;

53 字符串的创建 该语句中没有使用new关键字,但是仍然生成了一个字符串对象s。这也是String类的特点。
在Java语言中,可以隐式或显式地创建字符串对象。

54 字符串的创建 1)隐式地创建字符串对象 对于隐式地创建字符串对象,可以使用双引号来设置一个String语句,Java将自动创建字符串对象。

55 字符串的创建 2)显式地创建字符串对象 3)使用已创建的字符串创建另一个字符串 4)由字符数组创建一个字符串对象
5)提取字符数组的部分字符创建一个字符串对象

56 StringBuffer类 StringBuffer类用于内容可以改变的字符串,可将其他类型的数据增加、插入到字符串中,也可翻转字符串的内容。 通过类StringBuffer的构造方法可生成可变的字符串对象。格式如下:

57 StringBuffer类 Sing strObj = new StringBuffer();
String strObj = new StringBuffer(int num); String strObj = new StringBuffer(String str); 参数num为字符串缓冲区的初始长度,参数str给出字符串的初始值。

58 字符串的常用方法 下面分别对字符串的常用方法进行介绍。 Length方法 Equals方法 equalslgnorCase方法
toUpperCase和toLowerCase方法

59 字符串的常用方法 Replace方法 Contact方法 compareTo和compareTolgnoreCase方法
Substring方法 public int indexOf方法

60 Length方法 使用String类中的length()方法可以获取一个字符串的长度。

61 Equals方法 字符串对象调用String类中的public Boolean equals(String s)方法,比较当前字符串对象的实体是否与参数指定的字符串s的实体相同。

62 equalslgnorCase方法 比较当前字符串对象与参数指定的字符串是否相同,比较时可以忽略大小写。

63 toUpperCase和toLowerCase方法

64 Replace方法 Replace可将给定字符串中出现的所有特定字符oldChar替换成指定字符newChar,形成新的字符串。

65 Contact方法 contact(String otherStr)可将当前字符串和给定字符串otherStr字符串连接起来,形成新的字符串。

66 compareTo和compareTolgnoreCase方法
字符串对象可以使用String类中的public compareTo(String s)方法按字典顺序与参数s指定的字符串比较大小。如果当前字符串与s相同,该方法返回0;如果当前字符串对象大于s,该方法返回正值;如果小于s,该方法返回负值。

67 compareTo和compareTolgnoreCase方法
按字典顺序比较两个字符串还可以使用public compareTolgnoreCase(String s)方法,该方法可以忽略大小写。

68 Substring方法 substring(int beginIndex)可从开始位置beginIndex开始一直取值到最后一个字符,形成新的字符串。 subString(int beginIndex, int endIndex) 从开始位置beginIndex开始一直取到结束位置endIndex的字符,形成新的字符串。

69 public int indexOf方法 要搜索指定字符串出现的位置,通常有以下几种方法。
public int indexOf(String s):字符串调用该方法从当前字符串的头开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回值为-1。

70 public int indexOf方法 public int indexOf(String s,int starpoint):字符串调用该方法从当前字符串的starpoint处开始检索字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回值为-1。

71 public int indexOf方法 public int lastIndexOf(String s):字符串调用该方法从当前字符串的头开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回值为-1。

72 public int indexOf方法 public int lastIndexOf(String s,int starpoint):字符串调用该方法从当前字符串的starpoint处开始检索字符串s,并返回最后出现s的位置。如果没有检索到字符串s,该方法返回值为-1。

73 应用举例——字符串操作的综合应用 本节应用实例将通过两个小实例来巩固字符串的综合应用方法。 compareTo的使用 toUpperCase和toLowerCase的使用

74 compareTo的使用 下面练习字符串方法compareTo的使用(光盘:\源文件\第4章\应用举例compareTo1.txt)。

75 toUpperCase和toLowerCase的使用
下面将练习字符串方法toUpperCase、toLowerCase的使用,(光盘:\源文件\第4章\应用举例charactor1.txt)。

76 上 机 练 习 本节上机练习将通过数组的定义和使用,创建向量类两个练习,巩固本章所学的知识点。 数组的定义和使用 创建向量类

77 数组的定义和使用 本次练习熟悉数组的定义和使用,将12个二进制数放入数组中,并通过数组对它们进行位运算的操作,并将结果逐行显示出来(光盘:\源文件\第4章\上机练习1.txt)。

78 类“Test_shuzu”运行结果

79 创建向量类 本次练习将通过创建一个向量类的实例展示了数组与向量类的使用(光盘:\源文件\第4章\上机练习2.txt)。

80 习 题 (1)自行设计一个向量的例子,并编程实现它。 (2)编程计算从5到10的平方值,并将结果存入一个数组中。
习 题 (1)自行设计一个向量的例子,并编程实现它。 (2)编程计算从5到10的平方值,并将结果存入一个数组中。 (3)设定一个含有大小写字母的字符串,先将所有的大写字母输出,再将所有小写字母输出。

81 习 题 (4)设置m=“HelloJava”,请写出下列方法的值。 m.length( ) m.contact(“mickle”)
习 题 (4)设置m=“HelloJava”,请写出下列方法的值。 m.length( ) m.contact(“mickle”) m.substring(2,5); m.replace(‘J’,’a’); (5)设定10个字符串,打印出以字母“b”开头的字符串。


Download ppt "第4章 数组与字符串 学习目标 本章要点 上机练习 习 题."

Similar presentations


Ads by Google