在java中交换两个字符串,不使用第三个变量,也不使用java中的任何内置API



最近我接受了一次采访,他们要求我交换两个字符串,不使用任何第三个变量,不使用任何字符串方法,如substring, replace或不使用StringBuilderStringBuffer

,

String str1 = "hello";
String str2 = "morning";

输出:

String str1 = "morning";
String str2 = "hello";

这里有一个利用赋值表达式(和求值顺序)的技巧:

str2 = (new String[] { str1, (str1 = str2) })[0];

当然可以有很多变化,但这就是它。

在做了一些有线实践之后,我得到了一个使用三元运算符的更复杂的解决方案。

解决方案:str1 =str2+ ((str2)=str1=null?">:");