02 | 文字块:怎么编写所见即所得的字符串?
阅读案例
- 深入了解
- 翻译
- 解释
- 总结
Java中的文字块(text blocks)是一个新的字符串表示形式,由多行文字构成,消除了传统字符串处理中的换行、连接符、转义字符等问题,使得多行文字字符串的表达更加简洁清晰。文字块在编译期被转换成常量字符串,可以使用字符串的各种API和操作方法。通过文字块,开发者可以更加方便地处理HTML、SQL、XML、JSON等复杂字符串,提高代码的可读性和质量。文字块的出现为Java语言带来了“所见即所得”的编程体验,使得开发者能够更加高效地处理复杂字符串,提升代码质量和开发效率。文字块还引入了新的转义字符,如空格转义符和换行转义符,以支持尾部空格和长段落的表达。文章还提到了文字块的编译细分步骤和处理规则,以及在面试中可能涉及的问题和技术要点。文章最后提出了一个思考题,探讨了文字块在处理居中对齐等特殊场景时的应用。整体而言,文字块为Java开发者带来了更加便捷和清晰的字符串处理方式,提高了代码的可读性和开发效率。
《深入剖析 Java 新特性》,新⼈⾸单¥59
全部留言(20)
- 最新
- 精选
- 人要活泼些才好置顶本篇主要讲了几点: 1. 认识 textarea 是什么?基本语法是什么? 2. textarea 和 原始的长字符串处理方式产生的对象指向同一内存地址。 3.文字块可以调用字符串 String 的 API 。 4.可以使用嵌入式的表达式 。 5. textarea 是如何处理共享的前导空格的。 6. 需要保留 textarea 怎么办?添加一个 \s 即可保留 此行 '\s' 及之前的空格。 7.如何在遵守编码规范的前提下处理长段落:在需要断行的地方 添加 \ 即可。
作者回复: 建议置顶! 可惜我不知道有没有置顶的功能。 如果点赞可以帮助置顶的话,小伙伴们都来点赞吧。总结的太好了!
2021-11-17234 - 森林老师,java啥时候支持字符串插值。
作者回复: 这个特性,我还不知道是不是有计划。 现在有替换的方案,虽然没有字符串差值简单,所以可能不是很紧急。 如果觉得这个好,可以去OpenJDK提议,推动它的早日支持。
2021-11-172 - getouo什么时候能支持字符串插值啊
作者回复: 出现了两次,看来这个需求很旺盛啊。你想去OpenJDK提交一个新特性的申请吗?
2021-11-1752 - Calvin老师,看完这节,我有点疑问,想请教一下: 1:编译过程去除共享的前导空格,这个可以理解是为了处理代码缩进,但是为什么文本行后面的空格也要设计为去除呢?这样设计的初衷是什么呀?(这样设计,为了保留后面的空格还要使用\s转义,感觉反而更麻烦了!) 2:这里说的是去除空格,万一是tab缩进的呢?前后的tab也能去除吗? 3:后置结束符是“"""”,如果我文本块内容最后一个字符也是“"”而且是不换行的,那么最终就是4个“"”结尾,这样也是没问题的对吗? 4:如果我文本块内容中间就有“"""”,这跟后置结束符一样,编译器是否能识别它并非真正的结束符?如果不能,有没有什么办法转义呢? 5:对于长文本不换行转义符“\”,文中只说了前面有空格的情况,如果它后面也还有空格或者tab,是否能达到不换行的效果呢? 6:对于文中说到的转义符“\s”和“\”,如果我不想让它们作为转义符(当普通文本输出),需要怎么再转义? PS:文中说到“\”不换行转义符时,是有笔误吗?刚看一头雾水,看例子才知道应该是“\”,原文针对这种情况, 文字块引入了一个新的转义字符,‘< 行终止符 >’,换行转义符。
作者回复: 1). 通常状况下,行末的空格都是不必要,毕竟看不到。这样设计,省去了肉眼判断行末是否有空格的麻烦。 毕竟,有空格肉眼不好看,而转义字符就清晰很多了。 多数情况下,行末的转义字符应该用不上。 2),3),5)的答案,建议你试一试。 4)使用转义字符,\"""。6)继续使用转义字符。这和普通的字符串的转义字符的用法是一致的。 PS:有可能是词语选择的偏好导致的。“不换行转义符”和“换行转义符”似乎都有可能导致理解偏差。 小伙伴们,也帮我想一想有没有更好的表达方式。
2021-11-1841 - aoe还是Go中的``用起来方便啊。""" """确实也方便了很多,但是平时用的真不多,复杂的文字一般都会从模板中读取/展示,例如:MyBatis的XML文件、Yaml文件、FreeMarker、Thymeleaf等
作者回复: 嗯,场景不同,使用方式差别很大。 从模版中读取是一个值得小伙伴们学习的好办法。 我自己的代码很多要记日志,这个特性算是解放了我可怜的眼睛。
2021-11-1741 - 人要活泼些才好直接添加缩进空格的实现 String poem = """ No man is an island, entire of itself, every man is a piece of the continent, a part of the main. """;
作者回复: 很遗憾极客时间的评论不能准确地显示源代码。时间允许的话,你可以试一试专栏的GitHub的PR请求。每一讲的末尾,都有一个注解,提醒大家怎么获得源代码,怎么提交PR请求。
2021-11-1721 - 码小呆文字块特性,说实话,在实际工作中,很难遇到使用情况,最多就在学习的过程中已经测试的过程中会使用到,毕竟现在 谁在工作中用servlet 去 做转发或者 重定向这种操作呢
作者回复: 实际使用已经很多了。
2022-07-06 - giteebravo本节理解了文字块的基本概念及其使用方式, 会有意识地在代码里使用文字块。
作者回复: 嗯,学到的就赶快用上。
2021-11-27 - 李阳写scala经常用。是很方便
作者回复: 是的。
2021-11-24 - Jagger Chenhttps://github.com/XueleiFan/java-up/pull/6
作者回复: 收到,有一个小的注释,已经merge了。
2021-11-21