SCJP035经典104题分析笔记
最近备考035课程,从网上当了一份据说是很有价值的104题,目前边分析边学习,已经整理出一些例题,本人才疏学浅,试发一部分笔记,不知大家是否有兴趣一起讨论。如有错误和疏忽大家指正。(示例部分未上传,如大家认为有价值我会继续发下面的笔记和示例)
1.
2) returnType methodA(byte x, double y){
4) }
what is valid returnType for methodA in line 2?
分析:这是一道考察基础知识的问题,比较简单,涉及强制类型转换和表达式数据类型的转换和升级。强制类型转换的方法是在变量或数值前加上需要转换的类型,如(int)12.23 则duble类型的数值被强行转化为int型,当然此时回丢失信息。表达式数据类型的转换原则是在不出现信息丢失的情况下自动升级到一种更长的形式。
注意:(1)、不带尾巴的数值容易被忽视他的真实类型,比如12和12.0,其中12为int或short型,12.0为duble型。
short a , b, c;
b = 2;
示例:w01.java
1) class Super{
3) }
5) public class Sub extends Super{
7) }
A. public float getNum(){return 4.0f;}
C. public void getNum(double d){}
题意: 哪一种方法定义放在第6行,会产生编译错误?
解答:分别将答案放在第6行,A表示对super类的getNum方法进行override,正确;B语句因为参数与父类的同名函数的参数相同所以不是overload,而返回值与父类同名函数返回值不同所以不是override,进而出错。C表示对继承自super类的getNum方法进行overload,正确;D同C
示例: w02.java
public class IfTest{
int x=3;
if(x=y)
else
}
what is the result?
分析: 也是属于基础知识的考察,请参考运算符说明部分。=为赋值,表达式本身的值为=号左边的值;==为比较,表达式本身的值为true或false。If语句后面需要一个boolean的值来判断。
注意:
4.
public static void main(String args){
finally{ System.out.println("Finally");}
}
A. print out nothing
C. compile error
分析: 考察try-catch-finally语句的语法。一般,try语句块中产生异常,由catch语句捕获异常进行处理。关于finally语句,sun-275的教材中解释的很明确,它的代码块"总是"被执行,而不考虑有没有异常发生。不执行finally代码块的情况只有一种,就是VM结束(执行System.exit()方法和机器关闭)。如果一个return语句嵌入在catch快内,则finally快的代码在return之前执行。
解答: B
示例: w04.java
5.
public static String output="";
try {
throw new Exception();
output ="1";
catch(Exception e){
return;
finally{
}
}
foo(0);
24)
}
题意: 在第24行处,output的值是什么。
解答: 从主程序的调用入手分析。1、Foo(0)调用Foo函数,并将0传给Foo函数的i变量。2、运行try语句块,比较i==1不成立,执行if后面的语句output ="1",此时output的值为"1"。3、try语句没有异常抛出,在执行finally语句后即结束。finally语句改变output的值为"13"。4、执行try语句外面的语句output ="4",此时output的值为"134",Foo(0)调用结束。5、Foo(1)调用Foo函数并将1传给Foo函数的i变量。6、运行try语句块,比较i==1成立,执行if语句块内的语句。7、抛出一个异常。8、catch语句立刻捕获异常并执行output ="2",此时output的值为"1342"。9、继续向下执行return准备结束Foo函数,但是return前要执行finally语句的内容output ="3",此时output的值为"13423"。然后结束Foo函数。在第24行处output的值为"13423"。
示例: w05.java
6.
public static void main(String args){
System.out.println("odd");
System.out.println("even");
public static int odd(int x){return x%2;}
what is output?
分析: 本题比较简单,只是用odd这样的函数名迷惑视线,其实odd函数定义的类型是int,所以放在if里判断自然会产生错误。
注意: if为常考内容(仅仅从模拟考试题得出的结论,不代表实际考试情况)
|||
示例: w06.java
7.
public static void main(String args){
methodA();
System.out.println("caught IOException");
System.out.println("caught Exception");
}
If methodA() throws a IOException, what is the result?
分析: 多个catch语句的情况是按顺序判断异常的类型,直到找到相应的catch语句块去执行,然后结束。
注意: 若调换catch(IOException e)和catch(Exception e)的顺序会产生编译错误。因为如果调换以后catch(IOException e)语句块的内容永远不会被执行。
8.
do{
--j) continue;
After Execution, what are thevalue for i and j?
B. i=5 j=5
D. i=5 j=6
题意: 执行结束后,i和j的值分别是什么?
解答: i=5,j=6 。答案为D
示例: w08.java
9.
2) public Object m(){
4) Object oa=new Object[1];
6) o=null;
System.out.println(oa[0]);
10) }
A.After line 4
C.After line 6
E.After line 9(that is,as the method returns)
分析: 一个对象成为垃圾有两种情况,一是失去引用;一是离开了作用域。
注意: 注意对象和对象的引用的区别。
10.
2) int k=0;
4) public class Test implements Foo{
6) int i;
8) i=test.k;
10) i=Foo.k;
12) }
题意: 结果是什么?
解答: 关键分析8、9、10行。第8行i=test.k;test是Test类的一个实例,Test是接口Foo的实现类,所以Test类拥有static final类型的k数据成员,test对Test类的k成员进行调用是合法的,所以实际i被附值为0。第9行在Test类的静态方法main中调用静态数据k当然也没有错误。第10行调用同一个文件中的接口中的静态成员也是合法的,所以程序会成功编译,没有错误。
1.
2) returnType methodA(byte x, double y){
4) }
what is valid returnType for methodA in line 2?
分析:这是一道考察基础知识的问题,比较简单,涉及强制类型转换和表达式数据类型的转换和升级。强制类型转换的方法是在变量或数值前加上需要转换的类型,如(int)12.23 则duble类型的数值被强行转化为int型,当然此时回丢失信息。表达式数据类型的转换原则是在不出现信息丢失的情况下自动升级到一种更长的形式。
注意:(1)、不带尾巴的数值容易被忽视他的真实类型,比如12和12.0,其中12为int或short型,12.0为duble型。
short a , b, c;
b = 2;
示例:w01.java
1) class Super{
3) }
5) public class Sub extends Super{
7) }
A. public float getNum(){return 4.0f;}
C. public void getNum(double d){}
题意: 哪一种方法定义放在第6行,会产生编译错误?
解答:分别将答案放在第6行,A表示对super类的getNum方法进行override,正确;B语句因为参数与父类的同名函数的参数相同所以不是overload,而返回值与父类同名函数返回值不同所以不是override,进而出错。C表示对继承自super类的getNum方法进行overload,正确;D同C
示例: w02.java
public class IfTest{
int x=3;
if(x=y)
else
}
what is the result?
分析: 也是属于基础知识的考察,请参考运算符说明部分。=为赋值,表达式本身的值为=号左边的值;==为比较,表达式本身的值为true或false。If语句后面需要一个boolean的值来判断。
注意:
4.
public static void main(String args){
finally{ System.out.println("Finally");}
}
A. print out nothing
C. compile error
分析: 考察try-catch-finally语句的语法。一般,try语句块中产生异常,由catch语句捕获异常进行处理。关于finally语句,sun-275的教材中解释的很明确,它的代码块"总是"被执行,而不考虑有没有异常发生。不执行finally代码块的情况只有一种,就是VM结束(执行System.exit()方法和机器关闭)。如果一个return语句嵌入在catch快内,则finally快的代码在return之前执行。
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>