问2到SCJP题目
1:
public class ThrowsDemo {
static void throwMethod(){
System.out.println("Inside throwMethod");
throw new IllegalAccessException("demo");
}
public static void main(String [] args){
try{
throwMethod();
}
catch(IllegalAccessException e){
System.out.println(Caught"+e);
}
}
}
answer: Compile Error Why?????????
2:
public static void main(String [] args){
char digit='a';
for(int i=0;i<10;i++){
switch(digit){
case 'x':{
int j=0;
System.out.println(j);
}
default:{
int j=0;
System.out.println(j);
}
}
}
int i = j;
System.out.println(i);
}
输出什么???
问题点数:0、回复次数:19Top
1 楼chdbj(成都)回复于 2006-09-24 17:14:45 得分 0
3:
public class MyClass{
private static int x = getValue();
private static int y = 5;
private static int getValue(){
return y;
}
public static void main(String [] args){
System.out.println(x);
}
}
answer: prints 0 为什么x输出0?????????Top
2 楼helloint(眼泪)回复于 2006-10-05 19:17:27 得分 0
public class ThrowsDemo {
static void throwMethod()throws Exception{
System.out.println("Inside throwMethod");
throw new IllegalAccessException("demo");
}
public static void main(String[] args)throws Exception{
try{
throwMethod();
}catch(IllegalAccessException e){
System.out.println("Caught"+e);
}
}
}
输出
0
0
0
0
0
0
0
0
0
0
??
Top
3 楼helloint(眼泪)回复于 2006-10-05 19:19:32 得分 0
3很诡异,待高手Top
4 楼neptune0229(暗长空)回复于 2006-10-06 23:42:10 得分 0
private static int x = getValue();
定义的是常量,不能用表达式
所以x初始化为0Top
5 楼neptune0229(暗长空)回复于 2006-10-06 23:46:56 得分 0
第一题,错误的原因是System.out.println("Caught"+e);
"Caught"是字符串,e是对象,字符串不能和对象用“+”吧…………
第二题输出11个0,每个一行
Top
6 楼helloint(眼泪)回复于 2006-10-07 08:21:25 得分 0
public class ThrowsDemo {
static void throwMethod()throws IllegalAccessException{
System.out.println("Inside throwMethod");
throw new IllegalAccessException("demo");
}
public static void main(String[] args){
try{
throwMethod();
}catch(Exception e){
System.out.println("Caught"+e);
}
}
}
Top
7 楼terry6394(小猪,向前跑!)回复于 2006-10-07 09:48:10 得分 0
第一题:
IllegalAccessException
是需查异常,直接在程序里抛出的话也需要捕获。
所以把static void throwMethod()改成
static void throwMethod()throws IllegalAccessException
能编译通过。楼上正解。
------------------------------
第一题,错误的原因是System.out.println("Caught"+e);
"Caught"是字符串,e是对象,字符串不能和对象用“+”吧………
这种说法是错误的。e是对象,当一个字符串跟上和对象通过"+"相连的时候,会自动调用对象的toString()方法。相当于"Caught" + e.toString()
Top
8 楼terry6394(小猪,向前跑!)回复于 2006-10-07 09:54:16 得分 0
第二题编译错误。
最后的 int i = j;j没有定义。Top
9 楼fuyang_ywf()回复于 2006-10-08 09:38:46 得分 0
第三题是一个类变量初始化顺序的题目,程序加载类的时候,首先会对静态变量赋予系统默认值,接着执行静态变量初始化定义语句。
由于这题题目x的初始化定义语句先于y执行,所以采用的是系统默认值y=0;所以x的值是0,
你可以把y的初始化定义语句放在y的前面,就可以得到x=5。Top
10 楼zeyuphoenix()回复于 2006-10-08 10:43:33 得分 0
....................................
private static int x = getValue(); .
定义的是常量,不能用表达式 .
所以x初始化为0 .
...................................
这种说法错误;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
三题是一个类变量初始化顺序的题目,程序加载类的时候,首先会对静态变量赋予系统默认值,接着执行静态变量初始化定义语句。
由于这题题目x的初始化定义语句先于y执行,所以采用的是系统默认值y=0;所以x的值是0,
你可以把y的初始化定义语句放在y的前面,就可以得到x=5。
是对的。
Top
11 楼china2001ok(开心拽拽)回复于 2006-10-08 13:43:35 得分 0
第二题 j的作用域有问题Top
12 楼piaopiao11()回复于 2006-10-08 15:42:11 得分 0
1.因IllegalAccessException直接继承的Exception 所以当自己在方法中抛出后一定要在方法名后加 throws IllegalAccessException,如果自定义异常继承RuntimeException就不用加了Top
13 楼torainer()回复于 2006-10-18 10:54:11 得分 0
3題:
對於虛擬機來說,靜態域的初始化就相當於下面的程序段吧
private static int i = 0;
private static int j = 0;
static{
i = getValue();
j = 5;
}
Top
14 楼longer84()回复于 2006-10-18 11:25:02 得分 0
同意fuyang_ywf(),zeyuphoenix()Top
15 楼redduke1202(勿以分少而不回★★勿以分多而灌水)回复于 2006-10-18 11:39:46 得分 0
mark
涨见识了~Top
16 楼caiyisam()回复于 2006-11-13 16:45:50 得分 0
1.static void throwMethod方法中的throw new IllegalAccessException("demo")没有被包含在一个try块中。所以throwMethod方法必须throws IllegalAccessException.
2.编译错误,j没有被定义。Top
17 楼small334()回复于 2006-11-15 21:30:17 得分 0
第3道:
public class MyClass{
private static int x = getValue();
private static int y = 5;
private static int getValue(){
return y;
}
public static void main(String [] args){
System.out.println(x);
}
}
x为静态变量,他和对象不一样,程序一开始就分配存储空间并初始化的,这个时候getValue还没有运行,所以返回0?
我也是个入门这,不知道这样解释对不对,错的话高手给纠正哦Top
18 楼lcrystal623(小水晶)回复于 2006-11-26 21:44:05 得分 0
我觉得3在运行时,x=getValue()时,y还没赋值,因为
private static int y = 5;
private static int x = getValue();
private static int getValue()
就是5了.Top
19 楼lovey(我爱蓝天白云)回复于 2006-11-27 17:46:00 得分 0
terry6394(小猪,向前跑!) 回答的是正解,顶一下。Top




