Java5语言新特性.ppt

上传人:max****ui 文档编号:8619082 上传时间:2020-03-30 格式:PPT 页数:38 大小:487.81KB
返回 下载 相关 举报
Java5语言新特性.ppt_第1页
第1页 / 共38页
Java5语言新特性.ppt_第2页
第2页 / 共38页
Java5语言新特性.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
第2章Java5语言新特性 学时数 学时 学习要点 1 了解java5 0新语言特性包括哪几个方面 2 了解java5 0中增强的for循环 3 了解java5 0的注释新特性 4 掌握枚举 5 掌握范型 6 掌握类型自动转换 7 了解静态导入8 了解格式化输入与输出 第2章Java5语言新特性 1 1新语言特性总览1 2增强的for循环1 3注释1 4枚举1 5范型1 6类型自动转换1 7静态导入1 8格式化输入与输出 1 1新语言特性总览 1 1 1Java5 0的诞生1 1 2Java5 0的新语言特性 1 2增强的for循环 1 2 1Init表达式1 2 2局限性 1 3注释 1 3 1注释的作用1 3 2用户自定义标签1 3 3获取注释信息 1 4枚举 1 4 1enum类型特征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而是Java5 0的原因 从Java诞生至今已有9年时间 而从有J2SE算起也有5个年头了 在这样的背境下 将该版本号从1 5改为5 0可以更好的反映出新版的Java技术的成熟度 稳定性 可伸缩性 安全性 Java5 0的目标 通过增强Java平台的力量 允许开发者更容易地使用 Java编程语言的这些改进将吸引大量各种Java开发者 Java5 0的新特性 范型 添加编译时类型来检查您的代码 使用范型来代替所有的类型转换 加强的For循环 在Collection中使用循环来代替迭代器 自动打包 无须手工打包和拆包 boxandunbox 原始类型 枚举 Java开发者可以使用枚举类 变参 方法调用之中把变参当作一系列独立的参数 静态导入 静态倒入 StaticImport 特征允许您导入所有静态类的成员到您的代码中 并且可以通过简短和非限制的名称来引用这些常量和方法 评注 提供了一个代码运行时可访问的信息 国际化 Unicode4 0的支持 质量 稳定性 强壮性和兼容性 Init表达式 在循环中 初始化表达式只计算一次未增强的For intsum 0 Integer numbers computeNumbers for inti 0 i numbers length i sum numbers i 增强后的For intsum 0 for intnumber computeNumbers sum number 局限性 不可以在迭代期间访问迭代器或下标 例子1 for inti 0 iit n iterator it hasNext if it next 0 it remove 注释的作用 可以被用来生成文档 检查代码间依赖关系 帮助编译器作语法检查 文档生成工具 Xdoclet javadoc代码检查举例 publicclassParent publicvoidfoo System out println OriginalImplementationoffoo publicclassChildextendsParent Overridepublicvoidfoo System out println OverideImplementationoffoo 注释的作用 子类想重载foo 方法 不过用户可能一时疏忽把它写成了fob 错误提示 Child java 3 methoddoesnotoverrideamethodfromitssuperclass Override 1error 用户自定义标签 用户自定义标签 packagetiger annotation 用户自定义标签MyTag public interfaceMyTag 定义了一个tag之后 用户就可以在任何java文件中使用这个tag了 importtiger annotation MyTag publicclassTagTest MyTagpublicvoidtestTag 注释类型还可以有成员变量 packagetiger annotation 用户自定义标签 带有成员变量的MyTag public interfaceMyTag Stringname intage 用户自定义标签 用户可以这么使用这个标签 MyTag name MyTag age 1 publicvoidtestTag 获取注释信息 importjava lang annotation Annotation importtiger annotation MyTag publicclassTagTest MyTag name MyTag age 1 publicvoidtest publicstaticvoidmain String args TagTesttt newTagTest try Annotation annotation tt getClass getMethod test getAnnotations for Annotationtag annotation System out println Tagis tag System out println tag name MyTag tag name System out println tag age MyTag tag age catch NoSuchMethodExceptione e printStackTrace 获取注释信息 执行TagTest可以得到输出如下 Tagis tiger annotation MyTag name MyTag age 1 tag name MyTagtag age 1 enum类型特征 它不能有public的构造函数所有枚举值都是public static和final的 默认实现了java lang Comparable接口 enum重载了toString方法valueOf方法 这个方法和toString方法是相对应的 values方法oridinal方法 使用enum类型 遍历所有枚举值 for Colorc Color values System out println findvalue c 使用enum类型 在enum中定义方法和变量 publicenumColor Red Green Blue 定义一个变量表示枚举值的数目 privatestaticintnumber Color values length 随机返回一个枚举值 returnarandomenumvalue publicstaticColorgetRandomColor longrandom System currentTimeMillis number switch int random case0 returnColor Red case1 returnColor Green case2 returnColor Blue default returnColor Red 使用enum类型 重载 Override toString方法 publicStringtoString switch this caseRed return Color Red caseGreen return Color Green caseBlue return Color Blue default return UnknowColor 类型安全 在Java5 0之前的版本中 Java程序并不是类型安全的 ListstringList newArrayList stringList add abcde Stringstr String stringList get 0 仍然可以把一个整型对象添加到这个队列中 例如 stringList add newInteger 5 在这种情况下 从字符列表中获取对象时 强制类型转换就会导致运行时异常 范型是Java迈向类型安全的一个重要步骤 使用范型可以构造出类型安全的代码 范型定义 所谓范型是指类型参数化 parameterizedtypes Java是一种强类型的语言 在J2SE1 4以及以前的版本中 我们在定义一个Java类的接口或者方法的时候 必须指定变量的类型 在声明范型类 接口或者函数时 定义变量的时候不指定某些变量的具体类型 而是用一个类型参数代替 在使用这个类 接口或者方法的时候 这个类型参数由一个具体类型所代替 声明范型类和类型参数 publicclassGenList privateT elements privateintsize 0 privateintlength 0 publicGenList intsize elements T newObject size this size size publicTget inti if i length returnelements i returnnull publicvoidadd Te if length size 1 elements length e 声明范型接口和多个类型参数 声明范型接口 publicinterfaceGenInterface voidfunc Tt 声明多个类型参数publicclassGenMap 类型自动转换 自动装包 基本类型自动转为包装类 例如 int Integer 自动拆包 包装类自动转为基本类型 例如 Integer int inta 3 Collectionc newArrayList c add a 自动转换成Integer Integerb newInteger 2 c add b 2 这里Integer先自动转换为int进行加法运算 然后int再次转换为Integer 静态导入 没有静态导入时Math sqrt Math pow x 2 Math pow y 2 使用静态导入时importstaticjava lang Math sqrt pow x 2 pow y 2 格式化输出 publicclassTestFormat publicstaticvoidmain String args inta 150000 b 10 floatc 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 格式化输出 输出结果为 15000010249f0a5 013 15 010e 003 140e 02 格式化输入 Java5 0之前版本中的输入 Stringinput JOptionPane showInputDialog prompt intn Integer parseInt input doublex Double parseDouble input s input 在Java5 0中的输入 Scannerin newScanner System in System out print prompt intn in nextInt doublex in nextDouble Strings in nextLine 思考练习题 请问Java5中的新语言特性有哪些 请先阅读下面一段使用范型的示例代码并编译运行 然后思考在此例中运用范型与不运用范型的代码不同之处 classExample privateTt Example To this t o TgetObj returnt voidShowObject System out println 对象的类型是 t getClass getName 思考练习题 publicclassGenericsExample paramargs publicstaticvoidmain String args TODOAuto generatedmethodstubExampleexampleInt newExample1 100 exampleInt ShowObject System out println 对象是 exampleInt getObj ExampleexampleStr newExample1 HelloWorld exampleStr ShowObject System out println 对象是 exampleStr getObj 思考练习题 下面这段代码运用了Java5中的哪些新语言特性 importjava util publicclassAutoBoxingTest publicstaticvoidmain String args ListL newArrayList for inti 0 i 10 i L add i for intelem L System out println elem 思考练习题 请分析并编译运行下面示例代码 importjava util publicclassEnumTest publicstaticvoidmain String args System out println Pleaseenterthemode Scannerin newScanner System in StringmodeName in nextLine toUpperCase Modem Enum valueOf Mode class modeName System out println getModeName m privatestaticStringgetModeName Modem returnm toString
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!