java数组字符串向量课件

上传人:我*** 文档编号:143666545 上传时间:2020-09-01 格式:PPT 页数:35 大小:347.50KB
返回 下载 相关 举报
java数组字符串向量课件_第1页
第1页 / 共35页
java数组字符串向量课件_第2页
第2页 / 共35页
java数组字符串向量课件_第3页
第3页 / 共35页
java数组字符串向量课件_第4页
第4页 / 共35页
java数组字符串向量课件_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《java数组字符串向量课件》由会员分享,可在线阅读,更多相关《java数组字符串向量课件(35页珍藏版)》请在金锄头文库上搜索。

1、第5章数组、字符串、向量,继承性和多态性,2,主要内容,5.1 数组 一维数组 二维数组 5.2 字符串 字符串常量 String类 StringBuffer类 StringTokenizer类 5.3 向量,继承性和多态性,3,5.1 数组,数组是有序数据的集合,是由数目固定、相同类型的元素组成的,用一个统一的数组名和下标来唯一地确定数组中的元素。Java将数组作为对象来处理,数组是一种引用类型,从java.lang.Object继承而来,故Object类中的所有方法均可用。,继承性和多态性,4,5.1.1 一维数组,具有一个下标的数组称为一维数组。 1. 一维数组的声明 其声明格式如下:

2、这里只有数组变量的定义,没有为数组元素分配空间,只为数组的引用分配了空间,array1和array2目前为空的引用。,方式一:数据类型 数组名; 方式二:数据类型 数组名; 例如: int array1; double array2;,继承性和多态性,5,2. 一维数组的初始化,一维数组定义之后,必须经过初始化才可以引用,数组经过初始化后,其长度(即可存放的元素个数)就不可再改变。数组的初始化分为静态初始化和动态初始化两种: (1) 静态初始化:在定义数组的同时对数组元素进行初始化 int intArray=1,2,3,4; / 定义了一个含有4个元素的int型数组 注意: 在给数组赋初值时,

3、不能同时指定数组的大小,Java会根据初值的多少自动计算数组的大小。 静态初始化必须使用上述一条语句完成 当创建数组后,如果没有初始化,系统会根据数组的不同数据类型,指定不同的缺省值。,继承性和多态性,6,(2) 动态初始化:用运算符new为数组分配空间 对于简单类型的数组,其格式如下: 数据类型 数组名=new 数据类型arraySize; 数据类型 数组名=new 数据类型arraySize; 其中arraySize表示数组长度,通常为整型常量,用以指明数组元素的个数。 或先声明数组,再对数组进行初始化: 数据类型 数组名; 数组名=new 数据类型arraySize;,继承性和多态性,7

4、, 对于复合(引用)类型(类、接口、数组)的数组,需要经过以下两步进行内存空间的分配。 首先:为数组分配空间,每一个数组元素都是一个引用,格式为: 数组名=new 数据类型arraySize; 然后为每一个数组元素分配所引用的对象空间,格式为: 数组名i=new 数组元素对象的构造函数; 例如: String stringArray; /定义一个String类型的数组 stringArray = new String3; 上述语句给数组stringArray分配3个引用空间,初始化每个引用值为null stringArray0=new String(how); stringArray1=new

5、 String(are); stringArray2=new String(“you”);(如图示),继承性和多态性,8,继承性和多态性,9,3. 一维数组元素的的引用,当数组初始化后就可通过数组名与下标来引用数组中的每一个元素。一维数组元素的引用格式如下: 数组名int类型的表达式 注意: (1) 与C/C+不同的是,Java对数组元素的下标要进行越界检查,以保证访问的安全性。若数组下标越界,Java会抛出java.lang.ArrayIndexOutOfBoundsException异常。 (2) length是属于数组对象的数据域而不是方法。因此,使用length()会出错,length

6、只有在数组创建后才能访问。创建前,数组的引用是null。 (3) 与C、C+中不同,Java对数组元素要进行越界检查以保证安全性。,继承性和多态性,10,4. 数组的复制,一个简单的赋值语句并不能完成数组复制工作,在Java中,可以使用赋值语句复制基本类型的变量却不能复制对象,如数组。将一个对象赋值给另一个对象,只会使两个对象指向相同的内存地址。 赋值数组有以下三种方法: (1) 用循环语句复制数组的每一个元素,如 for(int i=0;isourceArray.length;i+) targetArrayi=sourceArrayi; (2) 使用Object的clone方法,如: int

7、 targetArray = (int)sourceArray.clone(); (3) 使用System类中的静态方法arraycopy,arraycopy的语法如下: arraycopy(sourceArray,srcpos,targetArray,tarpos,length);,继承性和多态性,11,5. 程序举例,【例5.2】用数组求解Fibonacci数列的前20项,即使用数组下标表达式求解数学上的迭代问题。 【例5.3】用冒泡法和选择法两种方法对N个数排序(升序)。,继承性和多态性,12,图5.2 对5个数据进行冒泡法排序,继承性和多态性,13,5.1.2 二维数组,如果数组的元素

