错题整理

错题整理

 1. 导出类调用基类的构造器必须用到的关键字():
	A.this	B.final	C.super	D.static
	答案选C: 基类就是父类,导出类就是子类,子类调用父类构造方法用super()关键字,且放在子类构造函数的第一行
	
 2. 在main()方法中给出的字节数组,如果将其显示到控制台上,需要():
	A.标准输出流System.out.printIn()
	B.建立字节输出流
	C.建立字符输出流
	D.标准输入流System.in.read()
	答案选A: out是java.lang.System类中的一个字段,out是标准输出流,public static final PrintStream out, out是PrintStream类型,PrintStream是包装流,传入什么就输出什么
	
 3. 下面的对象创建方法中哪些会调用构造方法?
	A.new语句创建对象
	B.调用Java.io.ObjectInputStream的readObject方法
	C.java反射机制使用java.lang.Class或java.lang.reflect.Constructor的newInstance()方法
	D.调用对象的clone()方法
	答案选AC: readObject方法是对象反序列化,clone()方法是拷贝,两者都是通过读取别的内存区域中的对象的各个区域来完成的
	
 4. StringBuffer类对象创建之后可以再修改和变动(正确✔)
	解析:String对象不可变、StringBuffer对象可变
	举例:
	String str = "aa"; str = "aa" + "bb"; 此时str的值为"aabb",但是"aabb"不是在开始的字符串"aa"后面直接连接的"bb",而是又新生成了字符串"aabb",字符串"aa"一旦被初始化,它的值就不会再改变。
	StringBuffer sb = new StringBuffer("aa"); sb.append("bb"),此时sb的值也为"aabb",但是"aabb"是直接在开始的字符串"aa"后面连接的"bb",没有生成新的字符串
	扩展:
	String、StringBuffer、StringBuilder都实现了CharSequence接口,String是个不可继承类(final修饰),也是不可变类(内部char数组被final修饰)
	StringBuffer和StringBuilder内部是一般的动态数组,所以可变,前者线程安全,后者效率更高但线程不安全。

/*
5. 下列代码输出结果为()
 A. 动物可以移动
	狗可以跑和走
	狗可以吠叫
 B. 动物可以移动
 	动物可以移动
 	狗可以吠叫
 C. 运行错误
 D. 编译错误
 答案选D: 父类型引用指向子类型对象,无法调用只在子类型里定义的方法
*/
public class Test {

	public static void main(String[] args) {
		Animal a = new Animal();
		Animal b = new Dog();
		a.move();
		b.move();
		b.bark();
	}
}

class Animal {
	public void move() {
		System.out.println("动物可以移动");
	}
}

class Dog extends Animal {
	public void move() {
		System.out.println("狗可以跑和走");
	}

	public void bark() {
		System.out.println("狗可以吠叫");
	}
}

 6. 下面字段声明中哪一个在interface主题内是合法的?
	A. private final static int answer = 42;
	B. public static int answer = 42;
	C. final static answer = 42;
	D. int answer;
	答案选B: 在接口中,属性都是默认public static final修饰的,
	A错误,不能用private修饰,
	B正确,属性默认public static final,这三个关键字可以省略,
	C错误,没写属性的类型,
	D错误,final修饰的属性必须赋值。
	
 7. 如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是()
 	A. void use(){...}
 	B. protected void use(){...}
 	C. public void use(){...}
 	D. 以上语句都可以用在类SmallCup中
 	答案选C: 实现接口要实现接口的所有方法,相当于重写方法,方法的重写需要满足:
 	两同一大一小(方法名、参数列表相同,返回类型、抛出异常 <= 重写前返回类型、抛出异常,访问权限 >= 重写前访问权限)

8. 有一个源代码,只包含 import java.util.*,对于这个import语句下面叙述正确的是()
	A. 只能写在源代码的第一句
	B. 可以访问java/util目录下及其子目录下的所有类
	C. 能访问java/util目录下的所有类,不能访问java/util子目录下的所有类
	D. 编译错误
	答案选C: 因为如果根目录和子目录下可能有同名类,若都能读取,则会混淆
	
9. 关于异常的编程,以下描述错误的是:()
	A. 在有除法存在的代码处,为了防止分母为零,必须抛出并捕获异常
	B. int i = Integer.parseInt("123a") 会产生 NumberFormatException
	C. int a[] = null; a[0] = 1; 将产生NullPointerException
	D. 输入输出流编程中,读和写时都要抛出IOException
	答案选A: Java 的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。
	运行时异常不需要程序员去处理,当异常出现时,JVM 会帮助处理,常见的运行时异常有:
	ClassCastException(类转换异常)
	IndexOutOfBoundsException(数组越界异常)
	NullPointerException(空指针异常)
	ArrayStoreException(数组存储异常,即数组存储类型不一致)
	非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为 Java 认为 Checked 异常都是可以被修复的异常,常见的有:
	IOException
	SqlException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值