您的位置:首页 > 编程语言

int a = 10; int b = 20;method(a, b);//需要在method方法被调用之后,仅打印出a=100,b=200,请写出method方法的代码

2017-02-13 16:07 561 查看

最近网上比较【风骚】的一道面试题,大概题目是这样的:



乍一看,认为张手就可以写出来,不过仔细一想,不是那么回事。好了,不说了, 直接上答案,目前有两种,一种是终止JVM,另一种是改变打印输出流。

public static void main(String[] args) {
int a = 10;
int b = 20;

method(a, b);

System.out.println("a="+a);
System.out.println("b="+b);
tes();
}
//方法1
public static void method(int a,int b) {
System.out.print("a=100 b=200");
System.exit(0);
}
//方法2
public static void method(final int a,final int b) {
PrintStream stream = new PrintStream(System.out){
@Override
public void print(String s) {
super.print(s.replace(a+"", a*10+"").replace(b+"", b*10+""));
}
};
System.setOut(stream);
}


这尼玛分明就是一道脑筋急转弯啊!!!

PrintStream 是打印输出流,它继承于FilterOutputStream。

PrintStream 是用来装饰其它输出流。它能为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。

特殊的PrintStream:

System.in ———— 关键是已经打开

public static final InputStream in“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。

System.out

public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

System.err

public static final PrintStream err“标准”错误输出流。此流已打开并准备接受输出数据。

通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: