选择题(共15题,每题2分)
( B ) 1、使用下面哪个表达式能产生[20,999]之间的数?
A.(int)(20+Math.random( )*979) B.20+(int)(Math.random( )*980)
C.(int)Math.random( )*999 D.20+(int)Math.random( )*980
( C )2、请仔细阅读下面的程序代码,若经过编译和运行后,打印结果为?
Public class Test{
Public static void main(String [] args){
Int[]a={1,2,3,4,5};
Int s=1;
For(int c:a){
S*=c;
System.out.print(s);
} }
A、115 B、118、 C、120 D、122
( C )3、如果一个程序中有多个catch语句,则程序会出现按如下那种情况执行?
A、找到合适的异常类型后继续执行后面的catch语句
B、找到每个符合条件的catch都执行一次
C、找到合适的异常类型处理后就不再执行后面的catch语句
D、对每个catch都执行一次
( D )4、对于异常处理语句 try - catch - finally,下面哪个说法是正确的?
A、如果有多个catch语句,对所有的catch都执行一次
B、如果有多个catch语句,对每个符合条件的catch都会执行一次
C、多个catch的情况下,异常类的排序顺序应该是父类在前,子类在后
D、一般情况下,finally部分都会被执行一次
( D )5、下列哪些操作不会抛出异常?
A、打开不存在的文件 B、用负数索引访问数组
C、浮点数除以0 D、浮点数乘以0
( B )6、程序员将可能发生异常的代码放在( )块中,无论如何都需要执行的代码在( )块中?
A、catch try B、try finally C、try exception D、try final
( B )7、如果执行下面的example方法时,unsafe( )有异常,则输出结果是?
Public void example(){
Try{
Unsafe( );,,..
System.out.print(“1”);
} catch(exception e){
System.out.print(“2”);
}finally{
System.out.print(“3”); }
System.out.print(“4”); }
A、123 B、234 C、23 D、34
( B )8、下面关于set集合处理重复元素的说法正确的是?
A、如果加入一个重复元素,将抛出异常
B、如果加入一个重复元素,add方法将返回false
C、集合通过调用equals方法可以返回包含重复值的元素
D、添加重复值将导致编译错误
( A )9、以下哪个方法是Vector类中增加一个新元素的方法?
A、addElement B、insert C、append D、addItem11
( B )10、欲创建ArrayList类的一个实例,此类继承了list接口,下列哪个语句是正确的?
A、ArrayList myList = new Object( );
B、List myList = new ArratList( );
C、ArrayList myList = new List( );
D、List myList = new List( );
( C )11、 写出下面程序标记为1到6的执行顺序
Public class UsingExceptions{
Public static void main( String args[]){
Try{
Method1(); //1
}catch(Exception e){
System.out.println(e.getMessage( )); //2
}finally{
System.out.println(“program is end”); //3
} }
Public static void method1()throws Exception{
Method2( ); //4
}
Public static void method2( )throws Exception{
Method3( ); //5
}
Public static void method3( )throws Exception{
Throw new Exception(“Exception thrown in method3”); //6
} }
A、1,2,3,4,5,6 B、1,2,6,4,5,3 C、1,4,5,6,2,3 D、1,4,2,3,5,6
( B )12、 下列String类的()方法返回指定字符串的一部分?
A、extractstring( ) B、substring( )
C、Substring( ) D、Middlestring( )
( BD)13、执行下列代码后,哪个结论是正确的 ? String[] s=new String[10];
A、 s[10] 为 ""; B、 s[9]为 null;
C、 s[0]为未定义 D、s.length为10
( D )14、在java语言中,下列语句中正确的是哪个?
A、 String temp[]=new String{"a" "b" "c"};
B、 String temp[]={"a" "b" "c"};
C、 String temp={"a" "b" "c"};
D、 String temp[]={"a","b","c"};
( C )15、下面的哪些方法可以判断的对象的内容和类型是否一致。
A、两个对象的属性的值是否相等可以通过==比较
B 、String类的equals()方法可以比较两个String对象的内容是否相等
C、Object的equals()方法在两个对象的内容一致时返回true。
D、类File重写方法equals()在两个对象的内容和类型一致时返回true。
二、简答题(共10题,每题3分)
简述方法的重载与重写。
重写:
发生在父类与子类之间。
方法名,参数列表,返回值类型必须相同。
访问修饰符的限制一定要大于被重写方法的访问。
重写方法一定不能抛出新的检查异常或者被重写方法申明更加宽泛的检查型异常。
重载:
重载Overload是一个类中多态性的一种表现
重载要求同名方法的参数列表不同(参数类型,参数个数,甚至是参数顺序)
重载的时候,返回值类型可以相同也可以不同,无法以返回型别作为重载函数的区分标准。
2、异常的分类。
一:异常父类:Throwable,有两个子类
Error:严重问题
Exception:非严重问题
二:Exception
运行时异常:是RuntimeException以及RuntemeException的子类
非运行时异常:编译器异常,非RuntimeException
三:编译器异常和运行期异常
编译器异常必须对其处理,如果不处理,程序不能运行。
运行期异常可以对其处理也可以 不处理。
3、捕获异常的方法。
1、try....catch
try{
可能发生异常的代码
}catch(可能出现异常的类型 标识符){
这种异常出现之后的处理方式
}
没有异常,直接打印try中的内容,再打印后续内容(catch中不执行,不需要捕获)在往下执行正常代码
2、try....catch...catch
try{
可能出现异常的代码
}catch(异常类型1 异常对象名1){
异常类型1出现之后的处理方法
}catch(异常类型2 异常对象名2){
异常类型2出现之后的处理方法
}.....
}catch(异常类型n 异常对象名n){
异常类型n出现后的处理方法
}
执行try中的内容,如果没有异常,try...catch语句直接结束,如果有异常,那么就在发生异常的代码位置直接跳转到catch块中,try中后面的代码就不再继续运行了,继续匹配各个catch块中的异常类型,从上到下,一旦匹配到某个catch声明的异常类型,就直接执行该catch块的处理方式。处理完成之后,try...catch语句就直接结束了,不会再去匹配后面其他的catch块的异常类型。
try...catch...finally
try{
可能发生异常的代码
}catch(可能发生的异常类型 异常对象名称){
当前异常类型的处理方式
}finally{
一定要执行的
}
finally:一定要执行的代码
finally:也是一个代码块,在这个代码块中的代码,一定会执行,无论上面描述的哪种情况都会执行,甚至在代码中有return语句,都会先执行finally中的代码。
try...finally
try{
可能发生异常的代码
}finally{
一定要执行的代码
}
4、有哪些集合类型
1、List(有序,可重复)
List里存放的对象是有序的,同时也是可以重复的。List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所有插入删除数据速度慢。
2、Set(无序,不能重复)
Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。
3、Map(键值对,键唯一,值不唯一)
Map集合里存放的是键值对,键不能重复,值可以重复。根据键得到值,对map集合遍历时先得到键的set集合,对set集合进行遍历,得到相应的值。
5、String和StringBufer的区别
String:
String创建的对象是不可变的,一旦创建不可改变。
对象值可以改变其实是创建了一个新的对象,然后把新的值保存进去。
String类被final修饰,不可以被继承
String运行时间较长
String适用于比较短而小的字符串。
StringBuffer:
StringBuffer创建的对象是可变的。
它的改变不像String那样重新创建对象,而是通过构造方法。
StringBuffer创建的对象的值存在于栈区,不用的时候会被销毁。
StringBuffer运行时间比较短。
StringBuffer适用于比较长的字符串,比较多的字符串。
6、写出八种包装器类型。
Byte,Short,Integer,Long,Float,Double,Boolean,Character
7、什么是集合
集合类存放于java.util包中
集合类型主要有三种:set,list,map
集合存放的都是对象的引用,而非对象本身,所以我们称集合中的对象就是集合中对象的引用。
集合就是一个放数据的容器,准确来说就是放数据对象引用的容器。
8、Date和SimpleDateFormat有什么作用。
Date:获取当前时间
SimpleDateFormat:对日期进行格式化,可以将日期转换为指定格式的文本,也可将文本转化为日期。
9、对于String对象,通过“=”赋值,和使用关键字new赋值有什么区别。
使用=赋值创建了一个对象
使用new关键字赋值创建了两个对象。
10、Object类有什么特点。
超类,基类,所有类的直接或间接父类,位于继承树的最顶层
任何类,都默认继承Object类
Object类中所定义的方法,是所有对象都具备的方法
Object类型可以存储任何对象:作为参数,可以接受任何对象;作为返回值,可返回任意对象。
三、编程题(共5题,每题8分)
1、编写一个程序,从键盘接收一个实数,如果实数小于0则抛出异常,否则输出这个数的平方根、
public class Ch01 {
public static void main(String[] args) throws Exception {
System.out.println("请输入实数:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if (n < 0) {
throw new Exception("n should be>0");
} else {
System.out.println(Math.sqrt(n));
}
}
}

