---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------
目前最新版本的jdk是jdk1.7,但是作为一个划时代的更新,jdk1.5的使用领域还是非常广泛的,其新特性如枚举、泛型、注解等都是非常强大的功能,那么就细数一下jdk1.5的新特性吧
1、静态导入
import static java.lang.Math.max;
静态导入可以导入类中的静态方法,上面一行语句中就是导入了Math类中的max方法,然后在调用的时候就不用通过Math.max()来调用了,当然,当内存中出现了两个max方法时,还是需要加入类名来调用,就好像内存中有两个一样名字的类时要加包名来访问。
2、可变参数
在jdk1.5以前,我们只能重载方法来完成一系列目的一样,只是参数个数不一样的操作,现在我们可以用可变参数来完成这一目的:
可变参数格式 方法名 (参数1,参数2,参数类型... 参数名字),注意可变参数只能放在参数列表的最后一个位置
package test; public class ChangablePrame { public static void main(String[] args) { System.out.println(doSomething(YunSuan.MULTY, 2, 3, 4)); } public static int doSomething(YunSuan yunsuan, int... is ){ int sum = 0; switch(yunsuan){ case ADD: for(int i=0; i<is.length; i++){ sum = sum + is[i]; } return sum; case MULTY: sum = 1; for(int i=0; i<is.length; i++){ sum = sum * is[i]; } return sum; } return 0; } } enum YunSuan{ ADD,DIVIDE,MULTY,CUT }
可变参数挺实用的
3、增强for循环
for(数据类型 变量名:被遍历集合(Collection)或者数组){
xxx语句;
}
增强for语句中只能对集合中的元素进行取出操作,不能增删改;
Iterator迭代器除了遍历,还能删除集合中的元素
ListIterator更厉害了,增删改查都能进行。
4、基本类型自动装箱
Integer iObj = 3;
System.out.println(iObj + 12);
Integer i1 = 137(-128--127范围时,为true);
Integer i2 = 137(-128--127范围时,为true);
System.out.println(i1 == i2); //false,但是括号中时却返回ture,原因是Integer采用的是享元模式
Integer i3 = Integer.valueOf(213);
Integer i4 = Integer.valueOf(213);
System.out.println(i3==i4);//同上,另一种包装形式
需要注意的是 对于Integer类型,只有1个字节内的整数范围(-128~127)在内存中只会装箱一次,而在这个返回之外的整数每次装箱都会产生一个新的对象。
5、泛型
这个厉害去了,需要注意的是泛型是给编译器用的,也就是在编译阶段泛型有用,编译好的字节码是没有泛型的。如果要通过反射获得泛型信息,好像只有通过Method类的一个方法才能做到。
泛型的知识点好多,总的说来知道怎么用,看的东别人的泛型就可以了
泛型可以再方法,参数列表,类,接口中使用
泛型中有一个<?>通配符,然后还有泛型限定<? extends 父类> 表示接受父类以及父类所有子类
<? super 子类> 表示接受子类以及所有子类的父类。
在http://www.2cto.com/kf/201211/169210.html 这里说的比较详细。偷过来了,不懂的时候就仔细看看。
6、枚举
枚举也是一种事物,把它看做类的话应该就是构造方法被私有化的类了,所以枚举是可以用来做单例设计,说到枚举,java中的switch()语句所接收的类型只可以是int或者枚举类型。
枚举共有的方法:values(),返回枚举中所有元素的数组。
valueOf(string) 通过字符串来获得枚举中相应的元素。
枚举的使用很简单,在构造枚举时把它当做一个类来对待就行了。需要注意的是,枚举中的所有元素列表必须放在枚举代码块的最前面。
7、注解
注解可以看做是依附在目标身上的一个类,类中就会有属性,这个属性的定义形式和普通类不一样,通过代码来看吧
package javaInhance; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(value = RetentionPolicy.RUNTIME)//定义注解的生命周期 @Target(value = { ElementType.TYPE })//定义该注解能依附的目标类型 public @interface ItcastAnnotation { String clolor() default "red"; String value(); AnnotationUFO annotationAttr() default @AnnotationUFO("lwm"); Class getC(); RetentionPolicy runTime() default RetentionPolicy.SOURCE; int i() default 1; }
获得类上的注解
package javaInhance; @ItcastAnnotation(getC = String.class, value = "haha", annotationAttr=@AnnotationUFO("zxj"))//添加注解 public class AnnotationTest { public static void main(String[] args) { if (AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)) {//判断指定注解是否存在 ItcastAnnotation annotation = (ItcastAnnotation) AnnotationTest.class .getAnnotation(ItcastAnnotation.class); //获得指定注解 System.out.println(annotation.clolor()); System.out.println(annotation.value()); System.out.println(annotation.getC()); System.out.println(annotation.runTime()); System.out.println(annotation.i()); System.out.println(annotation.annotationAttr().value()); } }
注解或许可以做更多复杂的事情,有意义的事情,希望以后能接触到,毕竟现在就算知道注解是怎么用的,也不知道什么时候该用它。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关推荐
黑马程序员 - 毕向东 - Java基础教学 - 第02天 个人观看视频总结文档
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda...Java基础小节练习题答案
黑马程序员 - 毕向东 - Java基础教学 - 第01天 个人观看视频总结文档
黑马程序员-java32期培训视频(基础+就业)黑马程序员-java32期培训视频(基础+就业)
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc
黑马QT讲义,适合QT入门,使用,教程很比较基础,新手可以看看,另外视频链接在哔哩哔哩中。
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马程序员 - Java基础教学 - 04 - 数组、进制转换、二维数组
黑马程序员--毕向东全套Java视屏,讲解的相当全面,各位如果需要,尽快下载哦! 另外如果视频链接存在打不开的问题,请留言,必定及时更新链接。
黑马程序员 - Java基础教学 - 03 - 变量的作用域、for循环、break、continue、内存结构
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
黑马程序员 - Java基础教学 - 06 - 面向对象(2) - 关于静态static的那些事.doc
黑马程序员-梅兰商城项目实战,包含图片素材和编写源码。
C++黑马程序员-演讲比赛流程管理系统记录
NULL 博文链接:https://huangminwen.iteye.com/blog/1157983
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490901
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490903
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490899