文章目录

  • Java 11 安装
  • IDEA 设置
  • 特性1:lambda表达式中允许使用var
  • 特性2: String新增REPEAT 方法,方便拷贝字符串
  • 特性3: 文件读写更方便:readString 和 writeString
  • 特性4: JEP 321-- HTTP Client
  • 特性5:JEP 330-- 直接跑单文件Java代码,无需Javac编译
  • Java 9特性:JShell

Java 11 安装

在使用Java 11新特性前,记得安装Java 11:

  • Windows下 安装Oracle Java 11 并设置环境变量
  • Linux: debian/ubuntu下安装和使用Java 11

IDEA 设置

然后在IDEA的设置里

选择FileProject StructureProject, 修改Level11 - Local variable syntax for lamdba parameters


现在可以使用Java 11的新特性了。
Java 11相比较于Java 8多了许多内容

特性1:lambda表达式中允许使用var

Java 10允许使用var声明变量,声明的变量自动进行类型推断,变量的类型仍然是强类型,推断出来后就不允许修改了:

var i = 10;

Java 8推出了lambda 表达式,Java 11允许在lambda表达式中允许使用var,示例如下:

import java.util.function.Function;public class Main {public static void main(String[] args) {Function<String, String> append = (var string) -> string + " World";String appendedString = append.apply("Hello");System.out.println(appendedString);}
}

上面的代码(var string) -> string + " World";就是lambda表达式,其中的var是变量推断的意思,这并不意味着string是任意类型的变量

上面用到的java.util.function.Function是Java 8的新特性,是可以用于简化lambda表达式。

Function<String, String>的意思是接收类型为String的变量,返回类型为String的变量。

我个人感觉Java 的var很像Kotlin的var,可能这2种语言在相互学习吧。

特性2: String新增REPEAT 方法,方便拷贝字符串

根据网上的说法,这个新的方法是因为Stack Overflow上用户长期要求新增这个方法,于是Java官方就实现了这个方法,地址:Simple way to repeat a String in java - Stack Overflow

特性示例:

var str = "abc";
var repeated = str.repeat(3);
System.out.println(repeated);

特性3: 文件读写更方便:readString 和 writeString

Java 11 对文件的操作提供了更方便的API:readString 和 writeString,现在可以直接读String,而不用向之前的操作那么复杂。

特性示例:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;public class Main {public static void main(String[] args) {try {Path path = null;path = Files.writeString(Files.createTempFile("test", ".txt"), "Java 11 new future of readString and  writeString");System.out.println(path);String s = Files.readString(path);System.out.println(s); //Java 11 new future of readString and  writeString} catch (IOException e) {e.printStackTrace();}}
}

特性4: JEP 321-- HTTP Client

Java 11自带了HTTP Client API,包括:HttpClient,HttpRequest,HttpResponse,WebSocket

示例如下:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;public class Main {public static void main(String[] args) {HttpClient client = HttpClient.newHttpClient();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://openjdk.java.net/")).build();client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println).join();}
}

可以看出使用起来还是非常方便的。
更多内容参见:Introduction to the Java HTTP Client

特性5:JEP 330-- 直接跑单文件Java代码,无需Javac编译

现在Java 11支持直接跑单文件Java代码,无需Javac编译,示例如下:

-> # java HelloWorld.java
Hello World

Java会自动帮你编译,然后运行。
你甚至可以在Java代码的第一行指定Java程序的位置:

#!/usr/bin/java --source 11
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}
}

source指定使用的Java版本
示例如下:

-> # ./test.sh
Hello World

文件名可以与类名不同

Java 9特性:JShell

Java 9开始提供了交互式的REPL工具,支持tab键补全,使用示例如下:

-> # jshell
|  Welcome to JShell -- Version 11.0.2
|  For an introduction type: /help introjshell> System.out.println("Hello World");
Hello World

参考资料:

  • 10 new features or treasures in Java 11 | JDK 11
  • Java 11 New Features Tutorial | Examples Java Code Geeks - 2019

IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍相关推荐

  1. IntelliJ IDEA 2019.3 发布,启动更快,性能更好(新特性解读)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 原文地址:https://www.jetbrains.com/id ...

  2. 【Java学习笔记之二十八】深入了解Java8新特性

    前言: Java 8 已经发布很久了,很多报道表明java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java ...

  3. C++11、C++14、C++17、C++20新特性总结(5万字详解)

    文章目录 C++ 11是什么,C++ 11标准的由来 C++ auto类型推导完全攻略 auto 类型推导的语法和规则 auto 的高级用法 auto 的限制 auto 的应用 使用 auto 定义迭 ...

  4. java8新特性Lambda和Stream以及函数式接口等新特性介绍

    主要内容 1.Lambda 表达式 2.函数式接口 3.方法引用与构造器引用 4.Stream API 5.接口中的默认方法与静态方法 6.新时间日期API 7.其他新特性 Java 8新特性简介 速 ...

  5. java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:

    1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...

  6. 11 款用于优化、分析源代码的Java工具

    本文将提供一些工具,帮助你优化代码以及检查源代码中的潜在问题. 1. PMD from http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以下的潜在问题: ...

  7. java –cp ./:_7位专家– 7条意见:您如何看待新的Java发布周期?

    java –cp ./: 尽管就新功能而言,Java 13并不是一个巨大的版本,但它具有一些令人印象深刻的升级和功能预览. Java 13证明13并不是一个不幸的数字. 就像Java 12一样,它按照 ...

  8. java 8 新功能详解_Java 8和Java 14之间的新功能

    java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...

  9. java 8 新功能详解_Java 8的8个新功能

    java 8 新功能详解 注意:确保还检查了我们的详细教程Java 8 Features – ULTIMATE Guide . Jdk 1.8(又名Java 8)今天发布,这意味着它的通用发布版本已经 ...

  10. java 原子类_小学妹教你并发编程的三大特性:原子性、可见性、有序性

    在并发编程中有三个非常重要的特性:原子性.有序性,.可见性,学妹发现你对它们不是很了解,她很着急,因为理解这三个特性对于能够正确地开发高并发程序有很大的帮助,接下来的面试中也极有可能被问到,小学妹就忍 ...

最新文章

  1. 启动MySQL:net start mysql出现问题+本地Mysql忘记密码的修改方法
  2. Citrix运行检测出错
  3. UEditor在线编辑器使用记录
  4. HDU - 6661 Acesrc and String Theory (后缀数组)
  5. Linux基础命令---su 1
  6. mac hdmi 不能调整音量_Sound Control for mac(音量控制软件) 最新版
  7. (学习日记)裘宗燕:C/C++ 语言中的表达式求值
  8. ZStack的VPC特性详解及实战
  9. 华为数通HCIA笔记——路由基础
  10. 【应用统计学】总体均值的假设检验
  11. wincap的安装与环境配置
  12. 通过Adb无需ROOT卸载手机内置APP
  13. 风变编程,让小白也能轻松学会!
  14. 自然数因式分解最小和
  15. MacBook 安装 Docker 与 docker-compose 套装
  16. 采用GlodWave软件制作个性化铃声
  17. The REBOL Scripting Language 读后感
  18. 华为云微认证《搭建Discuz论坛网站》重点笔记
  19. 73、Spark SQL之开窗函数以及top3销售额统计案例实战
  20. usb扫描枪驱动下载 wince_WinCE系列全站仪USB驱动程序

热门文章

  1. RDKit | 基于RF和SVM的溶解度预测模型比较
  2. Nat. Commun | 用于全基因组药物重定位的系统网络算法
  3. python判断数据类型
  4. Android的几个分析工具
  5. python全局变量赋值报错_python全局变量、回调函数
  6. 零基础入门学习Python(2)
  7. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义函数在三线表中添加p值
  8. R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、使用multcomp包的glht函数检验组均值之间所有成对对比差异、通过contrast参数自定义对比组进行组间两两方差分析
  9. Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars
  10. R语言将字符型(Character)变量转化为数值型(Numeric)