JavaOOP 试题

本文涵盖Java面向对象编程(OOP)的关键概念,包括继承、封装、多态等特性介绍,以及访问修饰符、抽象类、接口等语法细节。同时探讨了异常处理、集合框架、数据库连接(JDBC)、线程管理和网络编程等方面的知识。

1)

以下属于OOP的特征有()。

 

a)继承

 

b)封装

 

c)多态

 

d)隐藏

 

2)

JavaOOP中的多态包括()

 

a)

方法重写

b

方法重载

 

c)

方法隐藏

d)

以上都不对

 

3)

Java中的访问修饰符包括( )。

 

a)

Public

b)

private

 

c)

protected

d)

internal

 

4)

Java中用于实现继承的关键字是。

 

a)

Extends

b)

implements

 

c)

:

d)

base

      

 

5)

以下有关Java继承的说法,正确的有

 

a)

Java中的继承是单一继承

 

b)

Java中的继承不是单一继承

 

c)

子类可以自动继承父类的全部方法和属性

 d)

构造方法和私有方法,私有属性不会被子类继承()

      

 

6)

Java中,在子类访问父类的关键字是。

 

a)super

 

b)base

 

c)this

 

d)this.parent

   

 

7)

在java中,如果有父类的引用指向子类的对象的情,以下说法正确的有

 

a)

如果用父类的引用调用子类的方法必须是重写的方法

b)

如果用父类的引用调用子类的方法必须是重载的方法

 

c)

如果用父类的引用调用子类的方法,不用重写也不用重载

d)

.在父类中写成虚方法,子类使用new关键字就隐藏(C++)

 

8)

以下关于Java重载的说法错误的有

 

a)

重载一般发生在一个类中

b)

重载的方法名称相同

 

c)

重载的方法的参数类型和个数相同

d)

重载的方法的返回类型相同(无要求)

      

 

 

9)

在Java 中,定义抽象类和抽象方法的关键字是。

 

a)abstract

 

b)final

 

c)virtual

 

d)interface

   

 

10)

Java中关于抽象类,以下说法不正确的的有(    )。

 

a)抽象类中可以没有抽象方法y

 

b)抽象类中可以实例方法(是正确的,即不加static or abstract)

 

c)有抽象方法的类一定是抽象类

 

d)抽象方法中一定有抽象类

   

 

11)

在java中有关抽象类和继承的说法正确的有(   )

 

a)抽象类不能够创建实例

 

b)如果子类继承了抽象类,必须实现父类中的全部抽象方法,否则子类也应声明成抽象类

 

c)可以用抽象类的引用指向实现了该抽象类的对象(是正确的)

 

d)一个类可以同时继承多个抽象类

   

 

12)

在java中有关接口的说法错误的有

 

a)定义接口使用interface关键字

 

b)接口的方法必须全部是抽象方法  (是y)

 

c)接口中可以包含非抽象方法

 

d)接口中的属性必须是常量

   

 

13)

在java中有关接口的说法错误的有

 

a)一个类可以同时实现多个接口

 

b)一个类只能实现一个接口 X

 

c)一个类可以先继承一个类并同时实现一个接口

 

d)一个类可以先实现一个接口再继承一个类  X (extends 先,implement 后)

   

 

14)

在try-catch-finally中,以下可以与finally一起使用的是()

 

a)

Try (only)

b)

catch

 

c)

throw

d)

throws

      

 

15)

下面代码运行结果是

public class Demo {

       public int add(int a,int b){

              try{

              return a+b;

              }

              catch(Exception e){

                     System.out.println("catch语句块");

              }finally{ System.out.println("finally语句块");}

              return 0;

       }     

       public static void main(String[] args) {

              Demo demo=new Demo();

              System.out.println("和是:\t"+demo.add(9,34));

       }

}

 

a)编译异常

 

b)finally语句块

  和是43

 

c)和是43

 

d)finally语句块

   

 

16)

以下对自定义的异常描述正确的是:(    )

 

a)自定义的异常必须继承Exception (X,亦可Throwable)

 

b)自定义的异常可以更加明确的定位异常出错的位置,同时给出详细的异常信息

 

c)自定义的异常类的父类可以继承Error (X,一般不拿来继承)

 

d)java中不能自定义异常类

 

17)

以下对log4j日志信息级别由高到低排列,确的是

 

a)

Error,warn,info,debug

b)

Info,debug,error,warn

 

c)

Warn,info,debug,error

d)

Debug,erro,warn,info

      

 

18)

以下在Java中每个基本数据类型与对应的封装类,对应不正确的有

 

a)int Integer

 

b)float Float

 

c)double Double

 

d)char Char (X,应该是Character)

   

 

19)