2、编写一个程序ShowDateTime,输出当前日期和当前时间。要求当前日期的格式为XXXX年XX月XX日,如2016年2月25日;当前时间格式为XXXX-XX-XX XX:XX:XX
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Ch01 {
public static void main(String[] args) {
String months[]={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};
Calendar calendar=Calendar.getInstance();
System.out.println("当前日期:"+calendar.get(Calendar.YEAR)+"年"
+calendar.get(Calendar.MONTH)+"月"+calendar.get(Calendar.DATE)+"日"
+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND));
times();
}
public static void times(){
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dateFormat.format(date));
}
}

3、输入一个字符串,如果含有非数字给出提示,如果是纯数字则转换成double类型,然后按照巴拿马的货币格式(—— B ——)符号输出
import java.util.Locale;
import java.util.Scanner;
public class Ch02 {
public static void main(String[] args) {
System.out.println("请输入一串字符串:");
Scanner sc=new Scanner(System.in);
String s=sc.next();
for (int i = 0; i <s.length() ; i++) {
char c = s.charAt(i);
if(c<'0'||c>='9') {
System.out.println("该字符串中含有非数字!");
return;
}
}
Double num=Double.valueOf(s);
System.out.println("---"+s+"---");
}
}

4、使用 String 类的 public String toUpperCase()方法可以将一个字符串中的小写字母变成大写字母;使用 public String toLowerCase()方法可以将一个字符串中的大写字母变成小写字母。编写一个程序,使用这个两个方法实现大小写的转换。
public class Ch02 {
public static void main(String[] args) {
System.out.println("请输入一串字符串:");
Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println("大写:"+s.toUpperCase());
System.out.println("小写:"+s.toLowerCase());
}
}

5、
1)使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排
2)增加了一位新老师Allen 教JDBC
3)Lucy 改为教CoreJava
4)遍历Map,输出所有的老师及老师教授的课程
5)利用Map,输出所有教JSP 的老师
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Ch03 {
public static void main(String[] args) {
Map<String,String> course=new HashMap<>();
course.put("张三","JSP");
course.put("Lucy","JSP");
course.put("王五","JSP");
System.out.println("老师的授课信息为"+course);
course.put("Allen","JDBC");
System.out.println("Allen老师的教授课程为"+course.get("Allen"));
if (course.containsKey("lucy")) {//判断如果存在 key ,就修改value
course.put("Lucy","CoreJava");//修改
}
System.out.println("所有老师和课程:");
Set<Map.Entry<String,String>> messages=course.entrySet();
for (Map.Entry<String,String> entry:messages){
System.out.println(entry.getKey()+"--->"+entry.getValue());
}
System.out.println("教授JSP课程的老师有:");
for(Map.Entry<String,String> entry:messages){
if(entry.getValue().equals("JSP")){
System.out.println(entry.getKey()+"--->"+entry.getValue());
}
}
}
}
