zoukankan      html  css  js  c++  java
  • java7新特性简单介绍

    switch对字符串的支持

    public class Client {
      public static void main(String[] args) {
        String name = "lisi";
        switch (name) {
          case "lisi":
            System.out.println(name);
            break;
          case "wangwu":
            System.out.println(name);
            break;
          case "zhangsan":
            System.out.println(name);
            break;
        }
      }
    }
    

    其实java编译器会帮我们转换成字符串的hashcode()

    数字字面量改进

    public class Client {
      public static void main(String[] args) {
    //二进制支持
        int num1 = 0B1001;
        System.out.println(num1);
    //支持加_
        num1 = 1_000_000;
        System.out.println(num1);
      }
    }
    

    编译器帮我们转成10进制,去掉_

    try-with-resources语句

    在try语句中申请资源,实现资源的自动释放,资源需要实现AutoCloseable接口,文件、数据库连接等都已实现。

    public class Client {
      public static void main(String[] args) {
        try (ByteArrayInputStream bais = new ByteArrayInputStream("hello".getBytes());
             ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
          int len = -1;
          while ((len = bais.read()) != -1) {
            baos.write(len);
          }
          System.out.println(new String(baos.toByteArray()));
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    

    编译器会自动调用资源的close方法。

    增强泛型推断

    public class Client {
      public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
      }
    }
    

    编译期会自动推断HashMap的类型

    NIO2(AIO)的支持

    public class Client {
      public static void main(String[] args) throws IOException {
        AsynchronousFileChannel fileChannel = AsynchronousFileChannel
            .open(Paths.get("D:\Client.java"));
        fileChannel.read(ByteBuffer.allocate(4098), 0, "hello", new CompletionHandler<Integer, String>() {
          @Override
          public void completed(Integer result, String attachment) {
            System.out.println(result);
            System.out.println(attachment);
          }
    
          @Override
          public void failed(Throwable exc, String attachment) {
            System.out.println(exc);
            System.out.println(attachment);
          }
        });
      }
    }
    

    异步文件通道,在文件读取完成执行回调方法

    JSR292与InvokeDynamic

    JSR 292: Supporting Dynamically Typed Languages on the JavaTM Platform,支持在JVM上运行动态类型语言。在字节码层面支持了InvokeDynamic。具体请看这一篇

    一些工具类

    Files(操作文件的工具),Paths(操作文件路径的工具),Objects(操作对象的工具)

    fork/join并行框架

    Java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。

  • 相关阅读:
    CF1260F
    牛客挑战赛34 A~E
    CSP-S2019游记&拆塔记
    6424. 【NOIP2019模拟2019.11.13】我的订书机之恋
    CF1257E/F
    6423. 【NOIP2019模拟11.11】画
    1222/2516. Kup
    Comet OJ
    浅析CSS定位
    css文字颜色渐变的3种实现
  • 原文地址:https://www.cnblogs.com/strongmore/p/13363572.html
Copyright © 2011-2022 走看看