Java程序设计(五)_第1页
Java程序设计(五)_第2页
Java程序设计(五)_第3页
Java程序设计(五)_第4页
Java程序设计(五)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、山东科技大学信息科学与工程学院2n枚举枚举nfor语句的简化写法语句的简化写法主要内容3泛型(1)n 应用泛型应用泛型(Genericity)可以可以减少数据的类型转换减少数据的类型转换,并,并避免程避免程序类型转换错误序类型转换错误,并,并提高程序代码的复用性和运行效率提高程序代码的复用性和运行效率。n 泛型实现泛型实现:通过给:通过给类类或或接口接口增加增加类型参数类型参数(Type Parameter)来实现。)来实现。n 回顾:回顾:不不带泛型的带泛型的类定义格式类定义格式如下如下类修饰词类修饰词 class 类名类名 extends 父类名父类名 implements 接口名称列表接

2、口名称列表类体类体4泛型(2)n 带泛型的带泛型的类定义格式类定义格式如下:如下:类修饰词类修饰词 class 类名类名 extends 父类名父类名 implements 接口名称列表接口名称列表 类体类体n 带泛型的带泛型的接口定义格式接口定义格式如下:如下:类修饰词类修饰词 interface 接口名接口名 extends 接口名称列表接口名称列表 类体类体5泛型(3)n 泛型中泛型中类型参数类型参数的定义格式有的定义格式有3种:种:n a) 类型变量标识符类型变量标识符n b) 类型变量标识符类型变量标识符 extends 父类型父类型n c) 类型变量标识符类型变量标识符 exten

3、ds 父类型父类型1 & 父类型父类型2 & & 父类型父类型n说明:说明:1)格式)格式a)实际上等价于:实际上等价于:类型变量标识符类型变量标识符 extends java.lang.object。2)格式)格式b)中的类型变量是父类型的子类型。中的类型变量是父类型的子类型。3)格式)格式c)中的所有父类型中中的所有父类型中只能有一个是类(或没有)只能有一个是类(或没有),其余均为接其余均为接口口。此时要求类型变量对应的实际类型应具备各个父类型的所有能力。此时要求类型变量对应的实际类型应具备各个父类型的所有能力。6泛型(4)n 泛型举例:泛型举例:public cl

4、ass J_Add /类体类体说明:说明:1)在类)在类J_Add中可以中可以将将T作为一种作为一种已知的已知的类型类型(如同(如同int, boolean, String等一样)来使用;等一样)来使用;2)在实际使用类)在实际使用类J_Add时时(即构建对象实例时即构建对象实例时),需要,需要将类型变量将类型变量T替换为替换为Number类型的子类型类型的子类型。3)当类型变量)当类型变量T实现了多个接口时,替换时也实现了多个接口时,替换时也要求替换类实现了这些接要求替换类实现了这些接口中的所有方法口中的所有方法。7泛型(5)n 泛型例程格式泛型例程格式1) (J_Add.java, P16

5、0):public class J_Add public String mb_sum(T a1, T a2, T a3) return(a1.toString( ) + a2.toString( ) + a3.toString( ); / 方法方法mb_sum结束结束 public static void main(String args ) J_Add b = new J_Add( ); Integer a1 = new Integer(1); Integer a2 = new Integer(2); Integer a3 = new Integer(3); System.out.print

6、ln( b.mb_sum(a1, a2, a3) ); / 方法方法main结束结束 / 类类J_Add结束结束8泛型(6)n 泛型例程格式泛型例程格式2) (J_AddInterface.java, P161):interface J_Interface public int mb_sum(T a1, T a2, T a3); / 接口接口J_Interface结束结束public class J_AddInterface implements J_Interface public int mb_sum(T a1, T a2, T a3) int b1 = Value( ); i

7、nt b2 = Value( ); int b3 = Value( ); return( b1 + b2 + b3 ); / 方法方法mb_sum结束结束public static void main(String args ) J_AddInterface b = new J_AddInterface( ); Integer a1 = new Integer(1); Integer a2 = new Integer(2); Integer a3 = new Integer(3); System.out.println( b.mb_sum(a1, a2, a3) );

