在群里看到一个代码比较有意思,保存下来。很有深度的讨论,随便发下。
public class Monday {
public static void main(String args[]) {
【place holder】
System.out.println("aaaa");
}
}
问题:在括号内加几行代码,让打印aaaa那行打印出bbbb
方案1:
public class Monday {
public static void main(String args[]) {
try {
String aaaa = "aaaa";
Field field = String.class.getDeclaredField("value");
field.setAccessible(true);
char[] value = (char[]) field.get(aaaa);
Arrays.fill(value, 'b');
} catch (Exception e) {
}
System.out.println("aaaa");
}
}
方案2:
public class Monday {
public static void main(String args[]) {
System.setOut(new PrintStream(System.out) {
public void println(String str) {
super.println("bbb");
}
});
System.out.println("aaa");
}
}方案1是修改reference内容,方案2是重载
本文介绍两种有趣的方法来改变Java中字符串的输出内容。一种方法通过直接修改字符串引用的内容实现;另一种则是通过重载System.out对象来间接改变输出结果。这两种方式都展示了Java中对字符串操作的深入理解。
3445

被折叠的 条评论
为什么被折叠?



