填空题
- java类或接口继承时使用————关键字,类实现接口时使用————关键字。
- 面向对象的三大特征:、、____________。
- java源程序代码是有若干————组成。
- ————是关键字,是用来定义类的。
- 异常处理的五大关键字:——、—— 、——、——、—— 。
- 声明接口使用的关键字———— 。
- 抽象方法可以出现在———— 和————。
选择题
-
使用Java 语言编写的源程序保存时的文件扩展名是( )
a) .class
b) .java
c) .cpp
d) .txt -
设有数组的定义int[] a = new int[3],则下面对数组元素的引用错误的是( )
a) a[0]
b) a[a.length-1]
c) a[3]
d) int i=1; a[i] -
在类的定义中可以有两个同名函数,这种现象称为函数( )
a) 封装
b) 继承
c) 覆盖
d) 重载 -
设有说明语句int[] a = new int[6],则数组a包括了___ 个元素( )
a)0
b)5
c)6
d)7 -
下列类定义中,不正确的是( )
a)class x { … }
b)class x extends y { … }
c)class x implements y1,y2 { … }
d)public class x extends String { … } -
下列哪个声明是错误的:( )
a) int i = 10;
b) float f = 1.1;
c) double d = 32.2;
d) byte b = 127; -
有关于抽象方法的说法正确的是( )
a) 可以有方法体
b) 可以出现在非抽象类中
c) 是没有方法体的方法
d) 抽象类中的方法都是抽象方法 -
下列哪个不是java的关键字:( )
a) public
b) extends
c) main
d) class -
在java中,定义接口的关键是( )
a) abstract
b) interface
c) class
d) extends -
在java中,类可派生自一个父类,并实现( )个接口
a) 1
b) 2
c) 3
d) 任意多
判断题
- java抽象类是声明时必须使用abstract关键。( )
- java程序中,java.lang.Object是基类( )
- java中数组对象的长度是固定长度( )
- java程序类声明可以是多继承的( )
- 程序代码int[] a = new int[3];int b = a[3];是可以编译的,但不可以执行。()
- 类中声明的方法可以定义在类体外( )
- 在类体内声明成员变量时不允许赋值( )
- 抽象方法是一种只有说明而无具体实现的方法( )
- 抽象方法一定出现在抽象类中( )
- 最终类,最终方法和最终变量的修饰符都用final( )
- java编程语言中,finalize是一个关键字。( )
- java程序中,有抽象方法的类必须声明为抽象类。( )
- java ArrayList实现对象,下标索引总是从0开始的。( )
- java1.8规范中,接口只能包括全局常量和全局抽象方法。( )
- 程序代码List a=List.of(1,2,3);System.out.println(a[0]);程序输出结果1。( )
- ArrayList集合对象的元素可以是重复的。( )
- 接口声明中,声明变量可以不初始化。( )
- 接口方法全部是抽象的,不能有实现方法,可以不写abstract关键字。( )
- 抽象方法一定出现在接口中,只能出现一次。( )
- 最终类,最终方法和常量的修饰符都用finally关键声明。( )
简答题
- 简述方法的重载和方法的重写?
- java中实现多态的机制是什么?
- 什么是抽象类?什么是抽象方法?有什么特点?
- 请说出作用域public,private,protected,以及不写时的区别
- 是否可以从一个static方法内部发出对非static方法的调用?
- 简述this,super关键字用法
- 简述ArrayList和LinkedList特点?
- 简述final、finally、finalize特点及用法?
程序题
- 编程实现猜数游戏案例
- 编程实现对一个int[] a = new int[10]数组排序(排序方式没有要求,顺序没有要求)
- 判断输入的字符串是中文,英文,数字,其它字符(使用Scanner、正则表达式)
- 编程实现证明ArrayList和LinkedList优缺点?
- 编程实现猜数游戏,使用try catch处理异常。
答案
填空题
- extends implements
- 抽象(封装)、 继承、 多态
- 类
- class
- try catch finally throw throws
- interface
- 抽象类(abstract class) 接口(interface)
选择题
1.b 2.c 3.d 4.c 5.d 6.b 7.c 8.c 9.b 10.d
判断题
1.T 2.T 3.T 4.F 5.T 6.F 7.F 8.T 9.F 10.T
11.F 12. T 13. T 14.F 15.F 16.T 17.F 18.F 19.F 20.F
简答题
-
简述方法的重载和方法的重写?
override(重写)
(1)方法名、参数、返回值相同。
(2)子类方法不能缩小父类方法的访问权限。
(3)子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)
(4)存在于父类和子类之间。
(5)方法被定义为final不能被重写。overload(重载)
(1)参数类型、个数、顺序至少有一个不相同。
(2)不能重载只有返回值不同的方法名。
(3)存在于同类中。 -
java中实现多态的机制是什么?
Java实现多态有三个必要条件:继承、重写、向上转型。
继承:在多态中必须存在有继承关系的子类和父类。
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。
java中实现多态的机制是依靠父类或接口的引用指向子类。从而实现了一个对象多种形态的特性。其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法。
-
什么是抽象类?什么是抽象方法?有什么特点?
抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。
对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象
抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体 -
请说出作用域public,private,protected,以及不写时的区别
public 声明的为公共成员变量和函数成员,在整个类内类外都可使用。
private 声明的为私有成员变量和函数成员,只在声明的类内可以使用。
protected声明的为受保护成员变量和函数成员,类外不可使用。类内可以使用。
不使用关键字默认为类内使用
另外注意在继承的时候,他们的区别。
public 声明的在子类变为public
protected 声明的子类变为private
private 声明的在子类中不可用
-
是否可以从一个static方法内部发出对非static方法的调用?
不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,
才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以
直接调用
-
简述this,super关键字用法
(1) this调用本类中的属性,也就是类中的成员变量;
(2 )this调用本类中的其他方法;
(3) this调用本类中的其他构造方法,调用时要放在构造方法的首行。
(4) this 也可以调用你类的方法(本类没有的方法)
(5) super()调用父类无参构造方法,必须在子类的构造方法的第一行上,默认是可以不显示写super();
(6) super(参数列表),调用父类的指定的构造方法。 -
简述ArrayList和LinkedList特点?
1.ArrayList是Array(动态数组)的数据结构,LinkedList是Link(链表)的数据结构。
2.当随机访问List(get和set操作)时,ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
当对数据进行增加和删除的操作(add和remove操作)时,LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。
3.ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。
4.ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。
-
简述final、finally、finalize特点及用法?
一、定义上的区别
final是java关键字,用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。
finally是java中异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,如果子类中重写了该方法,在垃圾收集器执行的时候会调用被回收对象的此方法。二、用法上的区别
final
如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能同时被abstract和final修饰,被final修饰的类不能做为父类被继承但是它却可以继承其它的类。
如果一个方法被声明为final,那么该方法是不能被重写的,因此一个方法也不能同时被abstract和final修饰,被final修饰的方法可以被子类继承。
被声明为final的变量必须要进行初始化,而在以后的引用中只能读取,不可修改。
final变量未被初始化,编译时就会报错
非静态final变量初始化可以是直接赋值、代码块赋值、构造函数赋值
静态final变量初始化可以通过直接赋值、静态代码块赋值
finally
finally在异常处理语句中总是会被执行,只要程序进了异常处理语句,finally语句就一定会执行,就算try catch中存在return、continue、break这些可以改变程序执行顺序的关键字也不会影响finally语句执行,fianlly语句通常被用来关闭IO流、关闭数据库连接。
finalize
finalize在垃圾回收中,如果被回收的对象重写了finalize方法并且在finalize方法中重新建立了该对象与GC ROOT的连接,那么该对象是可以被复活一次的,也就是该对象会从收集阶段重新回到应用阶段
程序题
- 编程实现猜数游戏案例
import java.util.Random;
import java.util.Scanner;
public class While5 {
public static void main(String[] args) {
Random rand = new Random();
//.nextInt(int i) 返回int类型
//int num = rand.nextInt(10); //返回 0-9范围内的数字
//返回1-100范围内的随机整数数字
int start = 100;
int end = 1000;
int num = rand.nextInt(end-start+1) + start;
Scanner sc = new Scanner(System.in);
int i = 0;
while (true) {
++i;
System.out.printf("请输入数字[%d - %d]:", start, end);
//Scanner 类的实例对象 .nextInt() 是无参方法没有参数,返回一个int,内容是你键盘输入的数字
int t = sc.nextInt