Java5语言新特性课件_第1页
Java5语言新特性课件_第2页
Java5语言新特性课件_第3页
Java5语言新特性课件_第4页
Java5语言新特性课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、Java5语言新特性 n(学时数:学时)Java5语言新特性n1了解了解java5.0新语言特性包括哪几个方面。新语言特性包括哪几个方面。n2了解了解java5.0中增强的中增强的for循环循环 。n3了解了解java5.0的注释新特性的注释新特性 。n4掌握枚举掌握枚举 。n5. 掌握范型掌握范型 。n6. 掌握类型自动转换掌握类型自动转换 。n7. 了解静态导入了解静态导入 n8. 了解格式化输入与输出了解格式化输入与输出 。 Java5语言新特性n1.1 新语言特性总览新语言特性总览 n1.2 增强的增强的for循环循环 n1.3 注释注释 n1.4 枚举枚举 n1.5 范型范型 n1.

2、6 类型自动转换类型自动转换 n1.7 静态导入静态导入 n1.8 格式化输入与输出格式化输入与输出 Java5语言新特性n1.1.1 Java 5.0 的诞生的诞生n1.1.2 Java 5.0的新语言特性的新语言特性 Java5语言新特性n1.2.1 Init表达式表达式 n1.2.2 局限性局限性 Java5语言新特性n1.3.1 注释的作用注释的作用 n1.3.2 用户自定义标签用户自定义标签 n1.3.3 获取注释信息获取注释信息 Java5语言新特性n1.4.1 enum类型特征类型特征 n1.4.2 使用使用enum类型类型Java5语言新特性n1.5.1 类型安全类型安全n1.

3、5.2范型定义范型定义 n1.5.3 声明范型类和类型参数声明范型类和类型参数 n1.5.4 声明范型接口和多个类型参声明范型接口和多个类型参数数 Java5语言新特性n1.6.1 类型自动转换类型自动转换 Java5语言新特性n1.7.1 静态导入静态导入 Java5语言新特性n1.8.1 格式化输出格式化输出 n1.8.2 格式化输入格式化输入 Java5语言新特性n时间:时间:2004年年10月月 n版本名称不是版本名称不是Java1.5而是而是Java 5.0的原因的原因 ?从从Java诞生至今已有诞生至今已有9年时间,而从有年时间,而从有J2SE算起也有算起也有5个年头了;在这样的背

4、境下,将该个年头了;在这样的背境下,将该版本号从版本号从1.5改为改为5.0可以更好的反映出新版的可以更好的反映出新版的Java技术的成熟度、稳定性、可伸缩性、安全技术的成熟度、稳定性、可伸缩性、安全性。性。 nJava 5.0的目标的目标 :通过增强:通过增强Java平台的力量,平台的力量,允许开发者更容易地使用,允许开发者更容易地使用,Java编程语言的这编程语言的这些改进将吸引大量各种些改进将吸引大量各种Java开发者开发者 。Java5语言新特性n范型范型 :添加编译时类型来检查您的代码:添加编译时类型来检查您的代码 ,使用范型来,使用范型来代替所有的类型转换代替所有的类型转换 。n加

5、强的加强的For循环:在循环:在Collection中使用循环来代替迭代中使用循环来代替迭代器器 。n自动打包:无须手工打包和拆包自动打包:无须手工打包和拆包(box and unbox)原原始类型始类型 。n枚举:枚举:Java开发者开发者 可以使用枚举类可以使用枚举类 。n变参:方法调用之中把变参当作一系列独立的参数变参:方法调用之中把变参当作一系列独立的参数 。n静态导入:静态倒入(静态导入:静态倒入(Static Import)特征允许您)特征允许您导入所有静态类的成员到您的代码中,并且可以通过导入所有静态类的成员到您的代码中,并且可以通过简短和非限制的名称来引用这些常量和方法。简短和

6、非限制的名称来引用这些常量和方法。 n评注评注 :提供了一个代码运行时可访问的信息:提供了一个代码运行时可访问的信息 。n国际化:国际化:Unicode 4.0的支持的支持 。n质量:稳定性、强壮性和兼容性质量:稳定性、强壮性和兼容性 Java5语言新特性n在循环中,初始化表达式只计算一次在循环中,初始化表达式只计算一次 未增强的未增强的For :int sum = 0;Integer numbers = computeNumbers();for (int i=0; i numbers.length ; i+) sum += numbersi;增强后的增强后的For: int sum = 0;

