zoukankan      html  css  js  c++  java
  • JavaSE: Java 5 新特性


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

  • 相关阅读:
    组合与封装
    继承与派生
    面向对象编程
    subprocess、re、logging模块
    json、pickle、collections、openpyxl模块
    python内置模块
    递归函数与模块
    生成式、面向过程、与函数式
    叠加装饰器与迭代器
    闭包函数与装饰器
  • 原文地址:https://www.cnblogs.com/f1194361820/p/8250183.html
Copyright © 2011-2022 走看看