欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第2章Java5语言新特性.ppt

    • 资源ID:2252321       资源大小:292.51KB        全文页数:38页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第2章Java5语言新特性.ppt

    第2章 Java 5语言新特性,(学时数:学时),学习要点:,1了解java5.0新语言特性包括哪几个方面。 2了解java5.0中增强的for循环 。 3了解java5.0的注释新特性 。 4掌握枚举 。 5. 掌握范型 。 6. 掌握类型自动转换 。 7. 了解静态导入 8. 了解格式化输入与输出 。,第2章 Java 5语言新特性,1.1 新语言特性总览 1.2 增强的for循环 1.3 注释 1.4 枚举 1.5 范型 1.6 类型自动转换 1.7 静态导入 1.8 格式化输入与输出,1.1 新语言特性总览,1.1.1 Java 5.0 的诞生 1.1.2 Java 5.0的新语言特性,1.2 增强的for循环,1.2.1 Init表达式 1.2.2 局限性,1.3 注释,1.3.1 注释的作用 1.3.2 用户自定义标签 1.3.3 获取注释信息,1.4 枚举,1.4.1 enum类型特征 1.4.2 使用enum类型,1.5 范型,1.5.1 类型安全 1.5.2范型定义 1.5.3 声明范型类和类型参数 1.5.4 声明范型接口和多个类型参数,1.6 类型自动转换,1.6.1 类型自动转换,1.7 静态导入,1.7.1 静态导入,1.8 格式化输入与输出,1.8.1 格式化输出 1.8.2 格式化输入,Java5.0的诞生,时间:2004年10月 版本名称不是Java1.5而是Java 5.0的原因 ?从Java诞生至今已有9年时间,而从有J2SE算起也有5个年头了;在这样的背境下,将该版本号从1.5改为5.0可以更好的反映出新版的Java技术的成熟度、稳定性、可伸缩性、安全性。 Java 5.0的目标 :通过增强Java平台的力量,允许开发者更容易地使用,Java编程语言的这些改进将吸引大量各种Java开发者 。,Java 5.0的新特性,范型 :添加编译时类型来检查您的代码 ,使用范型来代替所有的类型转换 。 加强的For循环:在Collection中使用循环来代替迭代器 。 自动打包:无须手工打包和拆包(box and unbox)原始类型 。 枚举:Java开发者 可以使用枚举类 。 变参:方法调用之中把变参当作一系列独立的参数 。 静态导入:静态倒入(Static Import)特征允许您导入所有静态类的成员到您的代码中,并且可以通过简短和非限制的名称来引用这些常量和方法。 评注 :提供了一个代码运行时可访问的信息 。 国际化:Unicode 4.0的支持 。 质量:稳定性、强壮性和兼容性,Init表达式,在循环中,初始化表达式只计算一次 未增强的For : int sum = 0; Integer numbers = computeNumbers(); for (int i=0; i numbers.length ; i+) sum += numbersi; 增强后的For: int sum = 0; for ( int number: computeNumbers() ) sum += number;,局限性,不可以在迭代期间访问迭代器或下标。 例子1: for (int i=0; i it = n.iterator() ; it.hasNext() ; ) if (it.next() 0) it.remove();,注释的作用,可以被用来生成文档,检查代码间依赖关系,帮助编译器作语法检查。 文档生成工具:Xdoclet 、javadoc 代码检查举例: 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 of foo“); ,注释的作用,子类想重载foo()方法,不过用户可能一时疏忽把它写成了fob()。 错误提示: Child.java:3: method does not override a method from its superclass Override 1 error,用户自定义标签,用户自定义标签 : package tiger.annotation; /* * 用户自定义标签MyTag */ public interface MyTag /定义了一个tag之后,用户就可以在任何java文件中使用这个tag了: import tiger.annotation.MyTag; public class TagTest MyTag public void testTag() /注释类型还可以有成员变量: package tiger.annotation; /* * 用户自定义标签,带有成员变量的MyTag */ public interface MyTag String name(); int age(); ,用户自定义标签,用户可以这么使用这个标签: MyTag(name=“MyTag“,age=1) public void testTag() ,获取注释信息,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(“test“).getAnnotations(); for (Annotation tag :annotation) System.out.println(“Tag is:“ + tag); System.out.println(“tag.name()“ + (MyTag)tag).name(); System.out.println(“tag.age()“ + (MyTag)(tag).age(); catch(NoSuchMethodException e) e.printStackTrace(); ,获取注释信息,执行TagTest可以得到输出如下: Tag is:tiger.annotation.MyTag(name=MyTag, age=1) tag.name()MyTag tag.age()1,enum类型特征,它不能有public的构造函数 所有枚举值都是public、static和final的。 默认实现了java.lang.Comparable接口。 enum重载了toString方法 valueOf方法,这个方法和toString方法是相对应的。 values方法 oridinal方法,使用enum类型,遍历所有枚举值: for (Color c: Color.values() System.out.println(“find value:” + c);,使用enum类型,在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.currentTimeMillis() % number; switch (int) random) case 0: return Color.Red; case 1: return Color.Green; case 2: return Color.Blue; default : return Color.Red; ,使用enum类型,重载(Override)toString方法: public String toString() switch (this) case Red: return “Color.Red“; case Green: return “Color.Green“; case Blue: return “Color.Blue“; default: return “Unknow Color“; ,类型安全,在Java 5.0之前的版本中, Java程序并不是类型安全的。 List stringList = new ArrayList(); stringList.add(“abcde“); String str = (String)stringList.get(0); 仍然可以把一个整型对象添加到这个队列中, 例如: stringList.add(new Integer(5); 在这种情况下,从字符列表中获取对象时,强制类型转换就会导致运行时异常。 范型是Java迈向类型安全的一个重要步骤,使用范型可以构造出类型安全的代码。,范型定义,所谓范型是指类型参数化(parameterized types)。Java是一种强类型的语言,在J2SE 1.4以及以前的版本中,我们在定义一个Java类的接口或者方法的时候,必须指定变量的类型。在声明范型类、接口或者函数时,定义变量的时候不指定某些变量的具体类型,而是用一个类型参数代替。在使用这个类、接口或者方法的时候,这个类型参数由一个具体类型所代替。,声明范型类和类型参数,public class GenList private T elements; private int size = 0; private int length = 0; public GenList(int size) elements = (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; ,声明范型接口和多个类型参数,声明范型接口: public interface GenInterface void func(T t); 声明多个类型参数 public class GenMap ,类型自动转换,自动装包:基本类型自动转为包装类(例如:int Integer)。 自动拆包:包装类自动转为基本类型(例如: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,静态导入,没有静态导入时 Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2); 使用静态导入时 import static java.lang.Math.*; sqrt(pow(x, 2) + pow(y, 2); ,格式化输出,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, b); System.out.printf(“%3.2f %1.1f%n“, c, d); System.out.printf(“%1.3e %1.3e%n“, c, d*100); ,格式化输出,输出结果为: 150000 10 249f0 a 5.01 3.1 5.010e+00 3.140e+02,格式化输入,Java 5.0之前版本中的输入: String input = JOptionPane.showInputDialog(prompt); int n = Integer.parseInt(input); double x = Double.parseDouble(input); s = input; 在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();,思考练习题,请问Java 5中的新语言特性有哪些? 请先阅读下面一段使用范型的示例代码并编译运行。然后思考在此例中运用范型与不运用范型的代码不同之处。 class Example private T t; Example(T o) this.t = o; T getObj() return t; void ShowObject() System.out.println(“对象的类型是:“ + t.getClass().getName(); ,思考练习题,public class GenericsExample /* * param args */ public static void main(String args) / TODO Auto-generated method stub Example exampleInt=new Example1(100); exampleInt.ShowObject(); System.out.println(“对象是:“ + exampleInt.getObj(); Example exampleStr=new Example1(“Hello World!“); exampleStr.ShowObject(); System.out.println(“对象是:“ + exampleStr.getObj(); ,思考练习题,下面这段代码运用了Java 5中的哪些新语言特性? import java.util.*; public class AutoBoxingTest public static void main(String args) List L= new ArrayList(); for(int i=0;i10;+i) L.add(i); for(int elem:L) System.out.println(elem); ,思考练习题,请分析并编译运行下面示例代码。 import java.util.*; public class EnumTest public static void main(String args) System.out.println( “Please enter the mode:“); Scanner in = new Scanner(System.in); String modeName = in.nextLine().toUpperCase(); Mode m = Enum.valueOf(Mode.class,modeName); System.out.println(getModeName(m); private static String getModeName(Mode m) return m.toString(); ,

    注意事项

    本文(第2章Java5语言新特性.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开