在Java中,有关装箱和拆箱说法正确的是

 

a)java中的八种基本数据类型有String,int,float,double,char,long,float

 

b)装箱是由基本数据类型转换为包装类

 

c)拆箱是由包装类转换为基本数据类型

 

d)以上说法都不正确

   

 

20)

以下对反射描述错误的是()

 

 

a)反射是程序在运行时能够获取自身信息的机制 y

 

 

b)通过反射可以获取类的结构,首先要取得类的Class对象 y

 

 

c)通过反射可以调取一个类中的方法  y

 

 

d)通过反射只能获取当前类的结构信息,可以获取当前类父类的结构信息

 

 

21)   

以下关于端口号和IP地址描述正确的是()

a)IP地址是用来区分不同计算机的标识       b) 端口号是用来区分不同计算机的标识

c)端口号是用来区分计算机中不同程序(à进程)的标识  d)IP是用来区分计算机中不同程序的标识                       

 

 

 

 

 

22)

 

 

 

23)  

 

 

 

 

 

24)

 

 

 

 

 

 

 

25)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

26

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27

 

 

 

 

 

 

28

 

 

 

 

 

29

 

 

 

 

 

 

30

 

 

 

31

 

 

 

 

32

 

 

 

 

 

33

 

 

 

 

 

 

34

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

 

 

 

 

 

 

 

36

 

 

 

 

 

 

37

 

 

 

 

 

 

38

 

 

 

 

 

39

 

 

 

 

 

40

 

 

 

 

 

 

41

 

 

 

 

 

 

 

 

 

42

 

 

 

 

 

 

 

43

 

 

 

 

 

 

44

 

 

 

 

 

                         

在Java集合框架中,下列属哪一个是属于集合框架的根接口

a)Collection                       b)Collections

c)Map                            d)Set

      

以下集合类以键值对形式存储的是

a.ArrayList (线性表)

b.HashSet(X,集合下属的接口。List线性表,Set集合无序)

c.Vector

d.HashMap

 

以下对HashMap和HashTable描述正确的是(     )。

a.HaspMap和HashTable均是以健值对形式存储数据

b.HashMap不允许有空键和空值(允许)       

c.HashTable不允许有空键和空值  (Y,不允许)

d. HashMap和HashTable中的键不允许重复

 

 

 

以下代码运的结果是(     )。

package com;

import java.util.*;

public class Demo {

       public static void main(String[] args) {

              Vector list=new Vector();  (线程安全的,速度慢;不安全的,快)

              list.add("a");

              list.add("b");

              list.add("c");

              list.add("d");

              System.out.println(list.capacity());  (capacity()容量,初始容量是10,会自动扩充)} //Size()则表示实际的数量

}

a.4     b.10      c.8      d.产生索引越界异常

 

以下代码的运行结果是(     )。

package com;

import java.util.*;

public class Demo {

       public static void main(String[] args) {

              LinkedList list=new LinkedList();

              list.add("a");

              list.add("b");

              list.add("c");

              list.add("d");

              for(int i=0;i<list.size();i++){  (该循环条件保证不越界)

                     System.out.print(list.remove(i));  (每移除一个,元素个数少一个。下标始终0就可以,避免越界)}

       }

}

a.abcd      b.ac  c.产生索引越界异常  d.bd

 

如果要给集合中的自定义对象排序,可以实现的方式有()。Collection的sort()

a)让该对象实现java.lang.Comparable接口,重写public intcompareTo(Object o)方法  (1:比o大,-1:比o小,0相等)

b)编写一个比较器实现Comparator接口,重写public int compare(Object o1, Object o2)方法

c)让该对象实现序列化接口,序列化后就可以排序 (X)

 d)自定义对象不能比较,只比较字符串和日期和时间类的对象(X)

在Java中,下列哪些接口是直接继承了Collection接口()。

a) List

b)  Map

c)  Set

d)  HashTable

 

以下对泛型描述正确的是()。

a)泛型可以解决数据安全性问题  X(解决数据类型安全)     

b)泛型是指声明类是不指定类中属性的具体类型,而是在声明及实例化对象时由外部指定类型 X

c)泛型定义包括泛型类定义和泛型对象定义两部分 X

d)以上说法都不正确

 

以下属于管理JDBC驱动程序的类是

a) java.sql.DriverManager                   c) java.sql.Connection   

c) java.sql.Statement                         d) java.sql.ResultSet

 

在Java数据库连接中,直接使用各个厂商提供的JDBC驱动程序,属于以下哪一种驱动(  )。

a) 本地协议纯JDBC驱动                c) JDBC网络驱动

c) 纯Java驱动                       d) jdbc-odbc桥驱动

 

以下在Java数据库连接用来执行Sql语句的对象是()

