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

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

这里写图片描述

乍一看,认为张手就可以写出来,不过仔细一想,不是那么回事。好了,不说了, 直接上答案,目前有两种,一种是终止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“标准”错误输出流。此流已打开并准备接受输出数据。
通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhiYuanYe

您的鼓励将是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值