关于java输出的一道题

Posted sanxiandoupi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java输出的一道题相关的知识,希望对你有一定的参考价值。

今天在我的后宫群看到了一道有意思的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输出的一道题


以上是关于关于java输出的一道题的主要内容,如果未能解决你的问题,请参考以下文章

一道经典面试题:字符串在Java中如何通过“引用”传递

关于Java类加载双亲委派机制的思考(附一道面试题)

关于静态代码块的执行顺序,很简单的一道题,应该所有人都会吧?

一道Java编程题

关于输入输出流(四则运算)

c语言关于链表的一道题