8、类型也是数组,这种结构就是多维数组。多维数组的维数没有限制,可以为二维、三维等。最常用的二维数组是一个特殊的一维数组,它的每个元素都是一个一维数组,又叫做数组的数组。表示矩阵或表格需要使用二维数组。 1. 二维数组的声明,数据类型 数组名; 或 数据类型 数组名; 例如: int arr; 或 int arr;,继承性和多态性,14,2. 二维数组的初始化,二维数组的初始化也分为静态初始化和动态初始化两种。 (1) 静态初始化:在定义数组的同时为数组分配空间,例如: int intArray=1,2,2,3,3,4; (2) 动态初始化:对高维数组来说,动态分配内存空间有下面两种方法: 直接为

9、每一维分配空间,格式如下: (举例说明) 数据类型 数组名=new数据类型数组长度; 或 数据类型 数组名=new 数据类型数组长度数组长度;,继承性和多态性,15,例如: int intArray1=new int4; int intArray2=new int43; /*定义了一个二维数组intArray2,分配了12个存储单元,类似一个4行3列的矩阵。*/ 需要注意的是不指定行数而指定列数是错误的。例如,下面的初始化是错误的。 int arr=new int4; / 错误,继承性和多态性,16, 从最高维开始(而且必须从最高维开始),分别为每一维分配空间。在这种情况下,第2维的每一个数组

10、的长度可以不同,是一个不规则的二维数组。不规则的数组可以节省存储空间。 例如: String s =new String2 ; s0=new String2; s1=new String3; s00=new String(Good); s01=new String( Luck); s10=new String( to); s11=new String( you); s12=new String(!);,继承性和多态性,17,3. 二维数组的引用,对二维数组中的每个元素,引用方式为: 数组名index1index2 其中index1和index2是数组下标,为整型常数和整型表达式,都是从0开始的

11、。 二维数组也有length属性,可以求每一维数组的长度。对于:int x = new int34;,继承性和多态性,18,【例5.5】测定数组的长度及数组赋值。,public class twoDimensionArray public static void main(String arg) int matrix = 1, 2, 3, 4, 5, 2, 3, 4, 5, 3, 4, 5, 4, 5, 5 ; System.out.println(the length of matrix is +matrix.length); for (int i=0;i5;i+) System.out.p

12、rintln(the length of matrix+i+ is +matrixi.length); ,继承性和多态性,19,【例5.6】求二维数组中的最大数。 【例5.7】矩阵的加法和乘法运算。,继承性和多态性,20,5.2 字符串,字符串是多个字符的序列,是编程中常用的数据类型。 在纯面向对象的Java语言中,将字符串数据类型封装为字符串类,无论是字符串常量还是字符串变量,都是用类的对象来实现的,在对象中封装了一系列方法来进行字符串处理。,继承性和多态性,21,5.2.1 字符串常量,一个字符串常量使用双引号括住的一串字符,字符常量是用单引号括住的一个字符。一个字符串常量是一个Strin

13、g对象,故可以使用String类中的各种方法。 注意:若Java程序中多处出现字符串常量如ABC,则Java编译程序只创建一个String对象,所有的字符串常量ABC将使用同一个String对象。如: String s1=ABC; String s2=ABC; String s3=new String(ABC); 上述三条语句创建了三个对象,其中s1和s2是同一个对象,而s1和s3是2个不同的对象,尽管它们所表示的字符序列相等。,继承性和多态性,22,5.2.2 String类,1. String类的构造方法 String类中提供了多种构造方法来创建String类的对象。 (1) public

14、 String(); 功能:创建一个字符串对象,其字符串值为空。 (2) public String(String value); 功能:用字符串对象value创建一个新的字符串对象。 (3) public String(char value); 用字符数组value来创建字符串对象。 (4) public String(char value,int offset,int count) 从字符数组value中下标为offset的字符开始,创建有count个字符的字符串对象。,继承性和多态性,23,(5) public String(byte ascII) 用byte型字符串数组ascII,按缺

15、省的字符编码方案创建字符串对象。 (6) public String(byte ascII,int offset int count) 从字节型数组ascII中下标为offset的字符开始,按缺省的字符编码方案创建count个字符的串对象。 (7) public String(StringBuffer buffer) 用缓冲字符串buffer创建一个字符串对象。 【例5.8】String类的构造方法的使用。,继承性和多态性,24,2. String类的常用成员方法,创建一个String类的对象后,使用相应类的成员方法对创建的对象进行处理。String类的常用成员方法见表5.3。 说明: (1)

16、 关于字符串比较的说明 不能用“=” ,而用equals()方法。 (2) 程序设计中频繁使用字符串。 (3) 类型转换 String类的静态方法valueOf()实现简单数据转化为字符串 。 类Integer、Double、Float和Long中也提供了方法valueOf()把一个字符串转化为对应的数字对象类型 示例:参看例5.10,继承性和多态性,25,5.2.3 StringBuffer类,StringBuffer类也是java.lang.Object的子类。与String类不同,StringBuffer类是一个在操作中可以更改其内容的字符串类。即一旦创建StringBuffer类的对象,在操作中可以更改和变动字符串的内容。也就是说对于StringBuffer类的对象不仅能进行查找和比较等操作,也可以做添加、插入、修改之类的操作。,继承性和多态性,26,1. StringBuffer类的构造函数,StringBuffer类提供了多种构造方法来创建类StringBuffer的对象。 (1) public St

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号