25_Java7

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnJava7新特性讲师:WillEmail:iwiller@sina.cn—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnJava7JavaDevelopmentKit7(Java7开发者工具包)于2011年7月28日推出。—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnJava7新特性预览Java编程语言特性JDBC4.1JavaI/O国际化Java2D安全性并发Java虚拟机java.lang包XML网络集合RIA/发布Swing—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnJava7Java编程语言特性•二进制数字表达式•使用下划线对数值进行分隔表达•switch语句支持String变量•增强的基本类型包装类•Objects类•泛型实例创建的类型推断•使用可变参数时,提升编译器的警告和错误信息@SafeVarargs•同时捕获多个异常处理•增强throw语句•try-with-resources语句—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn二进制数字表达式整数进制(计算机存储数据的方式)•二进制:01•八进制:0~70开头例:024(不太常用)•十六进制:0~9A~F0x开头例:0x2a4e•十进制:0~9Java7后,二进制表达,可使用0b/0B开头•0B00000000_000000000_00000000_00000110—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn二进制数字表达式如果只是想将某个整数值以8,10,16这三种进位输出到PrintStream(例如System.out)里的话,可以用其中的printf方法加上格式化字串语法FormatterStringSyntax来转换:•System.out.printf(十进制:%d,八进制:%o,十六进制:%x,a,a,a);•注意:没有支持二进制的格式化打印若我们要把某个整数数值转换成不同进制的其他数值,可以利用数值包装类来处理对应类型的转型操作。•inta=10;•Stringbin=Integer.toBinaryString(a);//2进位•Stringoctal=Integer.toOctalString(a);//8进位•Stringhex=Integer.toHexString(a);//16进位—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn二进制数字表达式inta=99;//10进位intbin1=0b1100011;intocatal1=0143;//8进位inthex1=0x63;////16进位Stringbin=Integer.toBinaryString(a);//2进位1100011Stringoctal=Integer.toOctalString(a);//8进位143Stringhex=Integer.toHexString(a);//16进位63System.out.println(二进制=+bin);System.out.println(八进制=+octal);System.out.println(十六进制=+hex);System.out.printf(十进制:%d,八进制:%o,十六进制:%x,a,a,a);—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn使用下划线对数值分隔表达也称为数值的底线格式;简单地说,就是一个数值(整数或浮点数)的表示方式,除了数字、类型符号、正负符号、小数点外,还能加上底线来增加数值的可读性。当我们表示一个二进制的数值。•intbin1=0b000000000000000001100011;//99的二进制,很容易多些或少些一个0或1,为此Java7后开始支持新的书写格式。•intbin3=0b00000000_00000000_01100011;//清晰多了•floatpi=3.14_159_26f;注意:•底线不能加在数值的开头,例如_12_34,这样是错误的。•底线不能加上数值的结尾,例如12_34_,这样是错误的。•底线不能加在2进位和16进位的进位表示字元之后,例如0x_1234,0b_1100,这样是错误的。—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnswitch语句支持String变量复习switch语法支持的格式。每次匹配的是String对象的hashCode()—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn增强的基本数据类型包装类增强的基本类型包装类•publicstaticintcompare(Tx,Ty)(Double,Float1.4就有了)•Boolean比较的时候,truefalse•Character类publicstaticStringgetName(intcodePoint)—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnObjects类publicfinalclassObjectsextendsObjectJava7新添加的类,对象工具类。能在一定程度避免出现空指向异常。publicstaticStringtoString(Objecto);publicstaticStringtoString(Objecto,StringnullDefault);publicstaticTTrequireNonNull(Tobj,Stringmessage);publicstaticTTrequireNonNull(Tobj);publicstaticbooleanequals(Objecta,Objectb);publicstaticbooleandeepEquals(Objecta,Objectb);//等价于Arrays.deepEquals(Object[]a)publicstaticinthashCode(Objecto);publicstaticinthash(Object...values);等价于Arrays.hashCode(Object[])publicstaticTintcompare(Ta,Tb,Comparator?superTc);区别于先前的对象比较—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn泛型实例创建的类型推断傻傻的Java,使我们不能偷懒。Java7后:MapString,Objectmap=newHashMapString,Object();ListMapString,Objectlist=newArrayListMapString,Object();MapString,Objectmap2=newHashMap();ListMapString,Objectlist2=newArrayList();—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn堆污染和@safeVarargsListlist=newArrayListInteger();list.add(20);//添加元素引发unchecked警告ListStringls=list;//引发未经检查的转换警告,编译,运行没有问题System.out.println(ls.get(0));//运行时异常Java把这种错误的原因称为堆污染,当把一个不带泛型的对象赋给一个带泛型的变量时,往往会发生这种堆污染;—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnHeapPollutionjava5加入泛型后一直存在潜在的使用问题----.堆污染。当在可变长参数方法中形参是泛型时往往会发生堆污染。classUtil{publicstaticintsum(ListIntegerls){intsum=0;for(Integeri:ls)sum+=i;returnsum;}}publicclassHeapPollutionDemo{publicstaticvoidmain(String[]args){String[]sArr={1,2,3};Listnumbers=Arrays.asList(sArr);System.out.printf(Sum=%d%n,Util.sum(numbers));}}—高级软件人才实作培训专家成都传智播客教育cd.itcast.cnJava7开始的4个基本Annotation@Override•限定覆写父类方法的@Deprecated•标记已过时的@SuppressWarnings•抑制编译器警告的@SafeVarargs:jdk1.7开始出现•修饰可引发堆污染警告的—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn@SafeVarargs我们不想在编译时看到警告信息的话,在JavaSE7之前,我们可以用一个Annotation-@SuppressWarings(unchecked)来抑制这个警告。在JavaSE7开始多了一个新的Annotation专门设计给varrags用的,就是@SafeVarargs。效果跟@SuppressWarings(unchecked)一样;这样编译器就会认为你已经知道HeapPollution的风险,而忽略对这个方法提出警告。不过,这只是把警告给抑制下来,实际上HeapPollution的问题并没有消失,所以在调用这种的方法時,还是是得特別地注意。—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn例子classUtil{@SafeVarargspublicstaticTintsum(T...vals){intsum=0;for(Tt:vals){sum+=((Number)t).intValue();}returnsum;}}publicclassVarargsDemo{publicstaticvoidmain(String[]args){ListDoublenumbers=newArrayList();args=newString[]{1,2};for(Stringstr:args)numbers.add(Double.parseDouble(str));System.out.printf(Sum=%d%n,Util.sum(numbers));}}—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn异常之同时捕获多个异常Java7之前:try{Integera=Integer.parseInt(1);Integerb=Integer.parseInt(0);Integerc=a/b;System.out.println(c);}catch(rithmeticExceptione){e.printStackTrace();}catch(NumberFormatExceptionAe){e.printStackTrace();}Java7开始:try{Integera=Integer.parseInt(1);Integerb=Integer.parseInt(0);Integerc=a/b;System.out.println(c);}catch(NumberFormatException|ArithmeticExceptione){e.printStackTrace();}—高级软件人才实作培训专家成都传智播客教育cd.itcast.cn异常之同时捕获多个异常try{Integera=Integer.parseInt(1);Integerb=Integer.parseInt(0);Integerc=a/b;System.out.println(c);}catch(NumberForm

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功