职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 241|回复: 8

遇到这3道笔试题,大家有把握能做对几道

[复制链接]
木已 发表于 2011-8-27 09:57 | 显示全部楼层 |阅读模式
如果在笔试(无法上机操作)的情况下,遇到这3道笔试题,大家有把握能做对几道

第一题:
Java代码  
public static void main(String[] args) throws Exception {   
    int[] x = new int[6];   
    Arrays.fill(x, 1);   
    for (int i = 0; i < x.length; i++) {   
        System.in.read();   
        System.out.println(x[i]);   
    }   
}  

        public static void main(String[] args) throws Exception {
                int[] x = new int[6];
                Arrays.fill(x, 1);
                for (int i = 0; i < x.length; i++) {
                        System.in.read();
                        System.out.println(x[i]);
                }
        }这段代码,输入“1”(不含引号),按回车后,系统输出什么?

第二题:
Java代码  
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();   
}  

        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();
        }上述代码运行后:
A.执行一段时间后报栈溢出。   B.会一直输出“try”。    C.会一直输出“try”和“finally”。    D.会一直输出“try”、“catch”和“finally”

第三题:
Java代码  
A = 1;   
System.out.println(A);  

A = 1;
System.out.println(A);A是一个int类型变量,请在这段代码的前、后添加任意代码(但两句之间不能再插入代码),使得程序编译时第一句可以编译通过,而第二句出现编译错误。
另:请不要以“脑筋急转弯”的方式来思考此问题,这里java就是普通的java语言,rt.jar和javac都没有被修改过。打印语句import的就是我们平常所用的打印语句。

已经来了吗 发表于 2011-8-27 09:57 | 显示全部楼层
通过程序验证
第一题:输出 1 1 1
第二题:只会出现 try finally
第三题:还没想到。
等高手解释原因..

fl 发表于 2011-8-27 09:58 | 显示全部楼层
fe8829 写道
通过程序验证
第一题:输出 1 1 1
第二题:只会出现 try finally
第三题:还没想到。
等高手解释原因..

第二题怎么会没有catch出现呢?

秋秋 发表于 2011-8-27 09:58 | 显示全部楼层
fe8829 写道
通过程序验证
第一题:输出 1 1 1
第二题:只会出现 try finally
第三题:还没想到。
等高手解释原因..

第三题这样成不:


public class Test {
int
A = 1;  
System.out.println(A);
}

楠楠 发表于 2011-8-27 09:58 | 显示全部楼层
第二题一串try,然后stack overflow,catch,finally,catch,finally,finally,stack又有了,然后两个try,又overflow,懒得想了,大概思路是这样,太绕了

郁闷小男人 发表于 2011-8-27 09:58 | 显示全部楼层
运行了下第一题对结果感到很迷惑,于是把System.in.read()的结果也打印出来:
Java代码  
<SPAN style="FONT-SIZE: large">public static void main(String[] args) throws Exception {   
        int[] x = new int[6];   
        Arrays.fill(x, 1);   
        for (int i = 0; i < x.length; i++) {   
            System.out.println(System.in.read());   
            System.out.println(x[i]);   
        }   
    }</SPAN>  

public static void main(String[] args) throws Exception {
                int[] x = new int[6];
                Arrays.fill(x, 1);
                for (int i = 0; i < x.length; i++) {
                        System.out.println(System.in.read());
                        System.out.println(x[i]);
                }
        } 打印的结果:
49
1
13
1
10
1

终于明白结果为什么是1 1 1,解惑:
执行System.in.read()方法将从键盘缓冲区读入一个字节的数据,然后返回16位的二进制数据,其低8位为键盘的ASCII码,高8位为0。
数字1的ASCII码为49,换行\r的ASCII码为13,回车\n的ASCII码为10,从控制台输入数字1的操作为:输入1然后换行、回车。

hxy 发表于 2011-8-27 09:58 | 显示全部楼层
watertap 写道
第三题解法不对。



"A是一个int类型变量,请在这段代码的前、后添加任意代码(但两句之间不能再插入代码),使得程序编译时第一句可以编译通过,而第二句出现编译错误"

public class Test {
int
A = 1;  
System.out.println(A);
}


如何不对?Test中,A是int的,在你的代码的前后加了“任意代码”,没有在两句中间爱插入,第一句可以编译,第二句不能编译,完全满足条件啊


 楼主| 木已 发表于 2011-8-27 09:59 | 显示全部楼层
第三题解法:
for( int A = 0; A < 2;A++ )
A=1;
System.out.println( A );

能文能武 发表于 2011-8-27 09:59 | 显示全部楼层
挺有趣。我给一个真的变量可写不可读的解法。
Java代码  
public class Test {   
    static {   
        A = 2;   
        System.out.println(A);  // 这句编译器会提示“非法向前引用”     
    }   
    static int A = 1;   
}  

public class Test {
        static {
                A = 2;
                System.out.println(A);  // 这句编译器会提示“非法向前引用”  
        }
        static int A = 1;
}

您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-4 19:35 , Processed in 0.144661 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表