首页 > 编程语言 >Java 11 新特性

Java 11 新特性

时间:2023-08-08 15:12:24浏览次数:32  
标签:11 Files java String 特性 Java string

Java 11 新特性

Java 11 是 Java 8 之后的第一个长期支持版本 (long term suppoert LTS),Oracle 将在 2019年1月停止支持 Java 8.

Oracle VS Open JDK

Java 10 是最后一个免许可商用版本,如果不需要 Oracle 商业支持的话,可以选择 Open JDK

直接运行 java 文件

Java 11 之前需要先用 javac 把 java 编译为 class 文件才能执行
Java 11 可以直接执行 java 文件

PS C:\Users\lingh\Desktop> java hello.java
hello java
PS C:\Users\lingh\Desktop>

String 一些新方法

Java 11 String 增加了一些方法: strip, stripLeading, stripTrailing, isBlank, lines, repeat
有些这些方法后可以更方便进行 String 操作
在 JDK 源码里搜索 @since 11 可以知道 Java 11 String 增加了哪些方法

/**
 * Returns a string whose value is this string, with all leading
 * and trailing {@link Character#isWhitespace(int) white space}
 * removed.
 * <p>
 * If this {@code String} object represents an empty string,
 * or if all code points in this string are
 * {@link Character#isWhitespace(int) white space}, then an empty string
 * is returned.
 * <p>
 * Otherwise, returns a substring of this string beginning with the first
 * code point that is not a {@link Character#isWhitespace(int) white space}
 * up to and including the last code point that is not a
 * {@link Character#isWhitespace(int) white space}.
 * <p>
 * This method may be used to strip
 * {@link Character#isWhitespace(int) white space} from
 * the beginning and end of a string.
 *
 * @return  a string whose value is this string, with all leading
 *          and trailing white space removed
 *
 * @see Character#isWhitespace(int)
 *
 * @since 11
 */
public String strip() {
    String ret = isLatin1() ? StringLatin1.strip(value)
                            : StringUTF16.strip(value);
    return ret == null ? this : ret;
}

Files 一些新方法

java.nio.file.Files 增加了 readString 和 writeString 方法

@Test
public void testFilesNewMethods() throws IOException {
    String text = "Files 一些新方法";
    Path path = Files.writeString(Files.createTempFile("FilesNewMethods","txt"),text, StandardCharsets.UTF_8);
    String readText = Files.readString(path);
    Files.delete(path);
    Assert.assertEquals(readText, text);
}

Collection 转 Array

java.util.Collection 增加了 toArray 默认方法,方便把集合转化为数组

default <T> T[] toArray(IntFunction<T[]> generator) {
    return toArray(generator.apply(0));
}
@Test
public void testCollectionToArray() {
    List<String> books = Arrays.asList("java", "spring");
    String[] array = books.toArray(String[]::new);
    Assert.assertTrue(array[0].equals("java") && array[1].equals("spring"));
}

Predicate not 新方法

java.util.function.Predicate 增加了 not 新方法

static <T> Predicate<T> not(Predicate<? super T> target) {
    Objects.requireNonNull(target);
    return (Predicate<T>)target.negate();
}
@Test
public void testNot() {
    List<String> books = Arrays.asList("java", "", " ", "spring");
    List<String> filteredBooks = books.stream().filter(Predicate.not(String::isBlank)).collect(Collectors.toList());
    Assert.assertTrue(filteredBooks.size() == 2 && filteredBooks.get(0).equals("java") && filteredBooks.get(1).equals("spring"));
}

Http Client

Java 9 引入了 Http Client, 在 Java 11 变成了标准特性

@Test
public void testGet() throws IOException, InterruptedException {
    HttpClient httpClient = HttpClient.newBuilder()
            .version(HttpClient.Version.HTTP_2)
            .connectTimeout(Duration.ofSeconds(20))
            .build();
    HttpRequest httpRequest = HttpRequest.newBuilder()
            .GET()
            .uri(URI.create("https://www.baidu.com"))
            .build();
    HttpResponse<String> httpResponse = httpClient.send(httpRequest,HttpResponse.BodyHandlers.ofString());
    Assert.assertTrue(httpResponse.statusCode() == 200 && httpResponsebody().contains("关于百度"));
}

