今天在我的后宫群看到了一道有意思的java题,分享一下
题目是这样的
看到第一眼,反应:重载输出println也能重载?
据说正常反应应该是 在method中输出然后直接退出,果然是自己智商不够
既然不确定,那就Stack Overflow一下,找了找果然发现了,System.setOut()
关于这个函数,详细内容可以看官方文档,在这大致概括一下
setOut(PrintStream out)
将输出流的规则设置为out内的输出规则
而PrintStream
中,则有着println
方法,因此,我们只需要override一下println(String x)
就可以达到要求了。
记得a=10输出是无换行的,应该使用super.print
方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
static void (int a, int b) { System.setOut(new PrintStream(System.out) { public void println(String x) { if (x != null) { if (x.equals("a=10")) { x = "a=100,"; super.print(x); } else { if (x.equals("b=10")) { x = "b=200"; } super.println(x); } } else { super.println(x); } } }); } |
输出a=100,b=200
原文:大专栏 关于java输出的一道题
原文地址:https://www.cnblogs.com/sanxiandoupi/p/11633165.html
时间: 2024-10-07 12:25:19