文档章节

java9新特性学习

大头鬼_yc
 大头鬼_yc
发布于 04/10 15:02
字数 1576
阅读 1
收藏 0

1、Java9新特性之---目录结构

  包含jdk8及以前的jdk版本,所有目录结构以及目录含义如图:

  jdk9之后,目录结构发生变化如图:

   

   这个新特性只要了解下就可以了,这个目录结构是方便为了接下来新特性做保证

2、Java9新特性之---JShell工具

     怎么理解,怎么用呢?这个只是针对于java9来说,相当于cmd工具,你可以和cmd一样,直接写方法等等,不过我认为只是适用于初学者做一些最简单的运算和写一些方法:

  在cmd中打开这个工具:

进入工具后可以做一些简单的java操作

  。。。。等等,我认为只适用于初学者学习java不用其他编辑工具就可以学习java

3、Java9新特性之---模块化

  一个大型的项目,比如淘宝商城等,都会包含多个模块,比如订单模块,前台模块,后台管理模块,广告位模块,会员模块.....等等,各个模块之间会相互调用,不过这种情况下会很少,只针对特殊情况,如果一个项目有30个模块系统进行开发,但是只要某个单独模块运行时,都会带动所有的模块,这样对于jvm来说在内存和性能上会很低,所以,java9提供了这一个特性,某一个模块运行的时候,jvm只会启动和它有依赖的模块,并不会加载所有的模块到内存中,这样性能大大的提高了。写法上如下:

  一个项目中的两个模块,模块之间通过module-info.java来关联,在IDEA编辑器右键创建package-info.java

  在这个两个模块java9Demo和java9Test中,java9demo编写一个实体类Person,在java9Test调用这样一个过程

  这个是java9Demo 将 java9Test 模块需要的文件导出 exports  把它所在的包导出

module java9Demo{
      exports com.mdxl.layer_cj.entity;
}

然后在java9Test模块中创建一个package-info.java,引入java9Demo模块导出包名

module java9Test{ 
      requires java9Demo; 
}

这样就可以直接在java9Test中引入Person实体类了,这只是一个简单的例子。exports 控制着那些包可以被模块访问,所以不被导出的包不能被其他模块访问

4、Java9新特性之---多版本兼容Jar包

  怎么理解呢?

 好多公司用的jdk大部分还是老版本,jdk6,7 都有,他们都不敢升级主要是因为兼容的问题,但是java9做到了这一点,就是不管公司的项目是用的java6,7,8甚至5,他都可以兼容不出错,打个比方,你之前用的是iphone5,现在出现了iPhone6,iphone7,iphon8和iphone9,但是你不敢买9,因为你自己已经适应了iphone5的所有手机的运行流程,6,7,8每个手机的运行流程不一样,但是这个9很强大,它能够识别你现在所用的版本iphone是5,所以当你升级到iphone9的时候,你的这个手机运行流程还是iphone5的流程,只是在原有基础上拥有了更多的iphone9的所有优势。

5、Java9新特性之---接口Interface的升级

  public interface FilterProcess<T> { 

      //java 7 及以前 特性  全局常量 和抽象方法 
      public static final String a ="22"; 
      boolean process(T t); 

      //java 8 特性 静态方法和默认方法 
      default void love(){ 
          System.out.println("java8 特性默认方法"); 
      } 
      static void haha(){ 
          System.out.println("java8 特性静态方法"); 
      } 

      //java 8 特性 支持私有方法 
      private void java9(){} 
  } 

6、Java9新特性之---钻石操作符的升级

  //java7及以前 
  Map<String,String> map7 = new HashMap<String,String>(); 
  //java8 <>没有了数据类型 
  Map<String,String> map8 = new HashMap<>(); 
  //java9 添加了匿名内部类的功能 +{} 
  Map<String,String> map9 = new HashMap<>(){};

7、Java9新特性之---异常处理try升级

  首先看下jdk7,8,9 的try catch的比较

  Java7处理方式:

public interface FilterProcess<T> { 
 
    //java 7 及以前 特性  全局常量 和抽象方法 
    public static final String a ="22"; 
    boolean process(T t); 
 
    //java 8 特性 静态方法和默认方法 
    default void love(){ 
        System.out.println("java8 特性默认方法"); 
    } 
    static void haha(){ 
        System.out.println("java8 特性静态方法"); 
    } 
 
    //java 8 特性 支持私有方法 
    private void java9(){} 
} 

  java8 的处理方式:

@Test 
public void test7(){ 
    try(InputStreamReader reader =new InputStreamReader(System.in)){ 
        reader.read(); 
    }catch (IOException e){ 
        e.printStackTrace(); 
    } 
} 

  java9的处理方式:

