锁定老帖子 主题:遇到这3道笔试题,大家有把握能做对几道
精华帖 (16) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (8)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-21
不知道最好哪個先掛掉,netbeans進程已用500MB內存,java進程用了17MB。已執行22分鐘
大家都是多長時間溢出的啊。 |
|
返回顶楼 | |
发表时间:2011-07-22
最后修改:2011-07-25
final A=0不就得了?
题目好像看错了。应该是把变量定义成一个局部的。比如: for(int A=0;;) A = 1; System.out.println(A); |
|
返回顶楼 | |
发表时间:2011-07-23
不知道这题面试的公司要考应聘者什么 呵呵
|
|
返回顶楼 | |
发表时间:2011-07-26
gu__sofia 写道 第二题c finally在任何情况下都是执行的
这个兄弟这样说是不对的吧,在try中直接return是不会执行finally的. |
|
返回顶楼 | |
发表时间:2011-07-27
z276356445t 写道 gu__sofia 写道 第二题c finally在任何情况下都是执行的
这个兄弟这样说是不对的吧,在try中直接return是不会执行finally的. 去测一下呢,看看try中return,然后finally块有没有执行? |
|
返回顶楼 | |
发表时间:2011-07-28
aiheng1988 写道
dxxghx 写道
fangshengcai001 写道
第一题是 1,1,1 后等待输入 测出来的 System.in.read().会把回车和换行也看成一种输入...OUT了 测了好几次才发现
然后再随便输入一个数字,系统会再次输出1,1,1。然后console就停止了! 求解~~~ 其实System.in.read()只是为了控制一个循环,当输入1+回车(/r/n),相当于三次System.in.read(),因此会输出前三个值,当输入随便一个数字**+回车(/r/n),也相当于三次System.in.read(),会输出数组的后三个值。understand?
|
|
返回顶楼 | |
发表时间:2011-08-02
最后修改:2011-08-03
private boolean f = false; public void test(int i) { i++; try { System.out.println("try"+i); if(!f)test(i); } catch (Error e) { e.printStackTrace(); System.out.println("catch"+i); f=true; } finally { System.out.println("finally"+i); if(!f)test(i); } } public static void main(String[] args) { Test t = new Test(); t.test(0); } 我把catch的类型改了一下,这样我们就可以看到异常了,异常类型是java.lang.StackOverflowError。 try和finally。
|
|
返回顶楼 | |
发表时间:2011-08-02
ucfjepl 写道 private boolean f = false; public void test(int i) { i++; try { System.out.println("try"+i); if(!f)test(i); } catch (Error e) { e.printStackTrace(); System.out.println("catch"+i); f=true; } finally { System.out.println("finally"+i); if(!f)test(i); } } public static void main(String[] args) { Test t = new Test(); t.test(0); } 我把catch的类型改了一下,这样我们就可以看到异常了,异常类型是java.lang.StackOverflowError。 try和finally。 多次后开始抛出异常,不知道我的理解对不对,等待高手解决。 根据上面的理解,我们可以得到的答案是,当抛出java.lang.StackOverflowError的错误后,catch不会执行,而是永远在执行try和finally,我在测试时eclipse经常会直接崩溃掉, 可能理解有误,等高手指正..... |
|
返回顶楼 | |
发表时间:2011-08-02
public static void main(String[] args) { try { int[] x = new int[6]; Arrays.fill(x, 1); int m = 0; for (int i = 0; i < x.length; i++) { m = System.in.read(); System.out.println(i+"***************"+m); System.out.println(x[i]); } } catch (IOException e) { e.printStackTrace(); } } 第一题和三楼说的一样,jvm把回车和换行都当做一个字节来读的。 System.in.read()是每次读取输入流中的一个字节,所以我们输入1再敲回车后,实际上包括了1、回车和换行 所以输入1后回车会看到三个1,如果我们输入两个1后回车会看到四个1 根据以上代码我们输入1后会看到以下输出: 0***************49 *号前面是数组的索引,*号后面的code就是我们通常用到的1的code为49,回车的code为13,换行是10 回车和换行的区别是:回车是把光标移向下一行并把光标放到行首,换行是把光标移到下一行,具体的区别大家可以百度啊 由于System.in.read()是每次读取输入流中的一个字节,而汉字是两个字节,我们用汉字来代替我们输入的数字1,输入汉字“啊”可以看到: 啊 汉字是两个字节,加上回车和换行是四个字节,所以会输出四个1,我们再输入一个汉字会看到只有输出了两个1,这是因为数组的长度是6,所以不会输出多余的1了,当然这个是很明显的,大家都可以看出来啊,看到回复中的有的有这样的疑问就说出来了 |
|
返回顶楼 | |
发表时间:2011-08-02
ucfjepl 写道 public static void main(String[] args) { try { int[] x = new int[6]; Arrays.fill(x, 1); int m = 0; for (int i = 0; i < x.length; i++) { m = System.in.read(); System.out.println(i+"***************"+m); System.out.println(x[i]); } } catch (IOException e) { e.printStackTrace(); } } 第一题和三楼说的一样,jvm把回车和换行都当做一个字节来读的。 System.in.read()是每次读取输入流中的一个字节,所以我们输入1再敲回车后,实际上包括了1、回车和换行 所以输入1后回车会看到三个1,如果我们输入两个1后回车会看到四个1 根据以上代码我们输入1后会看到以下输出: 0***************49 *号前面是数组的索引,*号后面的code就是我们通常用到的1的code为49,回车的code为13,换行是10 回车和换行的区别是:回车是把光标移向下一行并把光标放到行首,换行是把光标移到下一行,具体的区别大家可以百度啊 由于System.in.read()是每次读取输入流中的一个字节,而汉字是两个字节,我们用汉字来代替我们输入的数字1,输入汉字“啊”可以看到: 啊 汉字是两个字节,加上回车和换行是四个字节,所以会输出四个1,我们再输入一个汉字会看到只有输出了两个1,这是因为数组的长度是6,所以不会输出多余的1了,当然这个是很明显的,大家都可以看出来啊,看到回复中的有的有这样的疑问就说出来了 赞同这个解释 |
|
返回顶楼 | |