A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© せR3n、何必装纯 黑马帝   /  2011-11-11 22:23  /  1782 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.以下代码:编译、运行输入“a”(不含引号),按回车后,系统输出什么?

            public static void main(String[] args) throws Exception{
                    int[] x = {1,2,3,4,5,6};
                    for(int y:x){
                            System.in.read();
                            System.out.println(y);
                    }
            }

2.以下代码运行后
A.执行一段时间后报栈溢出。   B.会一直输出“try”。    C.会一直输出“try”和“finally”。    D.会一直输出“try”、“catch”和“finally”

    private static void foo() {

    try
    {
            System.out.println("try");
        foo();
    }catch (Throwable e) {
        System.out.println("catch");
        foo();
    }finally {
        System.out.println("finally");
        foo();
    }
    }

    public static void main(String[] args) {
        foo();
    }

评分

参与人数 1技术分 +1 收起 理由
admin + 1 先看看大家的回答,到时候可以把答案公布出.

查看全部评分

7 个回复

倒序浏览
本帖最后由 石宗银 于 2011-11-11 22:49 编辑

。你这第一题,,。。你能解释下不,,怎么输个a,回车后,,下面输出 123,,
输个aa,,下面输出1234,,输个aaa,下面输出12345,,输个aaaa ,下面输出123456
回复 使用道具 举报
  1. public static void main(String[] args) throws Exception{
  2.                     int[] x = {1,2,3,4,5,6};
  3.                     for(int y:x){//第一次循环
  4.                             System.in.read();//输入a,实际为 a\r\n  因为一次只能读一个字符,只读了a 留下了\r\n 没读
  5.                             System.out.println(y);//输出
  6.                     }//返回循环
  7.             }
复制代码
  1. public static void main(String[] args) throws Exception{
  2.                     int[] x = {1,2,3,4,5,6};
  3.                     for(int y:x){//第二次循环
  4.                             System.in.read();//因为上次留下了\r\n 没读,不再等待输入,直接读一\r
  5.                             System.out.println(y);//输出
  6.                     }//返回循环
  7.             }
复制代码
  1. public static void main(String[] args) throws Exception{
  2.                     int[] x = {1,2,3,4,5,6};
  3.                     for(int y:x){//第三次循环
  4.                             System.in.read();//读还没有读完的\n,也不等待
  5.                             System.out.println(y);//输出
  6.                     }//返回循环
  7.             }
复制代码
好不容易想通,这题太坏了

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
黄健 黑马帝 2011-11-12 00:04:46
板凳
第二题运行结果是c,求高人解释
回复 使用道具 举报
坚强 黑马帝 2011-11-12 16:13:40
报纸
第一个是java5中新增的增强for语句
foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
     引用了x的java语句;
}
回复 使用道具 举报
第一题
增强for循环就不用说了,System.in.read()的功能是读入下一个字节。输入一个“a”再加上回车,内存里是有三个字节,'a','\r','\n',这样read()函数就读了三次,打印了数组里的三个元素
第二题是c
就没异常,执行不到catch里面的代码
回复 使用道具 举报
第一题有人给了详解,第二题finally是必读的代码,所以try过后就会夺取finally,这是一个死循环,循环输出try和finally里面的内容先try读完foo()就会运行 finally
回复 使用道具 举报
郭学文 黑马帝 2011-11-12 17:39:14
8#
第二题实际运行结果是一段狂TRY

然后开始TRY Catch Finally

把Catch里的E输出,是在一阵狂Try后栈溢出,然后开始Catch 继而Finally
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马