jdk13至15——文本块特性

JDK15引入了字符串文本块功能,简化了多行字符串的编写,允许直接使用包围,自动处理缩进和换行。此外,新增formatted方法用于格式化字符串,stripIndent方法去除文本块的首尾空白。这些改进提高了代码的可读性和简洁性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文本块在jdk13中第一次预览,jdk14第二次预览,jdk15正式版;

终于不用在多行字符串中加一堆\n和一堆\"和一堆+了;

之前需要这么麻烦:

	@Test
	void test() {
		String s = "testabcd\n"
				+ "aaa\n"
				+ "bbb\n";
		System.out.println(s);
		System.out.println("=".repeat(10));
	}

现在只需一对"""就能搞定:

	@Test
	void test() {
		String s = """
				testabcd
				aaa
				bbb
				""";
		System.out.println(s);
		System.out.println("=".repeat(10));
	}

运行结果都是:

关于行首缩进,按照每行最小的缩进为准,包括结尾的"""行也进行计算:

运行结果:

还可以在换行符前使用“\”消除换行,或者在行尾使用\s添加空白字符并保留行结尾的空白字符:

	@Test
	void test() {
		String s = """
				testabcd
				aaa\
				bbb
				""";
		System.out.println(s);
		System.out.println("=".repeat(10));
	}

每行结尾的空白字符会被去掉:

使用\s后可保留(\s也算一个空白字符):

文本块里也可以使用%d%s等格式化,单引号双引号也不需要转义:

	@Test
	void test() {
		String s = """
				{"name":"%s", "age":%d}
				""";
		System.out.println(s.formatted("Tom", 13));
		System.out.println("=".repeat(10));
	}

随着jdk的迭代,String类也断断续续新增了一些好用的方法:

jdk11的repeat(int count)可以将字符串重复多遍,strip()去除收尾空白字符,stripLeading()去掉开头的空白字符,stripTrailing()去掉结尾的空白字符,isBlank()判断字符串长度是不是0,lines()将字符串按照换行转换成stream;

jdk12的indent(int n)可以添加缩进,transform(Function f)可以对字符串进行转化;

jdk15的formatted(Object... args)可以格式化字符串,stripIndent()去掉文本块行首位空白字符;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值