java 11 增加了一系列的字符串处理方法,Optional 加强 ,改进的文件API
增加了一系列的字符串处理方法
如以下所示。
// 判断字符串是否为空白
" ".isBlank(); // true
// 去除首尾空白
" Javastack ".strip(); // "Javastack"
// 去除尾部空格
" Javastack ".stripTrailing(); // " Javastack"
// 去除首部空格
" Javastack ".stripLeading(); // "Javastack "
// 复制字符串
"Java".repeat(3);// "JavaJavaJava"
// 行数统计
"A\nB\nC".lines().count(); // 3
例子:
import static org.junit.Assert.*;
import java.io.FileInputStream;
import org.junit.Test;
public class StringTest {
@Test
public void testName3() throws Exception {
FileInputStream fis = new FileInputStream("src/com/atguigu/java11/StringTest.java");
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
String string = new String(buffer);
string.lines().forEach(System.out::println);
}
@Test
public void testName2() throws Exception {
String string = "Java";
String string2 = string.repeat(5);
System.out.println(string2);
}
@Test
public void testName() throws Exception {
String string = " \t \r\n ";
System.out.println(string.isBlank()); // 判断字符串中的字符是否都是空白
System.out.println("**************************");
string = " \t \r\n abc \t ";
String string2 = string.strip(); // 去重字符串首尾的空白, 包括英文和其他所有语言中的空白字符
System.out.println(string2);
System.out.println(string2.length());
String string3 = string.trim(); // 去重字符串首尾的空白字符, 只能去除码值小于等于32的空白字符
System.out.println(string3);
System.out.println(string3.length());
System.out.println("**************************");
String string4 = string.stripLeading(); // 去重字符串首部的空白
System.out.println(string4);
System.out.println(string4.length());
String string5 = string.stripTrailing(); // 去重字符串尾部的空白
System.out.println(string5);
System.out.println(string5.length());
}
}
Optional 加强
Opthonal 也增加了几个非常酷的方法,现在可以很方便的将一个 Optional 转换成一个 Stream, 或者当一个空 Optional 时给它一个替代的。
Optional.of("javastack").orElseThrow(); // javastack
Optional.of("javastack").stream().count(); // 1
Optional.ofNullable(null)
.or(() -> Optional.of("javastack"))
.get(); // javastack
import static org.junit.Assert.*;
import java.util.Optional;
import org.junit.Test;
public class OptionalTest {
@Test
public void testName() throws Exception {
// of方法中如果传入的参数是null, 会抛出空指针异常
//Optional<String> optional = Optional.of(null);
// ofNullable可以兼容空指针, 但是实际传入null后要小心
Optional<Object> optional = Optional.ofNullable(null);
Object object = optional.orElse("abc"); // 如果内部引用为空, 则返回参数中的引用, 否则返回内部引用
System.out.println(object);
Object object2 = optional.orElseThrow();
System.out.println(object2);
}
}
改进的文件API
InputStream 加强:
InputStream 终于有了一个非常有用的方法:transferTo,可以用来将数据直接传输到 OutputStream,这是在处理原始数据流时非常常见的一种用法,如下示例。
var classLoader = ClassLoader.getSystemClassLoader();
var inputStream = classLoader.getResourceAsStream("javastack.txt");
var javastack = File.createTempFile("javastack2", "txt");
try (var outputStream = new FileOutputStream(javastack)) {
inputStream.transferTo(outputStream);
}
例子:
import static org.junit.Assert.*;
import java.io.FileOutputStream;
import org.junit.Test;
public class InputStreamTest {
@Test
public void testName() throws Exception {
var cl = this.getClass().getClassLoader();
try (var is = cl.getResourceAsStream("file"); var os = new FileOutputStream("file2")) {
is.transferTo(os); // 把输入流中的所有数据直接自动地复制到输出流中
}
}
}
java 11 增加了一系列的字符串处理方法,Optional 加强 ,改进的文件API的更多相关文章
- Java 11 已发布,String 还能这样玩!
在文章<Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码>中,我有介绍到 Java 11 的八个新特性,其中关于 String 加强部分,我觉得有点意思,这里单独再拉出来 ...
- Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. 可以看出 Java 8 扩 ...
- Java 11 这 8 个逆天新特性教你写出更牛逼的代码!
美国时间2018年 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. 可以看出 Jav ...
- Java 11正式发布,这几个逆天新特性教你写出更牛逼的代码
就在前段时间,Oracle 官方宣布 Java 11 (18.9 LTS) 正式发布,可在生产环境中使用! 这无疑对我们来说是一大好的消息.作为一名java开发者来说,虽然又要去学习和了解java11 ...
- Java 11必掌握的8大特性,完美代码信手拈来
[MyEclipse CI 2019.4.0安装包下载] 美国时间 09 月 25 日,Oralce正式发布了Java 11,这是据Java 8以后支持的首个长期版本.从官方发布的支持路线图表看出,J ...
- Java 11 New Features
前言 北京时间 2018年9 月 26 日,Oracle 官方宣布 Java 11 正式发布.这是 Java 大版本周期变化后的第一个长期支持版本,非常值得关注.从官网即可下载, 最新发布的 Java ...
- 最通俗易懂的 Java 11 新特性讲解
大多数开发者还是沉浸在 Java 8 中,而 Java 14 将要在 2020 年 3 月 17 日发布了,而我还在写着 Java 11 的新特性.Java 11 是 Java 8 之后的第一个 LT ...
- Java 11 新功能来了!
关键时刻,第一时间送达! 目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布.本文介绍 Java 11 的新功能. 根据Oracle新出 ...
- Java 11新功能抢先了解
目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布.本文介绍 Java 11 的新功能. 根据Oracle新出台的每6个月发布一次Jav ...
随机推荐
- Vue一个案例引发「内容分发slot」的最全总结
今天我们继续来说说 Vue,目前一直在自学 Vue 然后也开始做一个项目实战,我一直认为在实战中去发现问题然后解决问题的学习方式是最好的,所以我在学习一些 Vue 的理论之后,就开始自己利用业余时间做 ...
- MongoDB在已有账号的实例下还原数据库报错的分析(error applying oplog)
一. 背景 今天在MongoDB 4.0.4版本下,在还原恢复数据库时报错. 主要错误为: Failed: restore error: error applying oplog: applyOps: ...
- selenium-配置文件定位元素(九)
原文链接:https://mp.weixin.qq.com/s?__biz=MzU5NTgyMTE3Mg==&mid=2247483802&idx=1&sn=3218e34b6 ...
- iOS 开发 nonatomic 和 atomic
nonatomic : 非原子属性 atomic : 原子属性 如果不写关键字 那么默认就是 原子属性 - 多线程写入属性时,保证同一时间只有一个线程能够执行写入操作 - 单(线程)写多(线程 ...
- 【Python 20】BMR计算器4.0(异常处理)
1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...
- 关于Docker开通远程访问端口2375
一.使用版本:docker for windows 18.06,安装过程略,具体如下: 二.开通远程访问端口2375,只需要设置一下即可,如下图:
- Cocos2d-x游戏开发之lua编辑器 Sublime 搭建,集成cocos2dLuaApi和自有类
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wisdom605768292/article/details/34085969 Sublime Te ...
- Android 动态设置TextView的drawableLeft等属性
首先,我们在开发过程中,会经常使用到android:drawableLeft="@drawable/ic_launcher"这些类似的属性: 关于这些属性的意思,无非是在你的tex ...
- odoo12.0 在Ubutu 18.04下环境的搭建
sudo apt-get update sudo apt- postgresql nano virtualenv gcc python3.-dev libxml2-dev libxslt1-dev l ...
- iOS开发基础-UIScrollView基础
普通的 UIView 不具备滚动功能,不能显示过多的内容.UIScrollView 是一个能够滚动的视图控件,可用来展示大量的内容. UIScrollView 的简单使用: 1)将需要展示的内容添 ...