标签:11,Files,java,String,特性,Java,string
From: https://www.cnblogs.com/goallin/p/17614375.html

相关文章

  • 基于Java开发的智慧EHR人力系统(源码获取)
    一、项目介绍一款全源码可二开,可基于云部署、私有部署的企业级数字化人力资源管理系统,涵盖了招聘、人事、考勤、绩效、社保、酬薪六大模块,解决了从人事招聘到酬薪计算的全周期人力资源管理,符合当下大中小型企业组织架构管理运作模式,助力企业人力资源管控信息化、智能化、规范化,......
  • Java开发需要掌握哪些技术?
    Java开发需要掌握哪些技术? 想要找到一份不错的Java开发工作,首先需要掌握一定的Java技术。那么想成为一名合格的Java开发工程师都有哪些技术是必须掌握的呢?零基础开始学习Java开发主要需要学习四个方面的内容,分别为:JavaEE基础、JavaWeb开发、Java高级框架、大型微服务分布式项目......
  • Java内存解析(转)
    栈、堆、常量池等虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,简单讲解Java内存分配方面的知识。首先我们先来讲解一下内存中的各个区域。 stack(栈):存放基本类型的数据和对象的引用,即存放变量。如果存放的事基本类型的数据(非静态变量),则直接......
  • java多线程 sleep()和wait()的区别
    java多线程sleep()和wait()的区别作者:octobershiner(2篇文章)日期:十二月16,2011在11:58上午接触了一些多线程的东西,还是从java入手吧。相信看这篇文章的朋友都已经知道进程和线程的区别,也都知道了为什么要使用多线程了。这两个方法主要来源是,sleep用于线程控制,而w......
  • java 线程池
    博客分类:JavaJava工作thread活动JDK线程池的作用:    线程池作用就是限制系统中执行线程的数量。    根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队......
  • 第一个Java程序
    第一个Java程序使用cmd命令运行Java文件需要注意的是cmd使用的是GBK的编码格式,若保存的java不是GBK编码格式,则运行时会报错(乱码)代码截图运行截图使用cmd运行Java文件的顺序创建.java文件改变编码格式为GBKcmd命令跳转到文件目录javac编译java方法名运行运行原......
  • PPT| APS高级计划与排产解决方案 P116
    PPT共116页,由于篇幅有限,以下为部分资料.......
  • java多线程编程基础4--正确使用 Volatile 变量
    记住一点就是:对数据的操作是分三步:1.从内存从拿过来2.更改数据3.写入内存 还需要记住一点就是:我们在存储数据的时候,不一定是将数据存放在内存中的,有时放在寄存器中的。所以多线程操作的时候,共有变量A如果被一个线程操作,并且存放在寄存器中并没写入到内存中,而另一个线程操作这个......
  • 《从0到1:JavaScript快速上手》笔记(一)
    一、两个十分有用的方法document.write():表示在页面输出一个内容alert():表示弹出一个对话框二、变量与常量在JavaScript中,变量指的是一个可以改变的量,也就是说,变量的值在程序运行过程中是可以改变的。(1)在JavaScript中,给一个变量命名,我们需要遵循以下2个方面的原则。变量有字母、......
  • JAVA jar包转.NET dll文件注意事项
    一、配置等:javaVersion:”1.8.0_151”IKVM:ikvm-8.1.5717.0IKVM下载地址:链接:https://pan.baidu.com/s/1mYutk0yghHxw2rOgFpDKJw提取码:0777IKVM需要配置环境:将IKVM.NET的bin文件夹的地址添加到环境变量。计算机右键属性–高级系统设置–高级–环境变量–在系统变量中找到PATH......