文章目录
- 一、程序分析题(20)
- 项目结构
- 分析题01
- 分析题02
- 分析题03
- 分析题04
- 二、程序改错题(20分)
- 项目结构
- 改错题01
- 改错题02
- 改错题03
- 改错题04
- 改错题05
- 改错题06
一、程序分析题(20)
项目结构
分析题01
代码
packageProgramAnalysis;/** * 写出这段代码在干什么: * 1、定义一个二维数组arr,包含3行3列的整数。 * 2、使用嵌套循环遍历数组,将所有元素累加起来。 * 3、打印出累加的结果。 */publicclassT1{publicstaticvoidmain(String[]args){int[][]arr={{10,20,30},{11,21,31},{12,22,32}};intsum=0;for(inti=0;i<arr.length;i++){for(intj=0;j<arr[i].length;j++){sum+=arr[i][j];}}System.out.println("sum="+sum);}}运行结果
分析题02
代码
packageProgramAnalysis;/** * 对数字54321的各位进行处理并累加计算,把数字每一位与递减的t值相加后累计 */publicclassT2{publicstaticvoidmain(String[]args){intA=54321,sum=0,t=10;while(t>0){sum+=A%10+t;A/=10;t/=10;}System.out.println(sum);}}运行结果
分析题03
代码
packageProgramAnalysis;/** * 演示Java的异常处理机制:通过自定义除法方法主动抛出除数为零的算术异常, * 再在main方法中用try-catch捕获不同类型的异常, * 同时利用finally块保证特定代码无论异常是否发生都会执行。 */publicclassT3{publicstaticvoidmain(String[]args){try{intresult=divideNumbers(4,0);System.out.println("计算结果 = "+result);}catch(ArithmeticExceptione){System.out.println("捕获算术异常: "+e.getMessage());return;}catch(Exceptione){System.out.println("捕获其他异常: "+e.getMessage());return;}finally{System.out.println("执行finally块");}System.out.println("程序继续执行");}privatestaticintdivideNumbers(intdividend,intdivisor){if(divisor==0){thrownewArithmeticException("除数不能为零");}returndividend/divisor;}}运行结果
分析题04
代码
packageProgramAnalysis;/** * 实现了自定义类的封装、对象实例化,并通过重写toString()改变了对象打印时的输出结果 */publicclassT4{publicstaticvoidmain(Stringargs[]){Dolldoll=newDoll("Kitty",2);System.out.println(doll);}}classDoll{Stringname;intage;publicDoll(Stringname,intage){this.name=name;this.age=age;}publicStringtoString(){returnthis.name;//只返回了name}}运行结果
二、程序改错题(20分)
项目结构
改错题01
修改前代码
修改后代码
考察知识点:构造函数,构造函数的定义P92:
1、 构造方法的名称必须与类名一致;
2、 构造方法名称前不能有任何返回值类型的声明;
3、 不能在构造方法中使用return返回一个值,但可以单独写return语句作为方法的结束。
改错题02
修改前代码
修改后代码
考察知识点:静态方法p106:
main方法的静态特性
• main方法是Java程序的入口方法,必须被声明为static,属于类的静态成员,而非对象的成员。
• 静态方法在执行时,不需要创建类的实例,直接通过类名(或省略类名)调用。静态方法调用规则
• 静态方法只能直接调用同类的静态方法/静态变量,不能直接调用非静态方法/非静态变量(因为非静态成员属于对象,需要先创建对象才能调用)。
• 这段代码中add方法被声明为static,因此main方法可以直接调用;若add方法去掉static(变为非静态),代码会编译报错。方法的访问修饰符与参数
• add方法用private修饰,表明该方法仅能在T2类内部被访问,外部类无法调用。
• 方法参数的a:1、b:2是代码中的标注(非Java语法),实际调用时只需传入1和2即可,正确写法为add(1, 2)。静态方法的本质
• 静态方法属于类级别,存储在方法区,类加载时就会初始化;非静态方法属于对象级别,创建对象时才会分配内存。
改错题03
修改前代码
修改后代码
考察知识点:抽象类的方法p123:
1、包含抽象方法的类必须是抽象类。
2、生命抽象类和抽象方法时都要使用abstract关键字修饰。
3、抽象方法只需要声明而不需要实现。
4、如果一个非抽象类继承了抽象类之后,那么该类必须重写抽象类中的全部抽象方法。
改错题04
修改前代码
修改后代码
考察知识点:throw关键字p155:
1、当throw关键字抛出的异常是编译异常时,有两种处理方式:第一种是在try代码块里使用throw关键字抛出异常,通过try代码块捕获该异常;第二种是在一个有throws声明的方法中使用throw关键字抛出异常,把异常交给该方法的调用者处理。
2、当throw关键字抛出的异常是运行异常时,程序既可以显式使用try…catch语句捕获并处理该异常,也可以完全不理会该异常,而把该异常交给方法的调用者处理。
改错题05
修改前代码
修改后代码
考察知识点:浮点数常量P32:
Java中的浮点数分为单精度浮点数(float) 和双精度浮点数(double) 两种类型。
其中,单精度浮点数后面以 F 或 f 结尾,而双精度浮点数则以 D 或 d 结尾。
改错题06
修改前代码
修改后代码
考察知识点:final关键字P120:
Java中被final修饰的变量为常量,常量只能在声明时被赋值一次,在后面的程序中,常量的值不能被改变。
使用final关键字时需要注意以下几点:
(1) 使用final关键字修饰的类不能有子类
(2) 使用final关键字修饰的方法不能被子类重写
(3) 使用final关键字修饰的变量是常量,常量不可修改