java语言基础-数组向量字符串.ppt
《java语言基础-数组向量字符串.ppt》由会员分享,可在线阅读,更多相关《java语言基础-数组向量字符串.ppt(103页珍藏版)》请在三一办公上搜索。
1、第二章Java 语言基础,NCEPU,Contents,1.数组,复合数据类型,NCEPU,复合数据类型,早期的程序设计语言把变量看作是孤立的东西,例如我们往往用三个整数变量day,month和year来表示日期 int day,month,year;虽然这种方法容易理解,但是有两个明显的缺点:,NCEPU,复合数据类型,程序若要处理多个日期,则需要更多的说明,例如要保存两个生日,则需要:birthday1,birthmonth1,birthyear1 birthday2,birthmonth2,birthyear2该程序因使用了多个变量而变得混乱,并且占用了过多的命名空间。每个变量都是独立的
2、,而其实它们应当是某一个日期的组成部分,这样定义无法体现整体的联系。,NCEPU,复合数据类型,复合数据类型由程序员在源程序中定义,把描述整个对象各个不同方面的变量放到一个定义中,建立该模型。一旦有了定义,就可以使用该类型名来创建变量。Java是面向对象的程序设计语言,它为用户提供的复合数据类型即类 和 接口。,NCEPU,复合数据类型,引用类型(reference type即复合类型),引用型变量的值与基本类型(简单类型)变量不同,变量值是指向内存空间的引用(地址)。所指向的内存中保存着变量所表示的一个值或一组值。,引用在其他语言中称为指针或内存地址。Java不支持显式使用内存地址,而必须通
3、过变量名对某个内存空间地址进行访问。,NCEPU,两种类型变量的不同处理,int a;a=12;,MyDate today;today.day=14;,引用型变量在声明后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问.,MyDate today;today=new MyDate();today.day=14;,NCEPU,关于对象和对象的“引用”,String s=new String(“a String”);An object of String is createdThe object is initialized w/”a String”A variable as handl
4、e to String is createdThe value of the handle variable is assign to the object,String s;,s,a String,数组和字符串,NCEPU,第一节 数组,数组概述 一维数组 二维数组,NCEPU,数组概述,数组,是由数目固定的、相同类型的元素组成的有序集合,每个元素相当于一个变量。在Java中,数组是最简单的复合数据类型,NCEPU,数组概述,数组元素可以是任意类型,可以是简单类型,也可以是引用类型。访问数组中的某个元素,可以通过数组名加下标的形式,例如:a4。数组下标的个数就是数组的维数:有一个下标就是一维
5、数组,有两个下标就是二维数组,依次类推。,NCEPU,一维数组,一个一维数组实际上是一列相同类型的变量 一维数组的声明 一维数组的创建 一维数组初始化 数组边界,NCEPU,一维数组的声明,声明一维数组的格式是:;或;,例如:int a 或:Date d,例如:int a 或:Date d,int a 5 是不正确的,要声明成:int a 或:int a,此时的数组a中的元素个数没有确定,系统没有创建具体的数组对象,而是声明了一个指向数组的引用,NCEPU,所有的引用类型都需要用new来初始化,一维数组的创建,创建一维数组的格式为:=new;Java中没有静态定义的数组,数组的内存都是通过ne
6、w动态分配的。,例如:a=new int 5;,此时系统创建了具体的数组对象,为每个数组元素分配了具体的内存单元,并进行了默认的初始化,a=new int 5;,NCEPU,一维数组的创建,数组的声明和创建可以同时进行:=new;或=new;,例如:int a=new int 5;或:int a=new int 5;,NCEPU,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,一维数组,NCEPU,一维数组,public class Test p
7、ublic static void main(String args)int s;s=new int 5;for(int i=0;i5;i+)si=2*i+1,NCEPU,一维数组,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,NCEPU,一维数组,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,
8、NCEPU,一维数组的创建,一旦为数组分配了存储空间,程序中就不能改变数组的长度,但是可以再次使用new生成新的数组对象,分配新的存储空间。例如:int a=new int5;a=new int 6;,数组创建后就不能改变其大小,但是可以使用相同的引用变量指向一个全新的数组。本例中,第一个数组实际上丢失了,除非还有其他引用指向它,NCEPU,注意:元素为引用类型的数组中的每一个元素都需要实例化。,设已定义了Date类包括三个成员变量:year,month,day,一维数组的创建,当创建的数组元素是一个类的对象的时候,这些对象必须要单独创建。,Date d;/Date是一个类,d=new Dat
9、e 5;/初始化,用new为数组分配空间,d 1=new Date();,NCEPU,一维数组的初始化,当创建一个数组对象时,每个数组元素都会被自动初始化。,int a=new int 5;,char c=new char 5;,Date d=new Date 5;,NCEPU,一维数组的初始化,可以在声明数组的同时,为数组元素赋初值。,int a=1,2,3,4,5;,静态初始化,相当于:int a=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=ne
10、w int 5;a=1,2,3,4,5,NCEPU,一维数组的初始化,可以在声明数组的同时,为数组元素赋初值。,Date days=new Date(17,3,2010),new Date(17,3,2010),new Date(17,3,2010);,静态初始化,NCEPU,当用new创建了一个对象时,系统为对象中的变量进行了初始化,即不但为变量分配了相应的存储单元,还设置了变量所属类型的相应初值,这样就避免发生变异错误。,复合数据类型(引用类型):声明时并未创建具体对象,而是声明了一个指向复合数据类型的引用,引用类型都需要用new来初始化,一维数组的初始化,NCEPU,一维数组的初始化,p
11、ublic 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 d)year=y;month=m;day=d;,0null,NCEPU,一维数组,NCEPU,一维数组,NCEPU,一维数组,NCEPU,数组边界,数组类中有唯一的一个成员变量:length,用来表示数组的长度,即数组元素的
12、个数。在Java中,数组的下标从0开始,到length-1结束,即数组a的第一个元素是a0,最后一个元素是alength-1。另外,与C、C+中不同,Java对数组元素要进行越界检查以保证安全性。,NCEPU,数组边界,使用new创建数组对象时,自动给length赋值,数组一旦创建完毕,length就确定下来,除非重新使用new创建新的数组对象。程序在运行过程中会对length进行检查,若发生越界访问,则会抛出一个异常。,NCEPU,数组边界,例 求一组数中的最大值和最小值。在本例中,使用一维数组来存放Math.random()方法产生的一组099之间的随机数。Math.random()方法:
13、public static double random(),想得到一个099之间的数,可以使用:int num=(int)(100*Math.random();,NCEPU,class ArrayMax 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);();,可能
14、的输出为:nums:15 68 19 78 22 85 32 59 75 91,NCEPU,class ArrayMax public static void main(String args)max=num 0;min=num 0;for(i=1;i max)max=num i;if(num i min)min=num i;System.out.println(Max is:+max);System.out.println(Min is:+min);,输出为:Max is:91 Min is:15,之前的输出为:nums:15 68 19 78 22 85 32 59 75 91,NCEPU
15、,二维数组,Java中并没有真正的多维数组,而是通过建立数组的数组来得到多维数组,即数组的元素还是数组。最常用的是二维数组,例如:int mat=new int 2 3;,NCEPU,二维数组,int mat=new int 2 3;,int mat;,mat=new int 2;,mat 0=new int 3;,mat 1=new int 3;,NCEPU,二维数组,创建二维数组的一般格式为:type arrayN=new type arrleng1 arrayN0=new type arrleng2;arrayN1=new type arrleng2;arrayNarrayleng1-1
16、=new type arrleng2;,第二维大小一致的二维数组叫作矩阵数组,NCEPU,二维数组,也可以定义非矩阵数组。,int mat=new int 3;,mat 0=new int 5;,mat 1=new int 3;,mat 2=new int 2;,NCEPU,二维数组,可以在创建二维数组时进行初始化。,int mat1=1,2,3,4,5,6,int mat2=1,2,3,4,5,6,mat1:1 2 3 4 5 6,mat2:1 2 3 4 5 6,NCEPU,二维数组,书写二维数组是要注意合法化:,int a=new int 2 3;,int b 2 3;,int c=ne
17、w int 2 3;,int d=new int 2;,int e=new int 3;,NCEPU,第二节 字符串,声明字符串变量字符串运算String类的常用方法,NCEPU,字符串概述,字符串是内存中连续排列的一个或多个字符,在Java中,字符串是一个对象。在Java中提供了String和StringBuffer类型,它们都是标准包java.lang中封装的类,分别用于处理不变字符串和可变字符串。,NCEPU,字符串概述,String类不变字符串类是指字符串一旦建立,其内容就不能改变,若要改变字符串的内容,则将生成新的实例 StringBuffer类可变字符串类是指字符串中的内容是可以改
18、变的,NCEPU,字符串概述,Java的字符串用关键字String标记。这里的 String不是一个简单类型,而是Java定义的一个类(class),属于引用类型。在此,我们先将String当作一个数据类型使用。,NCEPU,1、声明字符串变量,格式:String 变量名;存储方式:字符串是引用类型,其存储方式与简单类型变量不同。,String str;String str=“abc”;,7,7,0 x01234567,0 x01234567,Hello,x,y,s,t,int x=7;int y=7;String s=“Hello”;String t=s;,String s=“Hello”;
19、String t=“World”;String r=s+t;,0 x1234567,0 x1234568,0 x1234569,Hello,World,HelloWorld,s,t,r,NCEPU,String类-1字符串的创建,对于字符串变量,在使用之前要显式说明,并进行初始化:String s1=new String(This is a String);或直接用字符串常量来初始化一个字符串:String s2=This is a String;,NCEPU,String类-1字符串的创建,String s1=Hello;,String s2=Hello;,s2=World;,s2=Hell
20、o;,String s3=new String(Hello);,NCEPU,String类-1字符串的创建,String s=Hello;,String t=s;,s=World;,t=World;,NCEPU,小结,1)String s1=“abc”;2)String s2=new String(“abc”);区别:第1种方法是定义了一个字符串常量,存放地点是常量池 第2种方法是创建了一个字符串对象,是在执行期创建的,NCEPU,字符串运算,程序中可以用赋值运算为字符串变量赋值。,str=“abc”+”xyz”,除此之外,Java定义“+”可用于两个字符串 的连接运算。,如果字符串与其他类型
21、变量进行“+”运算,系统自动将其他类型转换为字符串。,NCEPU,例,用if语句,将三个整数按从小到大的顺序输出(三个整数已知,为34,21,27)。,NCEPU,class 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 21,27,34,NCEPU,class Order public stat
22、ic 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;(a+b+c);,The order is 82,NCEPU,class 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 or
23、der is 212734,NCEPU,String类-2String类的常用方法,Java为String类定义了许多方法,可以通过下述格式调用Java定义的方法:.;,NCEPU,String类-2String类的常用方法,int length()返回字符串的长度(s1.length();,例如:String s1=Hello;,5,char charAt(int index)返回字符串中index位置的字符(s1.charAt(1);,e,NCEPU,String类-2String类的常用方法,String toLowerCase()将当前字符串中所有字符转换成小写形式 System.ou
24、t.println(s1.toLowerCase();,例如:String s1=Hello;,hello,String toUpperCase()将当前字符串中所有字符转换成大写形式 System.out.println(s1.toUpperCase();,HELLO,NCEPU,String类-2String类的常用方法,String substring(int beginIndex)返回从beginIndex开始的子串(s1.substring(2);,例如:String s1=Hello;,llo,String substring(int beginIndex,int endIndex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言 基础 数组 向量 字符串

链接地址:https://www.31ppt.com/p-6510168.html