7、for ( int number: computeNumbers() ) sum += number; Java5语言新特性n不可以在迭代期间访问迭代器或下标。不可以在迭代期间访问迭代器或下标。例子例子1:for (int i=0; i numbers.length ; i+) if (i != 0) System.out.print(,); System.out.print(numbersi);例子例子2:for (Iterator it = n.iterator() ; it.hasNext() ; ) if (it.next() 0) it.remove(); Java5语言新特性n可以

8、被用来生成文档,检查代码间依赖关系,帮助编译器作语法可以被用来生成文档,检查代码间依赖关系,帮助编译器作语法检查。检查。n文档生成工具:文档生成工具:Xdoclet 、javadocn代码检查举例:代码检查举例:public class Parent public void foo() System.out.println(Original Implementation of foo); public class Child extends Parent Override public void foo() System.out.println(Overide Implementation o

9、f foo); Java5语言新特性子类想重载子类想重载foo()方法,不过用户可能一时疏方法,不过用户可能一时疏忽把它写成了忽把它写成了fob()。 错误提示:错误提示: Child.java:3: method does not override a method from its superclass Override 1 errorJava5语言新特性用户自定义标签用户自定义标签 :package tiger.annotation;/* * 用户自定义标签用户自定义标签MyTag */public interface MyTag /定义了一个定义了一个tag之后,用户就可以在任何之后,

