Day42--试卷错题
Day42--试卷错题
Java 基础语法试卷
二、填空题(每题 3 分,共 30 分)
-
已知一个
ArrayList集合list,要获取集合中元素的个数,可以使用list._length_________方法。××××××××××××××××××××××××××××××××××××
在
ArrayList集合中,要获取元素的个数,应该使用的方法是size(),正确的写法是**list.size()** -
如果要在子类中调用父类的构造方法,可以使用__________关键字。
在子类中调用父类的构造方法,需要使用的关键字是 “
super”,
三、简答题(每题 10 分,共 30 分)
-
简述 Java 中
public、private、protected修饰符的作用和区别。-
public:被public修饰的类、成员变量和方法可以在任何类中被访问 -
private:被private修饰的成员变量和方法只能在其所属类的内部被访问,外部类无法直接访问,让类内部的数据只能通过类自身提供的公共方法(比如get、set方法等)来间接操作 -
protected:被protected修饰的成员变量和方法可以在其所属类、子类以及同一个包中的其他类中被访问。它提供了一种介于public和private之间的访问权限,子类可以继承并访问父类中protected修饰的成员
-
-
解释 Java 中的异常处理机制,包括
try-catch-finally语句块的执行流程。- 首先执行
try块中的代码,如果在try块中没有发生异常,则跳过catch块,直接执行finally块(如果有finally块),然后继续执行try-catch-finally语句块之后的代码。 - 如果在
try块中发生了异常,则立即停止try块中剩余代码的执行,根据异常的类型去匹配catch块中的异常类型,如果匹配成功,则执行对应的catch块中的代码,处理完异常后,再执行finally块(如果有)。如果没有匹配到合适的catch块,则异常会向上层抛出,直到被处理或者导致程序终止。 finally块中的代码无论是否发生异常都会被执行,通常用于释放资源等操作,如关闭文件流、数据库连接等,哪怕try块中使用了return语句,finally块依然会执行,并且如果finally块中有return语句,会覆盖try或catch块中的return结果哦(这是个容易混淆的点,也可以提及一下)。
- 首先执行
-
描述 Java 中方法的参数传递方式,是值传递还是引用传递?并举例说明。
- 回答指出了是值传递这点正确,但举例可以更详细完善些呀,例如:
- 对于基本数据类型,传递的是实际的值,在方法内部对参数的修改不会影响到方法外部的变量。比如:
public class Main { public static void changeValue(int num) { num = 10; } public static void main(String[] args) { int value = 5; changeValue(value); System.out.println(value); // 输出仍然是 5,因为传递的是值的副本,方法内修改不影响外部变量 } }- 对于引用数据类型,传递的是对象的引用地址的副本,虽然在方法内部可以通过引用修改对象的属性,但如果在方法内部重新赋值引用变量,不会影响到方法外部的引用变量。例如:
public class Main { public static void changeArray(int[] arr) { arr[0] = 10; // 修改数组元素,通过引用修改了对象(数组)的属性,外部能看到变化 arr = new int[]{20, 30}; // 重新赋值引用变量,相当于让方法内的引用指向了新的数组对象,不会影响外部的引用 } public static void main(String[] args) { int[] array = {1, 2, 3}; changeArray(array); System.out.println(array[0]); // 输出 10,因为前面修改了数组元素生效了,但重新赋值引用没影响外部引用 } } - 回答指出了是值传递这点正确,但举例可以更详细完善些呀,例如:
四、编程题(每题 10 分,共 10 分)
编写一个Java程序,定义一个Rectangle类,包含私有属性length(长)和width(宽),提供公共的get和set方法用于获取和设置属性值,以及一个计算矩形面积的方法getArea。在main方法中创建Rectangle类的对象,设置长和宽的值,并输出矩形的面积。
package com.liu.exercise;
//一个`Java`程序,定义一个`Rectangle`类,
// 包含私有属性`length`(长)和`width`(宽),提供公共的`get`和`set`方法用于获取和设置属性值,以及一个计算矩形面积的方法`getArea`。
// 在`main`方法中创建`Rectangle`类的对象,设置长和宽的值,并输出矩形的面积。
public class Rectangle {
private int length;
private int width;
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getArea(int a,int b){
return a*b;
}
public static void main(String[] args) {
Rectangle s1 = new Rectangle();
s1.width=3;
s1.length=7;
System.out.println("要计算的矩形面积为:"+s1.getArea(s1.length, s1.width));
}
}
上面的代码有些问题
getArea方法参数问题:
在Rectangle类中的getArea方法,它不应该接收额外的参数a和b呀,因为这个方法是用于计算当前Rectangle对象的面积,它应该直接使用类中的length和width属性来计算,所以方法定义修改为public int getArea() { return length * width; }更合适,这样更符合面向对象的设计思路,通过对象自身的属性来完成相关计算操作。
答案:
一、选择题
- C 2. A 3. A 4. C 5. A 6. C 7. C 8. A 9. C 10. A
二、填空题
- String
- a + b
- continue
- String msg
- size
- 1, 2, 3
- 平方根
- super
- 自动
- 1
三、简答题
-
public:被public修饰的类、成员变量和方法可以在任何类中被访问,具有最大的访问权限。private:被private修饰的成员变量和方法只能在其所属类的内部被访问,外部类无法直接访问,实现了数据的封装和隐藏。protected:被protected修饰的成员变量和方法可以在其所属类、子类以及同一个包中的其他类中被访问。它提供了一种介于public和private之间的访问权限,用于在继承关系中控制成员的可见性。
-
- Java 的异常处理机制用于处理程序运行过程中可能出现的错误情况,使程序能够更加健壮和稳定。
try-catch-finally语句块的执行流程如下:- 首先执行
try块中的代码,如果在try块中没有发生异常,则跳过catch块,直接执行finally块(如果有finally块),然后继续执行try-catch-finally语句块之后的代码。 - 如果在
try块中发生了异常,则立即停止try块中剩余代码的执行,根据异常的类型去匹配catch块中的异常类型,如果匹配成功,则执行对应的catch块中的代码,处理完异常后,再执行finally块(如果有),然后继续执行try-catch-finally语句块之后的代码。如果没有匹配到合适的catch块,则异常会向上层抛出,直到被处理或者导致程序终止。 finally块中的代码无论是否发生异常都会被执行,通常用于释放资源等操作,如关闭文件流、数据库连接等。
- 首先执行
- Java 中方法的参数传递方式是值传递。
- 对于基本数据类型,传递的是实际的值,在方法内部对参数的修改不会影响到方法外部的变量。例如:
public class Main {
public static void changeValue(int num) {
num = 10;
}
public static void main(String[] args) {
int value = 5;
changeValue(value);
System.out.println(value); // 输出仍然是 5
}
}
- 对于引用数据类型,传递的是对象的引用地址的副本,虽然在方法内部可以通过引用修改对象的属性,但如果在方法内部重新赋值引用变量,不会影响到方法外部的引用变量。例如:
public class Main {
public static void changeArray(int[] arr) {
arr[0] = 10; // 修改数组元素
arr = new int[]{20, 30}; // 重新赋值引用变量,不会影响外部的引用
}
public static void main(String[] args) {
int[] array = {1, 2, 3};
changeArray(array);
System.out.println(array[0]); // 输出 10
}
}
四、编程题
class Rectangle {
private double length;
private double width;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getArea() {
return length * width;
}
}
public class Main {
public static void main(String[] args) {
Rectangle rectangle = new Rectangle();
rectangle.setLength(5.0);
rectangle.setWidth(3.0);
System.out.println("矩形面积为:" + rectangle.getArea());
}
}
你可以根据这份试卷进行自我测试和学习巩固,如有疑问可以随时向我提问。

浙公网安备 33010602011771号