8、/ 方法方法main结束结束 / 类类J_AddInterface结束结束说明:说明:1)类)类J_AddInterface有一个类型变量有一个类型变量T,T是是Number子类型;子类型;2) 类类J_AddInterface的类型变量的类型变量T同时是接同时是接口口J_Interface的实际类型。的实际类型。9泛型(7)n 泛型例程格式泛型例程格式3) (J_Genericity.java, P163):class J_C1 public void mb_methodA( ) System.out.print(A); / 方法方法mb_methodA结束结束 / 类类J_C1结束结束in

9、terface J_C2 public void mb_methodB( ); / 接口接口J_C2结束结束class J_C3 extends J_C1 implements J_C2 public void mb_methodB( ) System.out.print(B); / 方法方法mb_methodB结束结束 / 类类J_C3结束结束class J_T public void mb_methodT( T t ) t.mb_methodA( ); t.mb_methodB( ); / 方法方法mb_methodT结束结束 / 类类J_T结束结束public class J_Gener

10、icity public static void main(String args ) J_T a = new J_T( ); a.mb_methodT( new J_C3( ) ); / 方法方法main结束结束 / 类类J_Genericity结束结束10n泛型泛型nfor语句的简化写法语句的简化写法主要内容11枚举(1)n 枚举类型枚举类型目的是定义枚举常量目的是定义枚举常量。枚举类型的定义格式如下:。枚举类型的定义格式如下:枚举类型修饰词列表枚举类型修饰词列表 enum 枚举类型标识符枚举类型标识符说明:说明:1)枚举类型修饰词可以)枚举类型修饰词可以没有没有或是或是public,不能

11、是,不能是protected, private和和abstract。2)如果)如果枚举类型修饰词为枚举类型修饰词为public,则,则枚举类型定义所在文件的文件名前缀必须与枚举类枚举类型定义所在文件的文件名前缀必须与枚举类型名相同型名相同,并且该枚举类型可以为所有软件包的所有类和接口访问。,并且该枚举类型可以为所有软件包的所有类和接口访问。3)如果)如果没有枚举类型修饰词没有枚举类型修饰词,则该枚举类型只能为同一个软件包内使用。,则该枚举类型只能为同一个软件包内使用。enum E_SEASON 春季春季, 夏季夏季, 秋季秋季, 冬季冬季public enum E_WEEKEND saturd

12、ay, sunday12枚举(2)n 枚举类型变量定义格式如下:枚举类型变量定义格式如下:枚举类型标识符枚举类型标识符 枚举变量枚举变量;枚举类型标识符枚举类型标识符 枚举变量枚举变量1, 枚举变量枚举变量2, ,枚举变量枚举变量n;枚举类型标识符枚举类型标识符 枚举数组变量枚举数组变量;或或或或E_SEASON s1;s1=E_SEASON.春季春季;E_SEASON s2;s2=E_SEASON.values( );s1=E_SEASON.春季春季;s2.夏季夏季=E_SEASON.夏季夏季;s1=E_SEASON.夏季夏季;s1=E_SEASON.春季春季;s1=“夏季夏季”;s2.冬季

13、冬季=E_SEASON.秋季秋季;truetruefalse说明:访问说明:访问枚举常量枚举常量可通过可通过枚举变量或枚举类型加枚举变量或枚举类型加.操作操作来进行。来进行。13枚举(3)n 枚举类型及其变量的相关方法枚举类型及其变量的相关方法方法原型方法原型功能描述功能描述public String name( )返回枚举常量对应的字符串返回枚举常量对应的字符串public String toString( )返回枚举常量对应的字符串返回枚举常量对应的字符串E values( ) 以数组形式返回该枚举类型的所有枚举常以数组形式返回该枚举类型的所有枚举常量量E_SEASON s1;s1=E_S

