我认为 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/