java语言基础-数组向量字符串.ppt
《java语言基础-数组向量字符串.ppt》由会员分享,可在线阅读,更多相关《java语言基础-数组向量字符串.ppt(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、NCEPU第二章第二章Java 语言基础语言基础28 一月一月 2023Contents1.数组数组 3.向量向量 2.字符串字符串NCEPUNCEPU复合数据类型复合数据类型 28 一月一月 2023复合数据类型复合数据类型早期的程序设计语言把变量看作是孤立的东西,例如我们往早期的程序设计语言把变量看作是孤立的东西,例如我们往往用三个整数变量往用三个整数变量day,month和和year来表示日期来表示日期 int day,month,year;虽然这种方法容易理解,但是有两个明显的缺点:虽然这种方法容易理解,但是有两个明显的缺点:NCEPU28 一月一月 2023复合数据类型复合数据类型v
2、程序若要处理多个日期,则需要更多的说明,例如要保存两程序若要处理多个日期,则需要更多的说明,例如要保存两个生日,则需要:个生日,则需要:birthday1,birthmonth1,birthyear1 birthday2,birthmonth2,birthyear2该程序因使用了多个变量而变得混乱,并且占用了过多的命该程序因使用了多个变量而变得混乱,并且占用了过多的命名空间。名空间。v每个变量都是独立的,而其实它们应当是某一个日期的组成每个变量都是独立的,而其实它们应当是某一个日期的组成部分,这样定义无法体现整体的联系。部分,这样定义无法体现整体的联系。NCEPU28 一月一月 2023复合数
3、据类型复合数据类型v复合数据类型复合数据类型由程序员在源程序中定义,把描述整个由程序员在源程序中定义,把描述整个对象各个不同方面的变量放到一个定义中,建立该模对象各个不同方面的变量放到一个定义中,建立该模型。一旦有了定义,就可以使用该类型名来创建变量。型。一旦有了定义,就可以使用该类型名来创建变量。vJava是面向对象的程序设计语言,它为用户提供的是面向对象的程序设计语言,它为用户提供的复合数据类型即复合数据类型即类类 和和 接口接口。NCEPU28 一月一月 2023复合数据类型复合数据类型v引用类型引用类型(reference type即复合类型即复合类型)n引用型变量的值与基本类型(简单
4、类型引用型变量的值与基本类型(简单类型)变量不同,变量不同,变量值是指向内存空间的变量值是指向内存空间的引用引用(地址地址)。所指向的内)。所指向的内存中保存着变量所表示的一个值或一组值。存中保存着变量所表示的一个值或一组值。引用在其他语言中称为指针或内存地址。引用在其他语言中称为指针或内存地址。Java不支不支持显式使用内存地址,而必须通过变量名对某个内存持显式使用内存地址,而必须通过变量名对某个内存空间地址进行访问空间地址进行访问。NCEPU28 一月一月 2023两种类型变量的不同处理两种类型变量的不同处理int a;a=12;MyDate today;today.day=14;引用型变
5、量在声明后必须通过引用型变量在声明后必须通过实例化实例化实例化实例化开辟数据空间开辟数据空间,才才能对变量所指向的对象进行访问能对变量所指向的对象进行访问.MyDate today;today=new MyDate();today.day=14;NCEPU28 一月一月 2023关于对象和对象的关于对象和对象的“引用引用”vString s=new String(“a String”);An object of String is createdThe object is initialized w/”a String”A variable as handle to String is cre
6、atedThe value of the handle variable is assign to the objectString s;sa StringNCEPUNCEPU 数组和字符串数组和字符串 28 一月一月 2023第一节第一节 数组数组 v 数组概述数组概述 v 一维数组一维数组 v 二维数组二维数组NCEPU28 一月一月 2023数组概述数组概述 v数组,是由数组,是由数目固定的数目固定的、相同类型的相同类型的元素组成的元素组成的有有序集合序集合,每个元素相当于一个变量。,每个元素相当于一个变量。v在在Java中,数组是最简单的复合数据类型中,数组是最简单的复合数据类型NCE
7、PU28 一月一月 2023数组概述数组概述 v数组元素可以是任意类型,可以是简单类型,也可以是数组元素可以是任意类型,可以是简单类型,也可以是引用类型。引用类型。v访问数组中的某个元素,可以通过数组名加下标的形式,访问数组中的某个元素,可以通过数组名加下标的形式,例如:例如:a4。v数组数组下标的个数就是数组的维数下标的个数就是数组的维数:有一个下标就是一维有一个下标就是一维数组,有两个下标就是二维数组,依次类推。数组,有两个下标就是二维数组,依次类推。NCEPU28 一月一月 2023一维数组一维数组 一个一维数组实际上是一列相同类型的变量一个一维数组实际上是一列相同类型的变量 v 一维数
8、组的声明一维数组的声明v 一维数组的创建一维数组的创建v 一维数组初始化一维数组初始化v 数组边界数组边界NCEPU28 一月一月 2023a null 一维数组的声明一维数组的声明声明一维数组的格式是:声明一维数组的格式是:;或或 ;例如:例如:int a 或:或:Date d 例如:例如:int a 或:或:Date dint a 5 是不正确的是不正确的要声明成:要声明成:int a 或:或:int a 此时的数组此时的数组a中的元素个数中的元素个数没有确定,系统没有创建具没有确定,系统没有创建具体的数组对象,而是声明了体的数组对象,而是声明了一个指向数组的引用一个指向数组的引用 NCE
9、PU28 一月一月 2023 所有的引用类型都需要用所有的引用类型都需要用new来初始化来初始化一维数组的创建一维数组的创建 创建一维数组的格式为:创建一维数组的格式为:=new ;Java中中没没有有静静态态定定义义的的数数组组,数数组组的的内内存存都都是是通通过过new动态分配的。动态分配的。例如:例如:a=new int 5;此时系统创建了具体的数此时系统创建了具体的数组对象,为每个数组元素组对象,为每个数组元素分配了具体的内存单元,分配了具体的内存单元,并进行了默认的初始化并进行了默认的初始化0 x03456789a0a00a10a20a30a4a =new int 5;NCEPU28
10、 一月一月 2023一维数组的创建一维数组的创建数组的声明和创建可以同时进行:数组的声明和创建可以同时进行:=new ;或或 =new ;例如例如:int a =new int 5;或或:int a=new int 5;NCEPU28 一月一月 2023public class Test public static void main(String args)int s;s=new int 5;for(int i=0;i5;i+)si=2*i+1 一维数组一维数组NCEPU28 一月一月 2023一维数组一维数组public class Test public static void main
11、(String args)int s;s=new int 5;for(int i=0;i5;i+)si=2*i+1 NCEPU28 一月一月 2023一维数组一维数组public class Test public static void main(String args)int s;s=new int 5;for(int i=0;i5;i+)si=2*i+1 NCEPU28 一月一月 2023一维数组一维数组public class Test public static void main(String args)int s;s=new int 5;for(int i=0;i5;i+)si=
12、2*i+1 NCEPU28 一月一月 2023一维数组的创建一维数组的创建一一旦旦为为数数组组分分配配了了存存储储空空间间,程程序序中中就就不不能能改改变变数数组组的的长长度度,但但是是可可以以再再次次使使用用new生生成成新新的的数数组组对对象,分配新的存储空间。象,分配新的存储空间。例如:例如:int a =new int5;a=new int 6;0 x03456789a0a00a10a20a30a40 x07654321a0a00a10a20a30a40a5数组创建后就不能改变其大小,但是可以使用相同的引用变量指数组创建后就不能改变其大小,但是可以使用相同的引用变量指向一个全新的数组。
13、本例中,第一个数组实际上丢失了,除非还向一个全新的数组。本例中,第一个数组实际上丢失了,除非还有其他引用指向它有其他引用指向它NCEPU28 一月一月 2023 注意:注意:元素为引用类型的数组中的每一个元素都需元素为引用类型的数组中的每一个元素都需要实例化。要实例化。设已定义了设已定义了Date类类包括三个成员变量:包括三个成员变量:year,month,day一维数组的创建一维数组的创建当当创创建建的的数数组组元元素素是是一一个个类类的的对对象象的的时时候候,这这些些对对象必须要单独创建。象必须要单独创建。Date d ;/Date是一个类是一个类d=new Date 5;/初始化,用初始
14、化,用new为数组分配空间为数组分配空间d 1=new Date();nulld 0 x01234567dnulld0nulld1nulld2nulld3nulld4 0 x01234567dnulld00 x02345678 d1nulld2nulld3nulld40d1.year0d1.month0d1.dayNCEPU28 一月一月 2023一维数组的初始化一维数组的初始化当当创创建建一一个个数数组组对对象象时时,每每个个数数组组元元素素都都会会被被自自动动初始化。初始化。int a =new int 5;0 x01234567a0a00a10a20a30a4char c =new ch
15、ar 5;Date d =new Date 5;0 x03456789dnulld0nulld1nulld2nulld3nulld4引用为引用为null,表示不指,表示不指向任何存储单元向任何存储单元0 x02345678cnullc0nullc1nullc2nullc3nullc4字符字符 u0000(null)NCEPU28 一月一月 2023一维数组的初始化一维数组的初始化 可以在声明数组的同时,为数组元素赋初值。可以在声明数组的同时,为数组元素赋初值。int a =1,2,3,4,5;0 x01234567a1a02a13a24a35a4静态初始化静态初始化相当于:相当于:int a
16、=new int 5;a 0=1;a 1=2;a 2=3;a 3=4;a 4=5;注意:注意:静态初始化必须在声明数组时进行,而不能写静态初始化必须在声明数组时进行,而不能写成如下形式:成如下形式:int a ;a=1,2,3,4,5或或 int a =new int 5;a=1,2,3,4,5NCEPU28 一月一月 2023一维数组的初始化一维数组的初始化 可以在声明数组的同时,为数组元素赋初值。可以在声明数组的同时,为数组元素赋初值。Date days=new Date(17,3,2010),new Date(17,3,2010),new Date(17,3,2010);静态初始化静态初
17、始化NCEPU28 一月一月 2023当用当用new创建了一个对象时,系统为对象中的变量进行了创建了一个对象时,系统为对象中的变量进行了初始化,即不但为变量分配了相应的存储单元,还设置了初始化,即不但为变量分配了相应的存储单元,还设置了变量所属类型的相应初值,这样就避免发生变异错误。变量所属类型的相应初值,这样就避免发生变异错误。类型类型初值初值类型类型初值初值类型类型 初值初值整型整型0booleanfalsefloat0.0f引用类型引用类型nullcharu0000double0.0复合数据类型(引用类型):复合数据类型(引用类型):声明时并未创建具体对象,声明时并未创建具体对象,而是声
18、明了一个指向复合数据类型的引用,引用类型都需而是声明了一个指向复合数据类型的引用,引用类型都需要用要用new来初始化来初始化一维数组的初始化一维数组的初始化NCEPU28 一月一月 2023一维数组的初始化一维数组的初始化public class Test public static void main(String args)int a=new int5;Date days=new Date3;System.out.println(a3);System.out.println(days2);class Date int year,month,day;Date(int y,int m,int
19、d)year=y;month=m;day=d;0nullNCEPU28 一月一月 2023一维数组一维数组NCEPU28 一月一月 2023一维数组一维数组NCEPU28 一月一月 2023一维数组一维数组NCEPU28 一月一月 2023数组边界数组边界v数数组组类类中中有有唯唯一一的的一一个个成成员员变变量量:length,用用来来表表示示数数组组的的长度,即数组元素的长度,即数组元素的个数个数。v在在Java中中,数数组组的的下下标标从从0开开始始,到到length-1结结束束,即即数数组组a的的第一个元素是第一个元素是a0,最后一个元素是,最后一个元素是alength-1。v 另另外外
20、,与与C、C+中中不不同同,Java对对数数组组元元素素要要进进行行越越界界检检查以保证安全性。查以保证安全性。NCEPU28 一月一月 2023数组边界数组边界v使使用用new创创建建数数组组对对象象时时,自自动动给给length赋赋值值,数数组组一一旦旦创创建建完完毕毕,length就就确确定定下下来来,除除非非重重新新使使用用new创建新的数组对象。创建新的数组对象。v程程序序在在运运行行过过程程中中会会对对length进进行行检检查查,若若发发生生越越界访问,则会抛出一个异常。界访问,则会抛出一个异常。NCEPU28 一月一月 2023数组边界数组边界v例例 求一组数中的最大值和最小值
21、。求一组数中的最大值和最小值。在本例中,使用一维数组来存放在本例中,使用一维数组来存放Math.random()方法产生的一组方法产生的一组099之间的随机数。之间的随机数。Math.random()方法:方法:public static double random()Math类属于类属于java.lang包,在包,在程序中直接使用即可。程序中直接使用即可。该方法返回一个该方法返回一个0.01.0之间的小数之间的小数 想得到一个想得到一个099之间的数,可以使用:之间的数,可以使用:int num=(int)(100*Math.random();NCEPU28 一月一月 2023class A
22、rrayMax public static void main(String args)final int SIZE=10;int num =new int SIZE;int i,max,min;System.out.print(nums:);for(i=0;i num.length;i+)num i=(int)(100*Math.random();System.out.print(+num i);();为每一个为每一个num数组元素赋一个数组元素赋一个099之间之间的随机值的随机值 可能的输出为:可能的输出为:nums:15 68 19 78 22 85 32 59 75 91 NCEPU2
23、8 一月一月 2023class ArrayMax public static void main(String args)max=num 0;min =num 0;for(i=1;i max)max=num i;if(num i b)t=a;a=b;b=t;if(bc)t=b;b=c;c=t;if(ab)t=a;a=b;b=t;System.out.println(The order is+a+,+b+,+c);The order is 21,27,34NCEPU28 一月一月 2023class Order public static void main(String args)int a
24、=34,b=21,c=27,t;if(ab)t=a;a=b;b=t;if(bc)t=b;b=c;c=t;if(ab)t=a;a=b;b=t;(a+b+c);The order is 82NCEPU28 一月一月 2023class Order public static void main(String args)int a=34,b=21,c=27,t;if(ab)t=a;a=b;b=t;if(bc)t=b;b=c;c=t;if(ab)t=a;a=b;b=t;System.out.println(The order is+a+b+c);The order is 212734NCEPU28 一
25、月一月 2023String类类-2String类的常用方法类的常用方法 vJava为为String类定义了许多方法,可以通过下述格类定义了许多方法,可以通过下述格式调用式调用Java定义的方法:定义的方法:.;NCEPU28 一月一月 2023String类类-2String类的常用方法类的常用方法 vint length()返回返回字符串的长度字符串的长度 (s1.length();例如:例如:String s1=Hello;5char charAt(int index)返回字符串中返回字符串中index位置的字符位置的字符(s1.charAt(1);eNCEPU28 一月一月 2023S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言 基础 数组 向量 字符串
限制150内