14、EASON.春季春季;E_SEASON s2;s2=E_SEASON.values( );String tmp=();String tmp1=s1.toString();String tmp2=E_SEASON.秋季秋季.name( );String tmp3=E_SEASON.秋季秋季.toString( );String tmp4=( );String tmp5=春季春季.toString( );String tmp6=春季春季.name( );14枚举(4)n 枚举例程(枚举例程(J_Enum.java , P166)enum E_SEASON 春季春季,

15、夏季夏季, 秋季秋季, 冬季冬季 / 枚举枚举E_SEASON结束结束public class J_Enum public static void main(String args ) E_SEASON sa = E_SEASON.values( ); for ( int i=0; i sa.length; i+ ) switch(sai) case 春季春季: System.out.println(春季花满天春季花满天); break; case 夏季夏季: System.out.println(夏季热无边夏季热无边); break; case 秋季秋季: System.out.printl

16、n(秋季果累累秋季果累累); break; case 冬季冬季: System.out.println(冬季雪皑皑冬季雪皑皑); break; / switch结构结束结构结束 / for循环结束循环结束 / 方法方法main结束结束 / 类类J_Enum结束结束!不能写作不能写作:E_SEASON.春季春季!不能写作不能写作:si.春季春季15n泛型泛型n枚举枚举主要内容16for语句的简化写法(1)n 针对针对迭代器迭代器Iterator和和数组数组,for语句可以简化成如下写法:语句可以简化成如下写法:for( 类型类型 标识符标识符: 表达式表达式) 循环体循环体说明:说明:1)当类型

17、是迭代器当类型是迭代器Iterator时时,则可以,则可以隐式地隐式地通过通过Iterator的成员方法的成员方法hasNext()和和next()方法来逐一访问迭代器的所有元素,方法来逐一访问迭代器的所有元素,此时的此时的类型类型是是迭代器迭代器的元素类型,标识符的元素类型,标识符可以是可以是任意合法标识符任意合法标识符。实际上这种简化写法等价于。实际上这种简化写法等价于如下写法:如下写法:for( Iterator i=表达式表达式.iterator( ); i.hasNext( ); ) 类型类型 标识符标识符=i.next( ); 语句或语句块语句或语句块;17for语句的简化写法(2

18、)n for语句针对语句针对迭代器迭代器Iterator的简化例程的简化例程( J_VectorFor.java, P169 ):import java.util.Iterator;import java.util.Vector;public class J_VectorFor public static void main(String args ) Vector a = new Vector( ); a.add( a ); a.add( b ); a.add( c ); for ( String c : a) System.out.print(c + , ); System.out.pri

19、ntln( ); for ( Iterator i=a.iterator( ); i.hasNext( ); ) String c = i.next( ); System.out.print(c + , ); / for循环结束循环结束 System.out.println( ); / 方法方法main结束结束 / 类类J_VectorFor结束结束18for语句的简化写法(3)n 针对针对迭代器迭代器Iterator和数组和数组,for语句可以简化成如下写法:语句可以简化成如下写法:for( 类型类型 标识符标识符: 表达式表达式) 循环体循环体说明:说明:2)当类型是数组类型时当类型是数组

20、类型时,则可以,则可以隐式地隐式地通过数组下标通过数组下标逐一访问数组的所有逐一访问数组的所有元素,元素,此时的此时的类型类型是是数组的元素类型,标识符数组的元素类型,标识符可以是可以是任意合法标识符任意合法标识符。实。实际上这种简化写法等价于如下写法:际上这种简化写法等价于如下写法:类型类型 ca=表达式表达式;for( int i=0; i=ca.length( ); i+ ) 类型类型 标识符标识符=cai; 语句或语句块语句或语句块;19for语句的简化写法(4)n for语句针对语句针对数组类型数组类型的简化例程的简化例程1( J_EnumFor.java, P170 ):enum

21、E_SEASON 春季春季, 夏季夏季, 秋季秋季, 冬季冬季 / 枚举枚举E_SEASON结束结束public class J_EnumFor public static void main(String args ) for ( E_SEASON c:E_SEASON.values( ) System.out.print(c + , ); System.out.println( ); E_SEASON ca = E_SEASON.values( ); for ( int i=0; i ca.length; i+ ) E_SEASON c = cai; System.out.print(c + , ); / for循环结束循环结束 System.out.println( ); / 方法方法main结束结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论