JAVA_错题集_01

1.java中对象的比较

class A{
 public A(String str) {}
}
public class Test {
 public static void main(String[] args) {
 A classa = new A("he");
 A classb = new A("he");
 System.out.println(classa == classb);
 }
}
//打印结果为 false
//classa和classb都为引用变量,其保存的都是他们对应对象的地址信息,地址信息不同,所以返回false

2.关于final

修饰类class
  该类不能被继承
  类中的方法不能被覆盖
修饰方法method
  该方法可以被继承,但是不能被覆盖
  一个类不允许子类覆盖其方法是,用final修饰
修饰变量variable
  用final修饰后变为常量,包括静态变量、实例变量和局部变量
  可以先声明,但是使用时必须赋值,赋值后不能改变,假如是成员变量,则必须写相应的构造方法进行初始化,否则报错
修饰参数arguments
  用final修饰的参数,只有get方法,没有set方法,也就是只能读取该参数,不能修改该参数

3.关于static语句块,语句块,子类构造方法,父类构造方法的执行顺序

class A {
	public A() {
		System.out.println("class A");
 	}
{
	System.out.println("I'm A class");
}
static {
	System.out.println("class A static");
}
}
public class B extends A {
	public B() {
		System.out.println("class B");
	}
	{
		System.out.println("I'm B class");
	}
	static {
		System.out.println("class B static");
	}
	public static void main(String[] args) {
		new B();
	}
}
//存在static静态语句块时,优先加载static语句块,当然父类的静态语句块优先于子类的静态语句块,
//其次,由于这里new了子类对象,那么先去其父类中,非静态语句块的优先级高于构造方法,
打印结果为:
class A static
class B static
I'm A class
class A
I'm B class
class B
分析:
静态代码块—>非静态代码块—>构造方法     父类优先于子类

4.接口与类的关系

接口与类的关系
接口的定义 interface
类的定义class
从定义时使用的关键字可知,接口并不属于类
 
类是接口的实现
实现接口的类中,覆盖了接口的方法,也就是重写了接口的方法。
当一个类实现了两个接口时,且两个接口中有重名的方法(但是返回值类型不同,参数列表相同)即不构成重写的前提条件,那么,该类无法同时实现这两个接口
假如多个接口中有同名的方法且返回值参数列表都一致时,实现的子类只需实现一次即可,即子类的方法同时重写了两个接口中的方法

5.下⾯字段声明中哪⼀个在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,假如没有写,那么系统会默认为该变量加上public static final修饰符,正因为会默认修饰,所有在定义时可以省略。 以上默认修饰符也包括对方法的修饰。

6.尝试编译一下程序会产生怎么样的结果?

public class MyClass {
	long var;
	public void MyClass(long param) {
		var = param;
	}//(1)
	public static void main(String[] args) {
		MyClass a, b;
		a = new MyClass();//(2)
		b = new MyClass(5);//(3)
	}
}

分析:编译错误将在(3)出发生,因为该类没有int型的构造方法
   代码中 public void MyClass(long param){}方法并非构造方法,因此JVM会提供一个默认的无惨构造方法,因此(2)处不会报错,但是该类不存在一个接收int型的构造方法,(3)处报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值