《《JAVA基础》课程测试试卷及参考答案.docx》由会员分享,可在线阅读,更多相关《《JAVA基础》课程测试试卷及参考答案.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JAVA基础课程测试考试时间(180分钟)笔试:60分钟机试:120分钟总分(200分)笔试:100分机试:100分第一部分:笔试(60分钟)笔试答卷提交方式:请各位学员将答案写在A4纸上,写上姓名,切记在每个答案前带上题目的序号。一、 简答题(20题,每题5分,共100分)1、 short s = 1 ;s = s + 1 ;有错吗?为什么?short s = 1 ;s += 1 ;有错吗?为什么?有错,因为1是int类型,s+1会自动转换成int, 需要强转为short才能用s接收没有错,因为+=操作符,在解析时自动做了类型转换,等价于(short)(s+1) 。补充:在java编译器中:
2、byte short char 都会自动转成int,例如:short s = 1 ; s = s + s;也会报错!2、Java 中的 Math. round(-1. 5) 等于多少? -1.5介于-2和-1之间,四舍五入,所以结果是-13、请说下访问修饰符?Public 公共的,修饰的类和成员,在当前工程中都可以被访问Protected 受保护的,在子类和同包中可以被访问默认的,在同一个包中可以被访问Private 私有的,仅在当前类中可以被访问4、 final 在 Java 中有什么作用?1.修饰的变量会变为常量,必须在声明时赋初始值,且值不可修改2.修饰的方法,不可以被重写3.修饰的类,
3、不可以被继承5、 final、finally、finalize 有什么区别?1.final可以修饰类,方法和变量,表示不可改变。2.finally是异常处理时的一个代码块,出现在try-catch后面,不论是否发生异常,finally代码块都会被执行。3.finalize 是Object中的一个方法,当垃圾回收器从内存中清除一个对象时会调用该方法。6、 请列出5个常见的异常类?NullPointerException空指针异常ArrayIndexOutOfBoundsException 数组下标越界异常ArithmeticException 数学运算异常ClassCastException 类
4、型转换异常ClassNotFoundException 找不到指定类,常出现在反射中7、 = 和 equals 的区别是什么?=是比较运算符,比较的是两个对象的地址值是否相等。equals是Object中的方法,在Object中对于equals的实现也是调用= . 但该方法通常被其它类重写,例如String类,重写后的规则是比较两个字符串的内容是否相同。8、throw 和 throws 的区别?throw是主动声明一个异常对象。throws是异常的处理方式之一,用在方法名后面,表示向上抛出异常类型。9、下面的代码输出什么?String str6 = b; String str7 = a + s
5、tr6; String str67 = ab; System.out.println(str7 = str67 : + (str7 = str67);输出false,因为 String s= “a”+”b” 和 String s= “a”+str6不一样.String s= “a”+”b” 在编译阶段就会合并,和String s= “ab”是等价的。String s= “a”+str6,中str6是一个变量,在编译过程中不能合并,那么+运算符会用StringBuilder的append方法实现,即:String s=new StringBuilder().append(“a”).append(
6、str6).toString();且在toString方法中,是new String(),即创建了一个String对象。10、 下面的代码输出什么? final String str8 = b; String str9 = a + str8; String str89 = ab; System.out.println(str9 = str89 : + (str9 = str89); 输出true,因为str8是一个常量,在编译过程中就会合并在一起。即:a + str8 等价于 a +b 11、 接口和抽象类有什么区别?1.接口中只能有抽象方法和静态方法,以及default方法,不能有普通方法。
7、抽象类中可以有抽象方法,也可以有普通方法。2.接口中只能有public static final 修饰的常量,不能有变量。而抽象类中可以有变量和常量。3.抽象类只能单继承,即只能有一个直接父类;而接口可以多继承,即:可以继承多个接口。以上3个点是最核心的区别,当然还会有其它的细节上的区别。12、下面的代码输出什么?Integer i1 = 1 ;Integer i2 = 1 ;Integer i3 = 128 ;Integer i4 = 128 ;System.out.println(i1 = i2); System.out.println(i3 = i4);输出true和false.在Int
8、eger中有一个缓存区(Integer cache),范围是-128,127,如果给Integer变量赋值在这个范围内,则直接从数组中取对应的元素,所以前者输出为true.反之,如果不在这个范围内,则会new Integer(int) 新建一个对象,所以后者输出为false. 详情查看Integer.valueOf(int) 方法的源码。13、List Set Map的区别?List是有序集合,集合中的元素可以重复,有下标。Set是无序集合,集合中元素不可以重复,没有下标。Map集合中的元素是entry,即key-value构成的键值对,其中键不可以重复,没有下标。14、说下java中的集合?
9、1.集合是一个容器,可以盛放对象或数据,不约束类型,不约束长度。2.Collection接口是集合的顶层接口,下辖两个子接口:List和Set.3.List接口常用的实现类有ArrayList和LinkedList.一个是数组结构,一个是链表结构。4.Set接口常用的实现类有HashSet和TreeSet,一个是无序的,一个是有序的。5.还有一个接口是Map,常用的实现类有HashMap和TreeMap,一个使用hash算法,一个使用红黑树算法。15、说下HashTable HashMap的区别?Hashtable是一个线程安全的集合,单线程集合,速度慢,Hashtable集合不能存储null
10、值,null键。HashMap是线程不安全集合,是一个多线程集合,不过它的速度很快,可以存储null值,null键。补充:1.Hashtable和HashMap都是Map接口的实现类,底层都是哈希表。2.Hashtable集合逐渐被HashMap集合取代,但是Hashtable的子类Properties依然沿用,Properties集合也是唯一一个和IO流相结合的集合。16、HashMap(HashSet)用来装学生信息,人数在37-43人左右,请问如何初始化HashMap数量达到性能最优?答案:64 在创建HashMap(或HashSet)时,可以给一个初始容量,官方建议是2的n次幂,即:1
11、6,32,64,128.这些数据,如果元素个数超出了给定的容量,会自动扩容一倍,影响性能。 17、代码中有且仅有如下代码String s1 = new String(Hello); ,这行代码会创建几个字符串对象?2个,分别是: String s=”hello”; 和 String s1=new String(s); 其中s和s1都是字符串对象,他们也分别代表了字符串对象创建的2种方式。详情查看18、下面的代码输入什么?String s1 = abc;String s2 = new String(abc);s2.intern();System.out.println(s1 =s2);输出fal
12、se 19、 java中有几种访问修饰符以及它们区别 ?同第3题,此题应换题20、 重写跟重载的区别 ?重写:子类中可以重写父类的方法,要求子类中重写的方法和父类中被重写的方法:方法名相同,参数列表相同,返回值类型相同,且访问修饰符应相同或宽于父类。子类中重写的方法所抛出的异常只能是父类中方法抛出的异常类型或其子类。重载:同一个类中,方法名相同,但形参不同(形参个数不同,类型不同,顺序不同)的两个方法构成方法的重载。 第二部分:机试(120分钟)要求:编写一个控制台版本的ATM系统,并使用集合跟面向对象等知识实现如下功能,请保持较好的代码规范跟项目结构,总分100分。一、功能介绍1、程序运行时
13、,首先显示注册和登录的选择界面,运行效果如下:2、 选择1进入注册功能,用户输入账户和密码进行注册,需要检查账户是否已存在,账户存在提示用户重新输入账户名,反之则注册成功,并通过账户名称提示创建账户成功,运行效如下:3、选择2进入登录功能,用户输入账号和密码进行登录,账号和密码不正确时提示登录失败,提示重试;反之登录成功,登录成功之后进入ATM主界面,运行效果如下:3、 选择1菜单,可根据密码查询当前用户的余额,需要判断输入的密码是否正确,运行效果如下:4、 选择2菜单,可进行存款操作,输入存款金额即可存入,运行效果如下:5、 选择3菜单,可以根据提供的账号进行转账操作,转账之前需要判断当前账户的余额是否大于转账金额,余额不足时提示重新输入转账金额,运行效果如下:6、 输入#exit#返回注册登录界面,运行效果如下:7、 已登录的用户在任何位置输入#menu#可以返回主菜单,每个菜单操作完成之后都需要显示主界面的功能菜单选项。二、 注意事项:1、 注意代码格式规范、命名规范,要求分层。2、 仔细审题,把题目的功能要求理解准确三、 评分标准:序号功能描述分值1账户注册登录25分2主界面列表10分3查询余额15分4根据账户存款20分5根据账户号码转账20分6代码规范10分总分100分