2019年10月30日_java_5
考点1
_______意味着一个操作在不同的类中可以有不同的实现方式。
- A 多态性
- B 多继承
- C 类的组合
- D 类的复用
正确答案: A
解析
类的复用有两种方式:组成(has-a)和继承(is-a)
1)组成就是在新的类中直接创建旧类的对象,这里我们复用的只是代码的功能而不是它的形式。
2)继承是在原有的类的基础上建立一个新类,新类具有旧类的形式,但也加入了一些新的特性。
继承
指一个新的类继承原有类的基本特性,并增加了新的特性。(Java不允许多继承,而C++可以)
多态性
指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
1)多态存在的三个必要条件
①要有继承 ②要有重写 ③父类引用指向子类对象(向上转型)
2)实现多态性的三种形式
- ①方法的重载
- ②通过继承机制而产生方法覆盖
- ③通过接口实现方法覆盖
3)多态的分类
多态分为编译时多态和运行时多态。其中
编译 - 时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编译之后会变成两个不同的函数,在运行时谈不上多态。
- 而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们平常所说的多态性。
多态的本质是:一个程序中同名的不同方法。在面向对象的程序设计中,多态主要有以下三种方式来实现。
- 通过子类对父类方法的覆盖来实现多态。
- 通过一个类中方法的重载来实现多态。
- 通过将子类的对象作为父类的对象实现多态。
方法中的成员变量不具备多态性,因为变量不会被重写,在编译时有两块存储堆内存,并取决于编译时所声明变量类型。和运行时对象的变量不是一块内存区域。简洁得来说,不能重写就没法表现出多态。
考点2
以下关于java封装的描述中,正确的是:
- A 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性
- B 封装的意义不大,因此在编码中尽量不要使用
- C 如果子类继承父类,对于父类中进行封装的方法,子类仍然可以直接调用
- D 只能对一个类中的方法进行封装,不能对属性进行封装
正确答案: A
解析
什么是封装
封装就是将属性私有化,提供公有的方法访问私有属性。所以CD错误。
如何实现封装
做法就是:
修改属性的可见性来限制对属性的访问,
并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问。
如:
1 | private String name; |
为什么需要封装
通过封装,可以实现对属性的数据访问限制,同时增加了程序的可维护性。
由于取值方法和赋值方法隐藏了实现的变更,因此并不会影响读取或修改该属性的类,避免了大规模的修改,程序的可维护性增强
考点3
java 语言使用的字符码集是
- A ASCII
- B BCD
- C DCB
- D Unicode
正确答案: D
解析
考点4
如果int x=20, y=5,则语句System.out.println(x+y +””+(x+y)+y); 的输出结果是()
- A 2530
- B 55
- C 2052055
- D 25255
正确答案: D
解析
1)不论有什么运算,小括号的优先级都是最高的,先计算小括号中的运算,得到x+y +””+25+y
2)任何字符与字符串相加都是字符串,但是是有顺序的,字符串前面的按原来的格式相加,字符串后面的都按字符串相加,得到25+””+25+5
3)上面的结果按字符串相加得到25255
考点5
以下哪一项正则能正确的匹配网址: http://www.bilibili.com/video/av21061574 ()
- A
/^(https?:\/\/)?([a-zA-Z\d]+).bilibili.com\/?video\/av(\D{1,8})\/?$/
- B
/^(http:\/\/)?(\w+)\.bilibili\.com\/?video\/av(\d{1,8})\/?$/
- C
/^(https?:\/\/)?(\w+)\.bilibili\.com\/?\w*$/
- D
/^(http:\/\/)?([a-zA-Z\d]+).bilibili.com\/?video\/av\w*\/+$/
正确答案: B
解析
考点6
下列代码执行结果为()
public static void main(String args[])throws InterruptedException{
Thread t=new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.print(“2”);
}
});
t.start();
t.join();
System.out.print("1");
}
- A 21
- B 12
- C 可能为12,也可能为21
- D 以上答案都不对
正确答案: A
解析
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。
join()可以理解为先执行,t.join();
可以理解为先执行t线程。则main线程等待
考点7
关于继承的说法正确的是()。
- A 子类将继承父类所有的数据域和方法。
- B 子类将继承父类的其可见的数据域和方法。
- C 子类只继承父类public方法和数据域
- D 子类只继承父类的方法,而不继承数据域
正确答案: A
解析
在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,但是你并不能使用。所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有的属性及方法的说法是错误的。可以继承,只是无法访问到而已。
考点8
ArrayLists和LinkedList的区别,下述说法正确的有?
- A ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
- B 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
- C 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
- D ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
正确答案: ABCD
解析
考点9
Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是()。
- A 加载Servlet类及.class对应的数据
- B 创建servletRequest和servletResponse对象
- C 创建ServletConfig对象
- D 创建Servlet对象
正确答案: ACD
解析
Servlet的生命周期一般可以用三个方法来表示:
- init():仅执行一次,负责在装载Servlet时初始化Servlet对象
- service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。
- destory():在停止并且卸载Servlet时执行,负责释放资源
- 初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法。所以选ACD。B是在调用service方法时才构造的