如何工作stringBuilder.reverse?
How work stringBuilder.reverse?
我认为 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,
stringBuilders[i].reverse().toString() = rot, reverse = tor,
StringBuilder 是可变的,因此每次调用 reverse()
时它都会将字符从头到尾翻转。
您的第一个问题可能是 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
变量的值。
您在 print 语句中对 reverse()
的第二次调用将其反转回值 tor
,这就是打印的值。
我认为 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,
stringBuilders[i].reverse().toString() = rot, reverse = tor,
StringBuilder 是可变的,因此每次调用 reverse()
时它都会将字符从头到尾翻转。
您的第一个问题可能是 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
变量的值。
您在 print 语句中对 reverse()
的第二次调用将其反转回值 tor
,这就是打印的值。