1、Java 试题一、选择题(38 X 1.5)注意,题目有多选,也有单选。请认真作答。1. 在 JAVA 中,下列哪些说法是正确的(AC )Ajava 源文件的扩展名为.javaB写好的 java 源程序可以直接运行C编写的源程序必须先编译后才能运行D程序员可以读懂扩展名为.class 的文件2. 下列标识符哪个是合法的( BD)Aclass B$abcC1234D_name3. 下面哪些赋值语句是正确的?(ABD )A. long test = 012;B. float f = -412;C. int other = (int) true;D. double d = 0x12345678;E.
2、 byte b = 128;4. 在 Java 中,下列语句不能通过编译的有( BD)A. String s= “join”+ 3; B. int a= “join”+3;C. int a= a+5;D. float f=5+5.5;5. 设 a = 3,则表达式 (-a )4 System.out.println(“x=“ + x + “,y=“ + y);A. x=4,y=5B. x=4,y=6C. x=5,y=6D. x=6,y=67. 尝试运行下面的代码会发生什么?( B)public class Test public static void main(String args) bo
3、olean m = true;if (m = false) System.out.println(“true“); else System.out.println(“false“);A. 输出字符串”true”B. 输出字符串”false”C. 编译时错误D. 运行时错误8. 编译并运行以下代码将发生什么? (E )public static void main(String args)char digit = a;for (int i = 0; i 100) myString = “x is greater than 100“;8 System.out.println(myString.le
4、ngth();9 A 编译时报出错误提示信息“变量 myString 没有被初始化 ” B 编译通过C 编译未能通过。但如果变量 myString 在第 8 行前的代码中被初始化,代码可以编译通过,运行时可以输出字符串 myString 的长度D 以上都不对26.有如下代码,请问哪些是正确的?(ACD)class ClassAclass ClassB extends ClassAclass ClassC extends ClassA以及ClassA p0 = new ClassA();ClassB p1 = new ClassB();ClassC p2 = new ClassC();Class
5、A p3 = new ClassB();ClassA p4 = new ClassC();Ap0 = p1;Bp1 = p2;Cp1 = (ClassB)p3;Dp2 = (ClassC)p4;27.关于继承, 以下说法正确的是: (AD)AJava 中只支持单继承 , 一个类只能继承一个类, 但是可以有多个子类B一个类如果没有自己写无参构造方法, 那么子类将无法继承C子类可以当父类用, 父类不可以当子类用D. 子类重写父类方法时访问权限不能更低28.编译并运行以下代码的输出结果是?( A )String s1 = new String(“amit“); System.out.println(
6、s1.replace(m,r); System.out.println(s1); String s3 = “arit“; String s4 = “arit“; String s2 = s1.replace(m,r); System.out.println(s2 = s3); System.out.println(s3 = s4);A. arit amit false trueB. arit arit false trueC. amit amit false trueD. arit amit true true29.下列哪些代码可以顺利通过编译和运行? ( ABD )AInteger i =
7、new Integer(A);BInteger i = new Integer(“7“);CCharacter c = new Character(“A“);DBoolean b = new Boolean(null);EInteger i = new Integer(“0x10“);30.在 Java 中,如果要在字符串类型对象 s=“java“中,得到字符 v 出现的位置,可使用下面的那个方法?( C )A. s.matches(v);B. s.charAt(v);C. s.indexOf(v);D. s.substring(v);31.下列关于 ArrayList、Vector 和 Li
8、nkedList 集合的说法正确是有(ACD )A. ArrayList 集合底层是数组实现,该集合线程不安全B. Vector 集合元素的存放是无序的C. LinkedList 集合底层是链表结构,适合做元素的增删操作D. 这三个集合都是 List 接口的实现类32.下面程序的输出结果是什么( D )Set set= new HashSet();set.add(“aaa“);set.add(“bbb“);set.add(“aaa“);System.out.println(set.size();A. 编译不通过B. 运行时出错C. 输出 3D. 输出 233.下列哪些方法是 ArrayList
9、 和 LinkedList 集合中都定义的( ACD )A. add(Object o)B. removeFirst()C. remove(Object o)D. add(int index,Object o)34.下列哪些集合属于 Collection 体系的子类( BD )A. TreeMapB. ArrayListC. HashtableD. HashSet35.下面有关 Java 异常处理的说法错误的是( A)A. 一个 try 块只能有一条 catch 语句B. 一个 try 块中可以不使用 catch 语句C. catch 块不能单独使用,必须始终与 try 块在一起D. fina
10、lly 块不能单独使用,必须始终与 try 块在一起36.下列关键字能和 try 语句一起使用的是( CD ) A. finalB. finalizeC. finallyD. catch37.关于泛型的说法正确的是(ABC)A泛型是 JDK1.5 出现的新特性B泛型是一种安全机制C使用泛型避免了强制类型转换D使用泛型必须进行强制类型转换38.关于方法的递归算法,说法正确的是(A)A递归就是方法自己调用自己B递归的次数不能过大,否则会导致栈内存溢出C使用递归算法,方法必须有返回值D构造方法不可以使用递归算法2、简单题( 6 X 3)1.简述 String、StringBuffer 和 StringBuilder 之间的区别。答:1.String 由于底层是数组实现,所以一旦创建,将不可改变,而 StringBuffer和 StringBuilder 是可变的字符序列。2.StringBuffer 是线程安全的,效率低于 StringBuilder,StringBuilder 是线程不安全的,效率高于 StringBuffer,在多线程当中慎用。2.简述异常框架,并做简要说明。Error 是 jvm 系统错误,程序员是无法解决的。Exception 分为运行时异常(运行期间)和非运行时异常(编译期间) 。3.简述集合框架,并做简要说明。