Java 是否与 C++ string_view 等价?

Does Java have any equivalent to C++ string_view?

Java 有 StringBuilder 用于生成增长的字符串,但不幸的是大多数 API 使用 String 所以一切都需要转换和伴随的复制开销。

在编译器上,假设有一个char数组。是否有 class 可以提供只读的 StringView(如 C++17 string_view)?如果不是,我可以很容易地写成 class,但问题是因为其他一切都处理字符串,一些好处会丢失。这个想法是提供一些看起来像字符串的东西,其中构造函数只是:

StringView(char[] bigBuffer, int start, int len) {}

并在任何需要使用字符串的地方使用 class。

String-like data. It's called CharSequence的只读访问接口,Stringclass实现了这个接口。

Java相当于C++中的StringView,是CharBuffer, which also implements CharSequence, so any method that accepts a CharSequence can be called with a String or a CharBuffer (or a StringBuilder).

许多 Java API 已经接受 CharSequence 而不是 String,例如java.time 包中的所有 parse() 方法,以及 Java 的正则表达式 API.

要以类似于 StringView 构造函数的工作方式创建 CharBuffer,请调用 wrap():

CharBuffer.wrap​(char[] array, int offset, int length)

The new buffer will be backed by the given char array; that is, modifications to the buffer will cause the array to be modified and vice versa.

那个 javadoc 显示没有复制正在进行。