---------------------- 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天 个人观看视频总结文档
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马程序员-java32期培训视频(基础+就业)黑马程序员-java32期培训视频(基础+就业)
Qt是一个跨平台的C++图形用户界面应用程序框架,由挪威的奇趣科技开发,最早于1991年发布。它的主要优点是能够开发出具有良好用户体验的图形界面,并且支持多种平台,包括Windows、Linux、Mac OS X以及嵌入式系统等...
本文将主要围绕“黑马程序员------类加载器学习注意点”展开,探讨一些关键知识点。 首先,我们需要理解类加载器的基本工作原理。在Java中,类加载过程包括加载(Loading)、验证(Verification)、准备...
黑马程序员--毕向东全套Java视屏,讲解的相当全面,各位如果需要,尽快下载哦! 另外如果视频链接存在打不开的问题,请留言,必定及时更新链接。
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
本教程将聚焦于Java中的多线程技术,以“黑马程序员-java多线程技术01”为学习起点,探讨如何在Java中实现并管理线程。 首先,我们来理解什么是线程。线程是操作系统分配CPU时间的基本单元,一个进程中可以有多个...
在IT行业中,注解(Annotation)是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,为编译器、解释器或者其他的工具提供额外的信息。这些信息可以用于代码的验证、编译时处理、运行时反射等操作。在...
在《黑马程序员 - Java基础教学 - 05 - 面向对象(1)》文档中,详细讲解了面向对象的基本概念及其在Java中的应用。 ### 面向对象与面向过程 面向对象和面向过程都是解决问题的思维模式,但面向对象更注重将功能和...
黑马程序员-Python-Django实现从0开发一个博客系统
Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。
标题“黑马程序员------hash改变造成的内存泄露”提示我们,这个问题与哈希值的变化有关,这可能会导致程序无法正确地释放不再使用的内存,从而影响系统性能。下面我们将深入探讨这个话题。 哈希(Hash)通常指的是...
JavaBean操作类的学习是Java程序员必备的技能之一,它涉及属性设置、获取、事件处理等基本概念。以下是对JavaBean及其操作的详细解释: 1. **JavaBean规范**: - **命名规则**:通常,JavaBean的类名应该以"Bean...
Java基础教学 - 数组、进制转换、二维数组 在Java基础教学中,数组是一个非常重要的概念。数组是多个相同类型的变量组成的集合,每个变量被称为一个元素,数组中的每个元素都有自己的下标或索引。下面将详细讲解...
总结,"黑马程序员-tomcat集群部署文档资料"涵盖的范围广泛,从基础的集群概念和原理,到具体的Tomcat集群配置和优化,再到高级的源码分析,对于希望提升服务器管理和运维能力的IT从业者来说是一份宝贵的参考资料。...
### 黑马程序员Java基础教学知识点详解 #### 一、变量的作用域与生命周期 变量的作用域定义了变量的可见性和生存周期。在Java中,变量根据其声明位置的不同,具有不同的作用域。例如,在给定的示例代码中: ```...