全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Java5、Java6、Java7的新特性

Java5:

1、泛型 Generics:

引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection的基石。

A、类型安全

抛弃List、Map,使用List、Map给它们添加元素或者使用Iterator遍历时,编译期就可以给你检查出类型错误

B、方法参数和返回值加上了Type

抛弃List、Map,使用List、Map

C、不需要类型转换

List list=new ArrayList();
String str=list.get(i);

D、类型通配符“?”

假设一个打印List中元素的方法printList,我们希望任何类型T的List都可以被打印:

代码:

public void printList(List list,PrintStream out)throws IOException{
for(Iterator i=list.iterator();i.hasNext();){
System.out.println(i.next.toString());
}
}

如果通配符?让我们的参数类型过于广泛,我们可以把List、Iterator 修改为

List、Iterator限制一下它。

2、枚举类型 Enumeration:

3、自动装箱拆箱(自动类型包装和解包)autoboxing & unboxing:

  简单的说是类型自动转换。

自动装包:基本类型自动转为包装类(int ——Integer)

自动拆包:包装类自动转为基本类型(Integer——int)

4、可变参数varargs(varargs number of arguments)

参数类型相同时,把重载函数合并到一起了。
如:

public void test(object... objs){
for(Object obj:objs){
System.out.println(obj);
}
}

5、Annotations 它是java中的metadata

A、Tiger中预定义的三种标准annotation

a 、Override

指出某个method覆盖了superclass 的method当你要覆盖的方法名拼写错时编译不通过

b、Deprecated

指出某个method或element类型的使用是被阻止的,子类将不能覆盖该方法

c、SupressWarnings

关闭class、method、field、variable 初始化的编译期警告,比如:List没有使用 Generic,则@SuppressWarnings("unchecked")去掉编译期警告。

B、自定义annotation

public @interface Marked{}

C、meta-annotation

或者说annotation的annotation

四种标准的meta-annotation全部定义在java.lang.annotaion包中:

a, Target

指定所定义的annotation可以用在哪些程序单元上

如果Target没有指定,则表示该annotation可以使用在任意程序单元上

代码

 @Target({ElementType.ANNOTATION_TYPE, 
       ElementType.CONSTRUCTOR, 
       ElementType.FIELD, 
       ElementType.LOCAL_VARIABLE, 
       ElementType.METHOD, 
       ElementType.PACKAGE, 
       ElementType.PARAMETER, 
       ElementType.TYPE}) 
  public @interface TODO {} 

b, Retention

指出Java编译期如何对待annotation

annotation可以被编译期丢掉,或者保留在编译过的class文件中

在annotation被保留时,它也指定是否会在JVM加载class时读取该annotation

代码

 @Retention(RetentionPolicy.SOURCE) // Annotation会被编译期丢弃 
  public @interface TODO1 {} 
  @Retention(RetentionPolicy.CLASS)  // Annotation保留在class文件中,但会被JVM忽略 
  public @interface TODO2 {} 
  @Retention(RetentionPolicy.RUNTIME) // Annotation保留在class文件中且会被JVM读取 
  public @interface TODO3 {} 

c, Documented

指出被定义的annotation被视为所熟悉的程序单元的公开API之一

被@Documented标注的annotation会在javadoc中显示,这在annotation对它标注的元素被客户端使用时有影响时起作用

d, Inherited

该meta-annotation应用于目标为class的annotation类型上,被此annotattion标注的class会自动继承父类的annotation

D, Annotation的反射

我们发现java.lang.Class有许多与Annotation的反射相关的方法,如getAnnotations、isAnnotationpresent

我们可以利用Annotation反射来做许多事情,比如自定义Annotation来做Model对象验证

代码

 @Retention(RetentionPolicy.RUNTIME) 
  @Target({ ElementType.FIELD, ElementType.METHOD }) 
  public @interface RejectEmpty { 
    /** hint title used in error message */ 
    String value() default ""; 
  }    
  @Retention(RetentionPolicy.RUNTIME) 
  @Target( { ElementType.FIELD, ElementType.METHOD }) 
  public @interface AcceptInt { 
    int min() default Integer.MIN_VALUE; 
    int max() default Integer.MAX_VALUE; 
    String hint() default ""; 
  } 

使用@RejectEmpty和@AcceptInt标注我们的Model的field,然后利用反射来做Model验证

6、新的迭代语句(for(int n:numbers))

7、静态导入(import static )

8、新的格式化方法(java.util.Formatter)

formatter.format("Remaining account balance: $%.2f", balance);

9、新的线程模型和并发库Thread Framework

HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList

在大并发量读取时采用java.util.concurrent包里的一些类会让大家满意BlockingQueue、Callable、Executor、Semaphore... 

Java6:

1、引入了一个支持脚本引擎的新框架