a) java.sql.Statement类的对象

b)java.sql.ResultSet类的对象

c)java.sql.Connection类的对象

d)java.sql.PreparedStatement类的对象

 

在Java数据库连接中,用来保存结果集的对象是(     )。

a) java.sql.ResultSet类的对象

b)java.sql.Statement类的对象

c)java.sql.Connection类的对象

d)java.sql.PreparedStatement类的对象

 

 

使用JDBC事务的步骤是(     )。  (同时修改两张表,运行两个SQL语句,要么同时成功,要么同时失败)

1)取消Connection的事务提交方式                  2) 发生异常回滚事务

3) 获取Connection对象                                     4)数据操作完毕后提交事务

a)1234    b)3124  c)2134  d)231

Connection con=DBUtil.getConn();  //取得数据库连接

Transaction trans=con.beginTransaction();

trans.setAutoCommit(false);   //设置自动为false

 

Pstmt=con.preparedStatement(sql1);

Pstmt.executeUpdate();   ///

Pstmt=con.preparedStatement(sql2);

Pstmt.executeUpdate(); //执行

如果异常,回滚

 

 

 

如果要把结果集设置成可任意滚动并允许更新,以下正确的设置是(     )。

a)con.preparedStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY)                    

b)con.preparedStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE)

c)con.preparedStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY)

d) 不用设置,默认就是的

 

存储过程pro有两个参数,第一个为输入参数,第二个为输出参数,以下代码正确的是()

a)    CallableStatement cst=con.prepareCall(“(call pro(?,?))”)

b)    CallableStatement cst=con.prepareCall(“(call pro(?))”)

c)    CallableStatement cst=con.prepareCall(“{call pro(?,?)}”)

d)    CallableStatement cst=con.prepareCall(“{call pro(?,?,?)}”)

 

在Java中编写实现序列化的类,正确的方法是(     )。

a)  可以使用[Serializable]特性将类标志为可序列化的

b) 继承Serializable类

c) 实现Serializable接口(能被序列化的对象所对应的类必须实现java.io. Serializable这个标识性接口)

d) 不用定义,Java中的类本身就可以序列化

 

关于RandomAccess类,描述正确的是(     )。

a) RandomAccessFile类支持”随机访问”文件的方式  (Y)

b) RandomAccessFile类只能访问文件,不能修改文件

c) RandomAccessFile类既可以随机访问文件,也可以随机修改文件

d) 使用RandomAccessFile类只能一次向文件中写入一个字符串

 

在Java中创建线程类的方式,正确的有()。

a) 继承Thread类,重写run方法

b) 实现Thread接口,实现run方法

c)继承Runnable类,重写run方法

d) 实现Runnable接口,实现run方法

 

在Java中,可以使线程阻塞的主法有(     )。

a) sleep方法;

b) wait方法  nodify

c) yield方法  (让步。不会阻塞。只是转成就绪态!)

d)start方法

 

 

Java中的线程同步包括() 

a)同步代码块

b)  同步方法

c)同步类

d) 同步对象

(锁定:public synchronized int add (int a,int b){

      Synchronized{ } //用在数据更新

}

 

 

以下对线程生命周期描述正确的有(   )

a)线程的生命周期人为就绪、运行、终止三种状态

b)线程的生命周期分为创建、就绪、运行、阻塞、终止五种状态 (Y )

c)线程生命周期中调用yeild方法可以使线程从运行状态转换至就绪状态

d)  以上说法都不正确

(线程的生命周期分为新建、可运行、阻塞、等待、超时等待、中止六种状态)

 

 

以下关于TCP程序设计,描述正确的是()

a) Java中采用TCP协议进行网络编程只能提供单向的通信

b)  采用TCP协议进行网络编程需提供服务器端和客户端

c) ServerSocket类存在于客户端

d) ServerSocket类用于Tcp服务器端  (Y)

   

 

以下对于UDP程序设计的描述,正确的是( )。

a)采用UDP协议进行网络编程能够保证数据的可靠传输 (X,不可靠)

b) DatagramPacket用于发送和接收信息 (Y)

c)DatagramSocket是UDP网络编程中的数据传输模式  (对象非模式)

d)UDP协议编程中需提供信息发送端和接收方

45)

 

 

 

 

 

 

46)

 

 

 

 

 

 

47

 

 

 

 

 

48

 

 

 

 

 

 

 

49)

 

 

 

 

 

50

以下对TCP和UDP协议描述正确的是()

a)    TCP不能提供数据的可靠性传输

b)    UDP能够保证数据的可靠性传输

c)    TCP数据传输效率高于UDP

d)    UDP数据传输效率高于TCP