10、用户就可以在任何java文件中使用这个文件中使用这个tag了:了:import tiger.annotation.MyTag;public class TagTest MyTag public void testTag() /注释类型还可以有成员变量:注释类型还可以有成员变量:package tiger.annotation;/* * 用户自定义标签,带有成员变量的用户自定义标签,带有成员变量的MyTag */public interface MyTag String name(); int age();Java5语言新特性用户可以这么使用这个标签:用户可以这么使用这个标签: MyTag(na

11、me=MyTag,age=1) public void testTag() Java5语言新特性import java.lang.annotation.Annotation;import tiger.annotation.MyTag;public class TagTest MyTag(name=MyTag,age=1) public void test() public static void main(String args) TagTest tt = new TagTest(); try Annotation annotation =tt.getClass().getMethod(tes

12、t).getAnnotations(); for (Annotation tag :annotation) System.out.println(Tag is: + tag); System.out.println() + (MyTag)tag).name(); System.out.println(tag.age() + (MyTag)(tag).age(); catch(NoSuchMethodException e) e.printStackTrace(); Java5语言新特性n执行执行TagTest可以得到输出如下可以得到输出如下: Tag is:tiger.annotation.M

13、yTag(name=MyTag, age=1)()MyTagtag.age()1 Java5语言新特性n它不能有它不能有public的构造函数的构造函数n所有枚举值都是所有枚举值都是public、static和和final的。的。n默认实现了默认实现了parable接口。接口。 nenum重载了重载了toString方法方法nvalueOf方法,这个方法和方法,这个方法和toString方法是相方法是相对应的。对应的。nvalues方法方法noridinal方法方法Java5语言新特性n遍历所有枚举值:遍历所有枚举值: for (Color c: Color.values() System.o

14、ut.println(“find value:” + c); Java5语言新特性n在在enum中定义方法和变量中定义方法和变量 :public enum Color Red, Green, Blue; /定义一个变量表示枚举值的数目。定义一个变量表示枚举值的数目。 private static int number = Color.values().length ; /* * 随机返回一个枚举值随机返回一个枚举值 return a random enum value. */ public static Color getRandomColor() long random = System.c

15、urrentTimeMillis() % number; switch (int) random) case 0: return Color.Red; case 1: return Color.Green; case 2: return Color.Blue; default : return Color.Red; Java5语言新特性n重载重载(Override)toString方法:方法: public String toString() switch (this) case Red: return Color.Red; case Green: return Color.Green; ca

16、se Blue: return Color.Blue; default: return Unknow Color; Java5语言新特性n在在Java 5.0之前的版本中,之前的版本中, Java程序并不是程序并不是类型安全的。类型安全的。List stringList = new ArrayList();stringList.add(abcde);String str = (String)stringList.get(0); n仍然可以把一个整型对象添加到这个队列中,仍然可以把一个整型对象添加到这个队列中, 例如:例如: stringList.add(new Integer(5);n在这种情

17、况下,从字符列表中获取对象时,强在这种情况下,从字符列表中获取对象时,强制类型转换就会导致运行时异常。制类型转换就会导致运行时异常。n范型是范型是Java迈向类型安全的一个重要步骤,使迈向类型安全的一个重要步骤,使用范型可以构造出类型安全的代码。用范型可以构造出类型安全的代码。Java5语言新特性n所谓范型是指类型参数化所谓范型是指类型参数化(parameterized types)。Java是一种强类型的语言,在是一种强类型的语言,在J2SE 1.4以及以前的版本中,我们在定义一个以及以前的版本中,我们在定义一个Java类的接口或者方法的时候,必须指定变量的类类的接口或者方法的时候,必须指定

18、变量的类型。在声明范型类、接口或者函数时,定义变型。在声明范型类、接口或者函数时,定义变量的时候不指定某些变量的具体类型,而是用量的时候不指定某些变量的具体类型,而是用一个类型参数代替。在使用这个类、接口或者一个类型参数代替。在使用这个类、接口或者方法的时候,这个类型参数由一个具体类型所方法的时候,这个类型参数由一个具体类型所代替。代替。Java5语言新特性public class GenList private T elements; private int size = 0; private int length = 0; public GenList(int size) elements

19、 = (T)new Objectsize; this.size = size; public T get(int i) if (i length) return elementsi; return null; public void add(T e) if (length size - 1) elementslength+ = e; Java5语言新特性n声明范型接口:声明范型接口:public interface GenInterface void func(T t);n声明多个类型参数声明多个类型参数public class GenMap Java5语言新特性n自动装包:基本类型自动转为包

20、装类自动装包:基本类型自动转为包装类(例如:例如:int Integer)。n自动拆包:包装类自动转为基本类型自动拆包:包装类自动转为基本类型(例如:例如:Integer int)。int a = 3;Collection c = new ArrayList();c.add(a); /自动转换成自动转换成Integer.Integer b = new Integer(2);c.add(b + 2);/这里这里Integer先自动转换为先自动转换为int进行进行加法运算,然后加法运算,然后int再次转换为再次转换为Integer Java5语言新特性n没有静态导入时没有静态导入时 Math.sq

21、rt(Math.pow(x, 2) + Math.pow(y, 2); n使用静态导入时使用静态导入时 import static java.lang.Math.*;sqrt(pow(x, 2) + pow(y, 2); Java5语言新特性public class TestFormat public static void main(String args) int a = 150000, b = 10; float c = 5.0101f, d = 3.14f; System.out.printf(%4d %4d%n, a, b); System.out.printf(%x %x%n, a

22、, b); System.out.printf(%3.2f %1.1f%n, c, d); System.out.printf(%1.3e %1.3e%n, c, d*100); Java5语言新特性输出结果为:输出结果为:150000 10249f0 a5.01 3.15.010e+00 3.140e+02Java5语言新特性nJava 5.0之前版本中的输入:之前版本中的输入: String input = JOptionPane.showInputDialog(prompt);int n = Integer.parseInt(input);double x = Double.parseD

23、ouble(input);s = input; n在在Java 5.0中的输入:中的输入: Scanner in = new Scanner(System.in);System.out.print(prompt);int n = in.nextInt();double x = in.nextDouble();String s = in.nextLine();Java5语言新特性n请问请问Java 5中的新语言特性有哪些?中的新语言特性有哪些?n请先阅读下面一段使用范型的示例代码并编译运行。请先阅读下面一段使用范型的示例代码并编译运行。然后思考在此例中运用范型与不运用范型的代码不然后思考在此例中

24、运用范型与不运用范型的代码不同之处。同之处。 class Example private T t; Example(T o) this.t = o; T getObj() return t; void ShowObject() System.out.println(对象的类型是:对象的类型是: + t.getClass().getName(); Java5语言新特性public class GenericsExample /* * param args */ public static void main(String args) / TODO Auto-generated method stub Example exampleInt=new Example1(100); exampleInt.ShowObjec

温馨提示

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

评论

0/150

提交评论