Java5

Java 5添加了8个语言特性:泛型,类型安全枚举,注解,自动装箱和拆箱,增强的循环,静态导入,可变参数,协变返回类型

1、泛型 Generics:

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

A、类型安全

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

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

  抛弃List、Map,使用List<T>、Map<K,V>

C、不需要类型转换

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

D、类型通配符“?”

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

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<? Extends Number>、Iterator<? Extends Number>限制一下它。

2、枚举类型 Enumeration:

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

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可以用在哪些程序单元上
  b, Retention
    指出Java编译期如何对待annotation
    annotation可以被编译期丢掉,或者保留在编译过的class文件中
    在annotation被保留时,它也指定是否会在JVM加载class时读取该annotation
  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

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中可以使用字串了

2. 即泛型实例化类型自动推断

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

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

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

File System.getJavaIoTempDir() // IO临时文件夹

File System.getJavaHomeDir() // JRE的安装目录

File System.getUserHomeDir() // 当前用户目录

File System.getUserDir() // 启动java进程时所在的目录

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

Boolean Booleans.negate(Boolean booleanObj)True => False , False => True, Null => Nullboolean 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};

转载于:https://www.cnblogs.com/549294286/p/3721771.html

Java5、Java6、Java7的新特性相关推荐

  1. javabean,BeanUtils以及 java7的新特性 .

    javabean的属性 是根据 set和get方法来 操作的,而不是根据  成员变量 来操作的.注意区别   属性 和成员变量  成员变量是私有的 看不见. 一. javabean 是什么? Bean ...

  2. Java7 一些新特性及脚本语言支持API--笔记

    1.switch条件语句中可以加入字符串了,实现方法是利用了字符串的hashcode()值作业真正的值 2.增加了一种可以在字面量中使用的进制,二进制,通过在数字前面加"0b"或& ...

  3. java7 nio2 新特性_JDK7新特性,你知道几个?

    前言 之前学习的过程中,每天都是老师说这个是JDK7以后可以使用,那个是JDK8以后可以使用,每天都记的很混乱,今天专门忙里偷闲,归拢整理下JDK7的新特性,对于JDK的新特性,后期会进行整理更新,希 ...

  4. Java6 十大新特性

    Web Services. 优先支持编写 XML web service 客户端程序.你可以用过简单的annotaion将你的API发布成.NET交互的web services. Mustang 添加 ...

  5. Java5~11新特性

    Java5~11版本新特性 Java5 Java6 Java7 Java8 Java9 Java10 Java11 Java5 Java5开发代号为Tiger(老虎),于2004-09-30发行 特性 ...

  6. Java7新特性一览

    转自:点击这里 官方:点击这里 Java7于2011年7月发布,相较于java6具备如下新特性: --------------------------------------------------- ...

  7. java7 新特性 总结版

    Java7语法新特性: 前言,这是大部分的特性,但还有一些没有写进去,比如多核 并行计算的支持加强 fork join 框架:这方面并没有真正写过和了解.也就不写进来了. 1. switch中增加对S ...

  8. Java10的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 序 本文主要讲述一下Java10的 ...

  9. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

最新文章

  1. 2.爬虫的Python基础
  2. flask找不到css_Flask干货:访问数据库——Flask-SQLAlchemy初始化
  3. Linux系统编程(一)
  4. elasticsearch mongodb mysql_Elasticsearch 与 Mongodb 数据同步问题
  5. 【记录】利用jar包制作docker镜像
  6. python中if语句使用_如何在python中使用'空if语句'?
  7. 计算机网络学习笔记(26. Web缓存技术)
  8. 从开发者到讲师的心路历程与必知必会 | 原力计划
  9. jsp页面之间传中文参数显示乱码问题的解决
  10. laravel知识点: 了解应用环境
  11. I/O error on GET request for http://userservice/user/point/update: userservice; nested exception
  12. python牛顿法寻找极值_使用Python实现牛顿法求极值
  13. 华为机试--火车进站
  14. android多个微信支付,想用快速开关一键收付款?Android 版微信没适配但你可以自己做...
  15. 快速排序的那些事儿(Kotlin)
  16. 机械设计自动化行业现在吃香吗?有前途吗?
  17. 移动端网页知识点总结
  18. 调研:“淘宝村”、“网店村”是如何发家的?
  19. 压力传感器中英文术语对照表
  20. 对于“int a[] = new int[3];”,下列哪个叙述是错误的?

热门文章

  1. Lock-Free 编程
  2. WebForm页面间传值方法(转)
  3. shiro 解决 跨域(仅端口不同) 登陆 问题
  4. centos7下swoole1.9的安装与HttpServer的使用
  5. Retrofit+Rxjava+OkHttp
  6. JSON在Android网络交互中的使用方法
  7. android和java中常见 Exception
  8. SpringMVC+DWR + Hibernate + 菜单树
  9. pika集群水平扩展——让性能容量不再受限
  10. 利用Kubernetes名称空间来管理内存和CPU资源(三)