(UDP是一种高传输速度,低可靠性的协议,可靠性只是简单的CRC校验

 

以下有关线程的描述错误的是(  )

a)    线程可以多次调用start方法(一个线程不能同时调用start方法)

b)    调用sleep方法可以使当前线程进入休眠状态y

c)    调用yield可以暂停当前运行的线程,而运行其他同级(或更高级)别线程

d)    线程的名称是系统自动分配的,不能自定义线程对象名称 (X) setname

 

 

以下对字节流、字符流描述错误的是(  )

a)    字节流、字符流是从文件传输的格式进行的划分

b)    字节流、字符流可以相互转换

c)    字符流操作数据不使用缓冲区

d)    字节流操作数据不使用缓冲区

 

以下关于对象序列化描述正确的是(   )

a)    使用FileOutputStream可以将对象进行传输

b)    使用PrintWriter可以将对象进行传输

c)    使用ObjectOutputStream类完成对象存储,使用ObjectInputStream类完成对象读取

d)    使用PrintWriter向文件写入数据时必须调用flush()方法

 

 

以下对JDBC事务描述错误的是()

a)    JDBC事务属于Java事务的一种

b)    JDBC事务属于容器事务类型

c)    JDBC事务可以保证操作的完整性

d)    JDBC事务是由Connection发起的,并由Connection控制

 

获取ResultSet对象rst的第一行数据, 以下正确的是(   )

a)    rst.hasNext()

b)    rst.next()

c)    rst.first()

d)    rst.nextRow()

 

 

 

 

     

 

开发阳光旅行网app中用户下单功能,可实现用户添加订单并完善出行人信息、修改订单,删除订单以及打印行程信息等功能。 具体功能要求如下: (1)显示系统主菜单 包括添加出行订单、查看我的出行订单、修改订单信息、删除出行人、查看行程、退出系统6项功能,其他功能本项目做要求,当用户选择功能编号后可进入执行相应功能。执行结果如图1所示。 图1 主菜单 (2)添加出行订单 填写出行日期、联系人手机号码、循环录入出行人信息。 出行人信息包括: 出行人别:成人、儿童(1.2m以下)、老人(65岁以上) 姓名 年龄(如选择别为老人,输入年龄足65岁的,显示提示信息“对起,老人订单年龄需为65岁以上!”) 如果是儿童,需确定是否占床 每成功录入一条出行人信息后,显示出其详细信息,并计算出行金额。定价如下: 成人:2000元/人 儿童:免费,如需占床另加30元 老人:半价,即1000元/人 当一条出行人信息录入完毕后,提示“是否继续添加(Y/N)?”,此处区分大小写,当输入y或Y时继续录入下一条,否则显示订单信息,包括: 出行日期 联系人手机号码 订单总金额(即所有出行人定单金额之和) 最后显示主菜单。执行效果如图2所示。 图2 添加出行订单 (3)查看我的出行订单信息 查看我的出行订单:查看所录入的订单信息。包括出行日期、联系人手机号码、所有出行人信息,运行效果如图3所示。 图3 查看我的出行订单 (4)修改行程信息 可修改出行日期、联系人手机号码,要求手机号码必须为11位,否则抛出异常信息,提示“手机号码必须为11位”,运行效果如果4所示。 图4 手机号码是11位 正确修改后,显示修改后的信息,并提示“修改成功!”。如图5所示。 图5 修改订单成功 (5)删除出行人 填写要删除的出行人姓名,执行删除操作,删除成功后给出提示“删除成功!”,如图6所示。如果输入姓名错误,则提示“对起,定单中包含此游客信息!”如图7所示。 图6 删除出行人成功 图7 删除出行人失败 (6)查看行程 显示本次旅行行程信息。运行效果如图8所示。 图8 查看行程 (7)退出系统 退出当前系统,显示“欢迎下次再来。”如图9所示。 三、要求与实现步骤 (一)使用数据库,使用对象和集合存储数据 (二)定义实体(成人订单、儿童订单、老人订单),儿童订单、老人订单为成人订单的子。实体至少包含但局限于以上3个。 (三)在各实体中均需实现各自计算订单价格、显示订单信息的方法,使用方法的重写。 (四)定义工具,实现查看我的出行订单、添加订单、修改行程信息、删除出行人、查看行程等方法。需使用到对象传参。 (五)使用泛型集合存储所有出行人信息,使用集合的遍历实现查看订单信息、统计订单总金额、删除出行人等功能。 (六)显示信息时,只有儿童出行人需显示是否占座,需使用面向对象多态实现。 (七)修改行程信息时,当手机号码录入错误时需使用throw手动抛出异常。 (八)定义测试,完成项目功能菜单以及整体流程,调用相应方法实现具体功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值