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“标准”错误输出流。此流已打开并准备接受输出数据。
通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标
相关文章推荐
- php抽奖概率算法(刮刮卡,大转盘)
- 大话设计模式之PHP篇 - 适配器模式
- Spring MVC(九)常用注解及例子
- Java进阶3 —— 类和接口设计原则
- cas单点登录1-源码导入eclipse
- 大话设计模式之PHP篇 - 观察者模式
- 大话设计模式之PHP篇 - 策略模式
- Spring 定时任务之 @Scheduled cron表达式
- BufferedWriter 无法写入文件eclipse提示错误Stream closed
- 第二篇、创建型设计模式——工厂方法模式
- PyQt: eg2
- 基于Visual c++ 2012的php扩展开发 - HelloWord!
- 同台机器上安装两个jdk版本,想要那个就要那个版本;
- Java后台返回和处理JSon数据的方法
- spring定时器quartz
- Python开发【Django】:图片验证码、KindEditor
- 文件结构“图”
- python---time和datetime
- Python 爬虫初探
- [笔记]CTR预估中的贝叶斯平滑方法及其代码实现