if..else..同时执行

博客探讨了一个关于if...else...能否同时执行的问题,指出在常规情况下这是不可能的。然而,通过一个脑筋急转弯的例子展示了如何在特定情况下达到类似效果,通过在if语句中嵌套完整语句,利用Java的PrintStream类实现输出'helloworld'。文章强调了解决问题的创新思维,提及了IO流中的常见代码,并提醒了内容的来源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if…else…同时执行

这里是引用看见这个题,____处该填什么呢?(如何才能同时执行if…else…?)填空,使得程序的运行结果是:helloworld

if (____) {
    System.out.print("hello");
} else {
    System.out.print("world");
}

答:首先说明,if…else…是不可能同时执行的,这应该是选择结构第一堂课上老师必然会讲的内容。此题属于脑筋急转弯,考察的是一种创新能力。
答这个题之前,先想想以下这行语句的输出结果是什么?

System.out.println(System.out.printf("hello"));

结果是:hellojava.io.PrintStream@12a3a380

因为输出语句最终调用的printf(“字符串”),实际是在java.io.PrintStream中的printf(“字符串”)方法,源码如下:

public class PrintStream extends FilterOutputStream
    implements Appendable, Closeable
{
    public PrintStream printf(String format, Object ... args) {
        return format(format, args);
    }
   ...
}

可见,printf()参数是字符串时,返回时是一个PrintStream对象。如果继续跟踪formar()方法,可以发现最终会返回一个不为null的PrintStream对象。因此答案来了,可以填入的值是:

System.out.printf("hello") == null

完整代码如下所示:

public static void main(String[] args) {
    if (System.out.printf("hello") == null) {
        System.out.print("hello");
    } else {
        System.out.print("world");
    }
}

if在判断的过程中已经输出了hello,但判断结果为false,因此又会输出else中的world,所以答案就是helloworld。
实际上,以上的分析都不重要。重要的是,是怎么想到在if中再嵌套一条完整语句的,这个思路是怎么产生的?因为联想到了IO流中一条非常常见的代码,如下。

while((len = in.read(buf)) != -1) { 
  ...   
}
...

本文内容摘抄自:知乎 原创 颜群 大数据和人工智能技术 2019-12-06
由于本文在知乎里面看到的,标注转载提示地址有误,特在此注明地址链接供点击跳转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值