JavaSE: Java 5 新特性


Java5新特性

  • 1、Java 语言
    • 1.1 Generics
    • 1.2 foreach  
    • 1.3 自动拆箱装箱
    • 1.4 enum
    • 1.5 可变参数 varargs
    • 1.6 static import
    • 1.7 annotations
  • 2、java lang package
    • 2.1 新增 ProcessBuilder类
    • 2.2 java.lang.Thread 增强
    • 2.3 instrument 包( 支持字节码操作)
  • 3、java.util package
    • 3.1 Formatter
    • 3.2 新增 Scanner类
    • 3.3 集合增强

1、Java 语言增强

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

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...

转载于:https://www.cnblogs.com/f1194361820/p/8250183.html

你可能感兴趣的:(JavaSE: Java 5 新特性)