博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java之谜 —— 来自Neal Gafter的演讲
阅读量:7194 次
发布时间:2019-06-29

本文共 941 字,大约阅读时间需要 3 分钟。

翻译人员: 铁锚

翻译日期: 2013年11月20日

原文链接: 

以下是来自Neal Gafter 演讲中的一个Java谜题:

import java.util.Random;// Rhymes,押韵public class Rhymes {    private static Random rnd = new Random();    /**     * 以下程序的输出有可能是什么?     * (a) Pain ,Gain 或者 Main (根据各个随机数)     * (b) Pain 或者 Main (根据随机数)     * (c) Main (总是这个)     * (d) 以上都不对     */    public static void main(String[] args) {        StringBuffer word = null;        switch (rnd.nextInt(2)) {        case 1: word = new StringBuffer('P');        case 2: word = new StringBuffer('G');        default: word = new StringBuffer('M');        }        word.append('a');        word.append('i');        word.append('n');        System.out.println(word);    }}
正确答案是哪一个呢?

正确答案是 D.

该程序中有三处缺陷:

1.  显然,在 switch语句中没有 break

2. nextInt(2) 返回的结果只有 0  或者 1

3. ‘P’, ‘G’, ‘M’ 是char型手, 而不是String对象,所以被自动转换为int型,调用了不符合预期的构造函数.

如果想要了解更多,请参考布洛克(Joshua Bloch)与 加夫特(Neal Gafter)的图书, 《》

相关阅读:

转载于:https://www.cnblogs.com/lanzhi/p/6467069.html

你可能感兴趣的文章
99. Recover Binary Search Tree
查看>>
长春新高三数理化暑假复习训练/高中理综补习班推荐
查看>>
[理] virsh 命令
查看>>
Python进阶【第十篇】模块(上)
查看>>
学习进度条
查看>>
uwsgi使用ini配置文件启动报错 no app loaded
查看>>
Linux命令之dig命令挖出DNS的秘密
查看>>
WordCount
查看>>
Qt游戏编程_07
查看>>
Java Socket实战之五:使用加密协议传输对象
查看>>
oracle删除表数据的两种的方式
查看>>
40.Node.js Web 模块
查看>>
centos7 ping: www.baidu.com: Name or service not known
查看>>
直接双击启动tomcat中的startup.bat闪退原因及解决方法
查看>>
45. ExtJS ComboBox 下拉列表详细用法
查看>>
串口开发
查看>>
拓补排序之烦人的幻灯片(确实很烦人。。。)
查看>>
关于HTTPService跨域安全策略的问题的解决
查看>>
[转]定制Android-Lint检查问题的现有规则
查看>>
递归实现全排列
查看>>