2、UI的增强

3、对WebService支持的增强(JAX-WS2.0和JAXB2.0)

4、一系列新的安全相关的增强

5、JDBC4.0

6、Compiler API

7、通用的Annotations支持

 Java7:

1,switch中可以使用字串了

String s = "test"; 
switch (s) { 
case "test" : 
System.out.println("test"); 
case "test1" : 
System.out.println("test1"); 
break ; 
default : 
System.out.println("break"); 
break ; 
}

2.运用List tempList = new ArrayList<>(); 即泛型实例化类型自动推断

3.语法上支持集合,而不一定是数组

final List piDigits = [ 1,2,3,4,5,8 ];

4.新增一些取环境信息的工具方法

File System.getJavaIoTempDir() // IO临时文件夹
File System.getJavaHomeDir() // JRE的安装目录
File System.getUserHomeDir() // 当前用户目录
File System.getUserDir() // 启动java进程时所在的目录5

5.Boolean类型反转,空指针安全,参与位运算

Boolean Booleans.negate(Boolean booleanObj)
True => False , False => True, Null => Null
boolean Booleans.and(boolean[] array)
boolean Booleans.or(boolean[] array)
boolean Booleans.xor(boolean[] array)
boolean Booleans.and(Boolean[] array)
boolean Booleans.or(Boolean[] array)
boolean Booleans.xor(Boolean[] array)

6.两个char间的equals

boolean Character.equalsIgnoreCase(char ch1, char ch2)

7.安全的加减乘除

int Math.safeToInt(long value)
int Math.safeNegate(int value)
long Math.safeSubtract(long value1, int value2)
long Math.safeSubtract(long value1, long value2)
int Math.safeMultiply(int value1, int value2)
long Math.safeMultiply(long value1, int value2)
long Math.safeMultiply(long value1, long value2)
long Math.safeNegate(long value)
int Math.safeAdd(int value1, int value2)
long Math.safeAdd(long value1, int value2)
long Math.safeAdd(long value1, long value2)
int Math.safeSubtract(int value1, int value2)

8.map集合支持并发请求,且可以写成 Map map = {name:"xxx",age:18};

希望本篇文章可以帮到需要的朋友


# 详解Java5、Java6、Java7的新特性  # Java5、6、7新特性  # Java7的新特性  # 在Java8与Java7中HashMap源码实现的对比  # 深入Java7的一些新特性以及对脚本语言支持API的介绍  # Java通过Fork/Join优化并行计算  # Java Fork/Join框架  # Java7之forkjoin简介_动力节点Java学院整理  # 来做  # 会在  # 自定义  # 可以使用  # 返回值  # 加减乘除  # 给你  # 去了  # 让我们  # 你要  # 子类  # 上了  # 不需要  # 替代者  # 它是  # 能在  # 我们可以  # 有许多  # 会让  # 三种 


相关文章: 建站之星如何配置系统实现高效建站?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  北京网站制作的公司有哪些,北京白云观官方网站?  网站制作员失业,怎样查看自己网站的注册者?  宝塔面板创建网站无法访问?如何快速排查修复?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何选择高效稳定的ISP建站解决方案?  深圳网站制作案例,网页的相关名词有哪些?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何用西部建站助手快速创建专业网站?  如何在建站之星绑定自定义域名?  如何通过智能用户系统一键生成高效建站方案?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  如何在万网开始建站?分步指南解析  如何设计高效校园网站?  如何快速辨别茅台真假?关键步骤解析  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  网站制作难吗安全吗,做一个网站需要多久时间?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何通过VPS建站无需域名直接访问?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  公司网站制作价格怎么算,公司办个官网需要多少钱?  大型企业网站制作流程,做网站需要注册公司吗?  如何选择适配移动端的WAP自助建站平台?  如何用VPS主机快速搭建个人网站?  如何快速搭建虚拟主机网站?新手必看指南  设计网站制作公司有哪些,制作网页教程?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  如何快速生成凡客建站的专业级图册?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  魔方云NAT建站如何实现端口转发?  高端云建站费用究竟需要多少预算?  建站主机如何安装配置?新手必看操作指南  如何在宝塔面板中创建新站点?  Python如何创建带属性的XML节点  如何快速完成中国万网建站详细流程?  如何快速查询网站的真实建站时间?  Android自定义控件实现温度旋转按钮效果  如何挑选最适合建站的高性能VPS主机?  如何选择高效可靠的多用户建站源码资源?  微课制作网站有哪些,微课网怎么进?  如何在七牛云存储上搭建网站并设置自定义域名?  建站主机核心功能解析:服务器选择与网站搭建流程指南  定制建站流程步骤详解:一站式方案设计与开发指南  建站之星导航如何优化提升用户体验?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何在阿里云高效完成企业建站全流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。