java - stringBuilder.reverse 如何工作?

标签 java string reverse tostring stringbuilder

我认为 revers 应该等于“tor”,但是当我尝试时

String straight = stringBuilders[i].toString();
String reverse = stringBuilders[i].reverse().toString();
System.out.println("stringBuilders[i].reverse().toString() = " +  stringBuilders[i].reverse().toString()
+ " reverse = " + reverse + "    straight = " + straight + 
" rev == str ? " + reverse.equals(straight));

我得到了这样的结果

stringBuilders[i].reverse().toString() = rot, reverse = tor, straight = tor, rev == str? false

为什么?

rev == str ? 输出为 false 怎么会这样

stringBuilders[i].reverse().toString() = rot, reverse = tor,

最佳答案

您的第一个问题可能是 straight使用索引j ,而代码的其余部分使用索引 i .

这是您作为 MCVE 的代码 ( Minimal, Complete, and Verifiable example ):

StringBuilder stringBuilder = new StringBuilder("tor");
String straight = stringBuilder.toString();
String reverse = stringBuilder.reverse().toString();
System.out.println("stringBuilders[i].reverse().toString() = " +  stringBuilder.reverse().toString() +
                   " reverse = " + reverse +
                   "    straight = " + straight +
                   " rev == str? " + reverse.equals(straight));

输出是:

stringBuilders[i].reverse().toString() = tor reverse = rot    straight = tor rev == str? false

这不是您显示的输出。

无论如何,你的主要问题是 reverse() :

Causes this character sequence to be replaced by the reverse of the sequence.

所以,您第一次调用reverse()使得stringBuilder值为 rot ,这也是分配给 reverse 的值变量。

您第二次调用reverse()在 print 语句中将其反转回值 tor ,这就是打印的值。

关于java - stringBuilder.reverse 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37097204/

相关文章:

java - CMake 访问 SWIG 并将 Java 库链接到现有 C++ 项目时出现问题

如果字符串包含非法字符,则返回 Java 函数

java 使用发送模式的对象创建文件名

c - 如何读取文件并将每个读取的行拆分为变量或数组

java - 这个 : [Ljava. lang.Object; 是什么?

java - 单例对象在 jar 中销毁但在 eclipse 中工作

recursion - 如何反转列表?

javascript - array.reverse() 在平面数组中逐 block

java - 集成测试 Spring boot 应用程序 JSON 断言

arrays - 在不到 O(n) 的时间内反转数组的子数组