测试题
- 写出重写和重载的英文单词,并简述各自的特性以及你所知道的编写规则
- 列出你所知道的创建线程的方式?
- 列出你所知道的产生死锁的条件?
- 简述equals与==的使用区别?
- 可以在hashcode中使用随机数字吗?为什么?
- 书写一个匹配只两位小数正实数的正则表达式:
- Java创建对象的方式
- 列出java内置数据类型并列出switch所支持的数据类型。
- 面向对象三个特征
测试题答案:
1. 写出重写和重载的英文单词,并简述各自的特性以及你所知道的编写规则
(答案)重写:Override,重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 [规则: 1. 参数列表必须完全与被重写方法的相同; 1. 返回类型必须完全与被重写方法的返回类型相同; 1. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。 1. 父类的成员方法只能被它的子类重写。 1. 声明为final的方法不能被重写。 1. 声明为static的方法不能被重写,但是能够被再次声明。 1. 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。 1. 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。 1. 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。 1. 构造方法不能被重写。 1. 如果不能继承一个方法,则不能重写这个方法。 ] 重载:Overload,重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。 [规则: 1. 被重载的方法必须改变参数列表(参数个数或类型不一样); 1. 被重载的方法可以改变返回类型; 1. 被重载的方法可以改变访问修饰符; 1. 被重载的方法可以声明新的或更广的检查异常; 1. 方法能够在同一个类中或者在一个子类中被重载。 1. 无法以返回值类型作为重载函数的区分标准。声明为static的方法不能被重写,但是能够被再次声明。 ]
2. 列出你所知道的创建线程的方式?
(答案)1、继承Thread类创建线程类[
(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。
(2)创建Thread子类的实例,即创建了线程对象。
(3)调用线程对象的start()方法来启动该线程。
]
2、通过Runnable接口创建线程类[
(1)定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。
(2)创建 Runnable实现类的实例,并依此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
(3)调用线程对象的start()方法来启动该线程。
]
3、通过Callable和Future创建线程[
(1)创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。
(2)创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。
(3)使用FutureTask对象作为Thread对象的target创建并启动新线程。
(4)调用FutureTask对象的get()方法来获得子线程执行结束后的返回值
]
3. 列出你所知道的产生死锁的条件?
(答案)1.互斥条件:一个资源每次只能被一个进程使用。 2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
4. 简述equals与==的使用区别?
(答案)值类型(int,char,long,boolean等)都是用==判断相等性。对象引用的话,==判断引用所指的对象是否是同一个。equals是Object的成员函数,有些类会覆盖(override)这个方法,用于判断对象的等价性。例如String类,两个引用所指向的String都是”abc”,但可能出现他们实际对应的对象并不是同一个(和jvm实现方式有关),因此用==判断他们可能不相等,但用equals判断一定是相等的。
5. 可以在hashcode中使用随机数字吗?为什么?
(答案)不行,因为同一对象的hashcode值必须是相同的
6. 书写一个匹配只两位小数正实数的正则表达式
(答案)/^[0-9]+(.[0-9]{2})?$/
7. Java创建对象的方式
(答案)new、反射、clone、序列化
8. 列出java内置数据类型并列出switch所支持的数据类型
(答案)byte、short、int、long、float、double、boolean、char。
9. 面向对象三个特征
(答案)封装、继承、多态
本文早期发布于个人 CSDN 博客:查看原文