当前位置:文档之家› java基础考试题及答案

java基础考试题及答案

新员工考试一、选择题(共30题,每题 2 分)1. 下面哪些是合法的标识符?(多选题)A. $personsB. TwoUsersC. *pointD. thisE. _endline答案A,B,E分析Java 的标识符可以以一个Unicode 字符,下滑线(_),美元符($)开始,后续字符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保留字(this 保留字)。

2. 哪些是将一个十六进制值赋值给一个long 型变量?(单选题)A. long number = 345L;B. long number = 0345;C. long number = 0345L;D. long number = 0x345L答案D分析十六进制数以Ox开头,Io ng型数以L (大小写均可,一般使用大写,因为小写的l 和数字1 不易区分)。

3. 下面的哪些程序片断可能导致错误? (多选题)A. String s = "Gone with the wind";String t = " good ";String k = s + t;B. String s = "Gone with the wind";String t;t = s[3] + "one";C. String s = "Gone with the wind";String standard = s.toUpperCase();D. String s = "home directory";String t = s - "directory";答案B,D分析A:String 类型可以直接使用+进行连接运算。

B:String 是一种Object ,而不是简单的字符数组,不能使用下标运算符取其值的某个元素,错误。

C:toUpperCase()方法是String 对象的一个方法,作用是将字符串的内容全部转换为大写并返回转换后的结果(String 类型)。

D:String 类型不能进行减(- )运算,错误。

4. point x 处的哪些声明是句法上合法的? (多选题)cIass Person {private int a;pubIic int change(int m){ return m; }}pubIic cIass Teacher extends Person {public int b;public static void main(String arg[]){ Person p = new Person(); Teacher t = new Teacher();int i;// point x}}A. i = m;B. i = b;C. i = p.a;D. i = p.change(30);E. i = t.b.答案D,E分析A: m没有被声明过,不能使用。

B:虽然b是类Teacher的public成员变量,但是在静态方法中不能使用类中的非静态成员。

C:a 是类Person 的private 成员,在类外不能直接引用。

D:change(int m) 方法是public 方法,并且返回一个int 型值,可以通过类的实例变量p 引用并赋值给一个int 型变量。

E:b 是类Teacher 的public 成员变量,且是int 型,可以通过类的实例变量t 引用并赋值给一个int 型变量。

5. 下面的代码片断(多选题) :1) public void create() {2) Vector myVect;3) myVect = new Vector();4) } 下面的哪些陈述正确?A. 第二行的声明不会为变量myVect分配内存空间。

B. 第二行的声明分配一个到Vector 对象的引用的内存空间。

C. 第二行语句创建一个Vector 类对象。

D. 第三行语句创建一个Vector 类对象。

E. 第三行语句为一个Vector 类对象分配内存空间。

答案A,D,E分析要为一个新对象分配空间必须执行new Xxx()调用,new调用执行以下的操作:1.为新对象分配空间并将其成员初始化为0或者null 。

2.执行类体中的初始化。

(例如在类中有一个成员声明int a=10; 在第一步后a=0 ,执行到第二步后a=10)3.执行构造函数。

4.变量被分配为一个到内存堆中的新对象的引用。

6. 下面的哪些答案可以用以表示八进制值8? (单选题)A. 010B. 0x10C. 08D. 0x8答案A分析八进制值以0 开头,以0x 开头的为十六进制值,八进制中不能出现数字8,最大只有7。

1) class Person {2) public void prin tValue( int i, i nt j) {/* …*/ }3) public void printValue(int i){/*...*/ }4) }5) public class Teacher extends Person {6) public void printValue() {/*...*/ }7) public void printValue(int i) {/*...*/}8) public static void main(String args[]){9) Person t = new Teacher();10) t.printValue(10);11) }12) }第十行的声明将调用哪些方法? (单选题)A. on line 2B. on line 3C. on line 6D. on line 7答案D分析变量t 是一个Person 对象,但是它是用Teacher 实例化的,这个问题涉及到java 的编译时多态和运行时多态的问题,就编译时多态来说,t 实际上是一个Person 类,这涉及到类型的自动转换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转换,反之则需要进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对t 调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据t 实际指向的类型调用对应的方法,对于本例来说,t.print(10) 将调用t 实际指向的Teacher 类的对应方法。

在java 中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。

7. 给出下面的代码:(单选题)x 的取值在什么范围内时将打印字符串"second" 。

A. x > 0B. x > -3C. x <= -3D. x <= 0 & x > -3答案D分析x>0 时打印"first" , x>-3&&x<=0 时打印"second" , x<=-3 时打印"third"。

这个题目没有什么难的,只要理解if 语句的语法就可以了。

8. 下面的哪些赋值语句是不正确的(单选题)A. float f = 11.1;B. double d = 5.3E12;C. double d = 3.14159;D. double d = 3.14D.答案A题目:。

浮点数的赋值是带有小数点的数字缺省是double 型的,如果在浮点数后面加 f 或者F 则是float,后面加d或者D则是double ,科学计数法形式的浮点数也是double型的,而double 的精度比float 高,将一个高精度的double 赋值给一个低精度的float 时需要进行强制类型转换,反之则不需要。

9. 给出下面的不完整的类代码: (单选题)class Person {String name, department;int age;public Person(String n){ name = n; }public Person(String n, int a){ name = n; age = a; }public Person(String n, String d, int a) {// doing the same as two arguments version of constructor// including assignment name=n,age=adepartment = d;}}下面的哪些表达式可以加到构造方法中的"doing the same as..." 处?A. Person(n,a);B. this(Person(n,a));C. this(n,a);D. this(name,age).答案C分析:在同一个类的不同构造方法中调用该类的其它构造方法需要使用this(…)的形式,而且必须是在构造方法的第一行调用,这个和普通的方法重载调用的方式不同,普通的方法可以直接使用方法名加参数来调用,而且调用位置没有限制,因此答案A是不行的,B的语法就是错误的,D的错误在于在父类型的构造函数被调用前不能引用类的成员。

构造方法是一个类对象实例化的起点(虽然严格来说首先执行的并不是构造方法的第一个语句,而是内存的分配),因此在构造方法中不能将成员作为参数引用。

10. public void test() {// (多选题)try {oneMethod();} catch (ArrayIndexOutOfBoundsException e) {} catch(Exception e) {} finally {}}在oneMethod() 方法运行正常的情况下将显示什么?A. condition 1B. condition 2C. condition 3D. finally答案ad分析:如果try 块中的语句在执行时发生异常,则执行从该处中断而进入catch 块,根据异常的类型进行匹配,最前面的优先进行匹配比较,只要该异常是catch 中指定的异常的子类就匹配成功进而执行相应的catch中的内容,而fin ally 块中的内容无论是否发生异常都将被执行。

11. 给出下面的代码:(单选题)public class Test {void printValue(int m){while( --m > 10 )}public static void main(String arg[]) {int i=10;Test t= new Test();t.printValue(i);}}输出将是什么?A. The value is 8B. The value is 9C. The value is 10D. The value is 11答案:c此题考察的是do…while循环和--操作符的知识,do…while最少被执行一次,在执行完do 中的内容后判断while 中的条件是否为true ,如果为true 的话就再执行do 中的内容,然后再进行判断,以此类推直到while 的判断为false 时退出循环执行循环后面的内容,而—操作符的规则是在变量右边的-- 将先进行运算,然后才是使变量的值减一,而在变量左边的是先将变量的值减一再运算。

相关主题