黑马程序员技术交流社区

标题: 两道简单的面试题!! [打印本页]

作者: せR3n、何必装纯    时间: 2011-11-11 22:23
标题: 两道简单的面试题!!
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();
    }
作者: 石宗银    时间: 2011-11-11 22:41
本帖最后由 石宗银 于 2011-11-11 22:49 编辑

。你这第一题,,。。你能解释下不,,怎么输个a,回车后,,下面输出 123,,
输个aa,,下面输出1234,,输个aaa,下面输出12345,,输个aaaa ,下面输出123456
作者: 郭学文    时间: 2011-11-11 23:37
  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.             }
复制代码
好不容易想通,这题太坏了

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

然后开始TRY Catch Finally

把Catch里的E输出,是在一阵狂Try后栈溢出,然后开始Catch 继而Finally




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2