//java9及 每一个流打开的时候都要关闭,但是在try的括号中来进行关闭,在 
//java8的基础上进一步升级 直接在try括号中直接写入 变量就好,如果有多个流,就用分号隔开 
//try(reader;writer){} 
@Test 
public void test7(){ 
    InputStreamReader reader =new InputStreamReader(System.in); 
    try(reader){ 
        reader.read(); 
    }catch (IOException e){ 
        e.printStackTrace(); 
    } 
} 

这下子应该一幕了然了吧

8、Java9新特性之---特殊标识符增加限制

  java8 之前 String _ ="hello";  这样的标识符可以用,java9就用不到。

9、Java9新特性之---String底层存储结构更换

  java8之前 String的底层结构类型都是 char[] ,但是java9 就替换成 byte[] 这样来讲,更节省了空间和提高了性能

  之所以替换是因为 之前一直是一个汉字一个两个字节,但是字母是一个字节,而一个char代表两个字节,由之前java8的utf-16 装换成了 utf-8/utf-16/latin三种存储方式

 

同理,StringBuilder StringBuffer也更换了底层数据结构********

10、Java9新特性之---Stream API 新方法的添加

  在原有Stream API 新添加了4个方法,takeWhile dropWhile ofNullable iterate(新重载方法)

  首先解释 takeWhile 当达到一定条件就结束:输出结果为45 43,如图

  而 dropWhile 则和takeWhile 相反

  ofNullable, 在java8中 Stream中的元素不能完全为null,否则空指针异常,而在java9的升级中,允许创建null

  iterate 不加条件无线循环

11、Java9新特性之---引进HttpClient

  以往我们都是通过maven添加httpclient ,java9直接引入即可

本文转载自:http://news.51cto.com/art/201802/566537.htm#topx

上一篇: java9之模块化
下一篇: LINUX定时任务
大头鬼_yc

大头鬼_yc

粉丝 5
博文 70
码字总数 18031
作品 0
昌平
程序员
私信 提问
程序员必读Java9新特性示例(上)

明天又要上班了,又想到昨天看的最新一期的《极限挑战》。感慨时光还是转瞬即逝的。依稀记得刚入行的时候,JDK的版本还停留在Java 6。转眼现在已经到Java9了。既然是自己的职业,想必大家都有...

cnJason
2017/11/08
0
0
Java9新特性系列(总结)

Java9新特性系列 Java9新特性系列(序) Java9新特性系列(JDK与JRE) Java9新特性系列(模块化系统:Jigsaw->Modularity) Java9新特性系列(深入理解模块化) Java9新特性系列(module&ma...

码上论剑
2018/03/05
0
0
Java9 正式发布前的尝鲜之下载与配置环境变量

前言 本文发布之时,java9还未正式发布,不过许多新特性已经暴露出来,并且提供了Early-Access Builds版本,包含了目前为止完整的各项功能,由于近期项目涉及到了java repl ,而java9正好提供...

nougats
2017/07/27
0
0
JAVA9模块化详解(一)——模块化的定义

JAVA9模块化详解(一)——模块化的定义 前言 java9已经出来有一段时间了,今天向大家介绍一下java9的一个重要特性——模块化。模块化系统的主要目的如下: 更可靠的配置,通过制定明确的类的...

小忽悠
2018/06/21
0
0
zrlog 1.10 发布,Java 构建的简约且好用的开源博客程序

ZrLog是使用Java开发的博客/CMS程序,具有简约,易用,组件化,内存占用低等特点。自带Markdown编辑器,让更多的精力放在写作上,而不是花费大量时间在学习程序的使用上。 v1.5以后版本可通过...

hibegin
2018/05/08
867
4

没有更多内容

加载失败,请刷新页面

加载更多

【0911】linux软件包安装和卸载

【0911】linux软件包安装和卸载 一、安装软件包的三种方法 1、rpm工具:与win中的exe安装包类似,红帽子公司包管理系统 2、yum工具:属于一种用python开发的工具,支持自动的安装依赖的包 3、...

飞翔的竹蜻蜓
29分钟前
3
0
【外行学IT】手机网页自适应之rem和viewport

在写手机网页时,对于像素的问题会非常困惑,初学者很多时候会因为那么一个小点的问题解决不了,或者无法理解透彻就放弃了学习。 我在学习写手机网页时也困惑了许久,出现过下面的问题: 图片...

前端老手
40分钟前
5
0
三、Java设计模式之单一职责原则

定义:不要存在多于一个导致类变更的原因。 一个类、接口、方法只负责一项职责 优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险

东风破2019
48分钟前
4
0
搭建高可用MongoDB集群(分片)

搭建高可用MongoDB集群(分片) KaliArch关注1人评论28269人阅读2017-12-04 21:57:41 MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:https:/...

linjin200
今天
6
0
Pandas DataFrame创建方法大全

Pandas是Python的数据分析利器,DataFrame是Pandas进行数据分析的基本结构,可以把DataFrame视为一个二维数据表,每一行都表示一个数据记录。本文将介绍创建Pandas DataFrame的6种方法。 创建...

汇智网教程
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部