Java5新特性

1、Java 语言增强

1.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>限制一下它。

1.2、foreach 

也就是支持 for (String str : strs){}

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

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

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

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

1.4 enum 

在此之前,想要写enum,通常是写 publict static final 修饰的字段。

在java 5后,可以直接编写enum了

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

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

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

1.6、static import

1.7 Annotations 

支持注解,详情参考 Java Annotation学习

2、java.lang包下面在类在变化

2.1 ProcessBuilder

可以使用ProcessBuilder来创建子进程了

2.2 java.lang.Thread 类增强

1)  线程可以设置priority

2)增加了 Thread.State类

3)提供了新的dump API: The getStackTrace and getAllStackTraces

4)提供了 uncaughtExceptionHandler 机制,可以自定义未被捕获的异常如何去处理了

5)添加了sleep()方法

2.3 Instrumentation 

提供instrumentation, 可以在运行时动态的修改类的字节码,重新定义类。它成了javaagent 和 APM产品的基石。

3、java.util 包

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

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

3.2 Scanner 类

这是个更为强大好用的输入、流操作工具类。

3.3、Collection增强

HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList
在大并发量读取时采用java.util.concurrent包里的一些类会让大家满意BlockingQueue、Callable、Executor、Semaphore...

最新文章

  1. 再谈SQL Server中日志的的作用
  2. 《实时控制软件设计》第一周作业 欧梓峰 U201317662 (更新)
  3. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
  4. C语言打印记事本内搜索字符串所在行信息
  5. 测试必备技能系列1 :通过mysql命令进行脚本数据导入
  6. Ios开发之定位CLLocationManager
  7. 利用开源框架Volley来下载文本和图片。
  8. HDU 3416 Marriage Match IV (求最短路的条数,最大流)
  9. oracle 将科学计数法数据转换为非科学计数法数据
  10. 一个不喜欢读书的Javaer的读书单
  11. LayOutControl
  12. 通过virtualbox最小化安装centos 6.3后无法上网解决办法
  13. float 浮动
  14. dataTable 分页用法总结
  15. Android--UI之TextView
  16. 【thinkphp5.1】 endroid/qrcode 二维码生成
  17. 基于RHEL6.3 安装MySQL踩过的坑
  18. 解决socket交互的10048和10055错误的总结
  19. Cookies读写
  20. tplink-ssh登录

热门文章

  1. 浅谈缓存技术在ASP.NET中的运用
  2. 【ASP.NET MVC系列】浅谈jqGrid 在ASP.NET MVC中增删改查
  3. Jenkins自动化构建配置
  4. C# 反射Reflection Assembly
  5. Ubuntu使用(二)——eclipse配置与问题
  6. [转]USDT与omniCore钱包
  7. C#线程安全类型
  8. Oracle高效分页查询(转)
  9. Javascript继承1:子类的的原型对象----类式继承
  10. 设计模式—装饰模式的C++实现