CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  SUN Java 认证

问2到SCJP题目

楼主chdbj(成都)2006-09-24 17:11:32 在 Java / SUN Java 认证 提问

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

相关问题

关键词

得分解答快速导航

  • 帖主:chdbj

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo