java基础考试题及答案_第1页
java基础考试题及答案_第2页
java基础考试题及答案_第3页
java基础考试题及答案_第4页
java基础考试题及答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、新员工考试一、 选择题(共30题,每题2分)1. 下面哪些是合法的标识符?(多选题) A. $persons B. TwoUsers C. *point D. thisE. _endline 答案A,B,E 分析Java的标识符可以以一个Unicode字符,下滑线(_),美元符($)开始,后续字符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保留字(this保留字)。2. 哪些是将一个十六进制值赋值给一个long型变量?(单选题) A. long number = 345L;B. long number = 0345;C. long number = 0345L;D. long nu

2、mber = 0x345L 答案D 分析十六进制数以0x开头,long型数以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 = s3 + "one" C. String s = "Gone with the wind

3、"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

4、x处的哪些声明是句法上合法的? (多选题)class Person private int a;public int change(int m) return m; public class Teacher extends Person public int b;public static void main(String arg)Person p = new Person();Teacher t = new Teacher();int i;/ point xA. i = m;B. i = b;C. i = p.a; D. i = p.change(30);E. i = t.b. 答案D,E

5、分析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();

6、 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变量被分配为一个到内存堆中的新

7、对象的引用。6. 下面的哪些答案可以用以表示八进制值8? (单选题) A. 010B. 0x10C. 08D. 0x8 答案A 分析八进制值以0开头,以0x开头的为十六进制值,八进制中不能出现数字8,最大只有7。7.1) class Person 2) public void printValue(int i, int j) /*/ 3) public void printValue(int i)/*.*/ 4) 5) public class Teacher extends Person 6) public void printValue() /*.*/ 7) public void pri

8、ntValue(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类,这涉及到类型的自动转换(将一个子类的实例赋值给一个父

9、类的变量是不用进行强制类型转换,反之则需要进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对t调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据t实际指向的类型调用对应的方法,对于本例来说,t.print(10)将调用t实际指向的Teacher类的对应方法。在java中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。8. 给出下面的代码:(单选题)if (x>0) System.out.println("first"); else if (x>-3) Sys

10、tem.out.println("second"); else System.out.println("third"); 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"。这个题目没有什么难

11、的,只要理解if语句的语法就可以了。9. 下面的哪些赋值语句是不正确的(单选题)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时需要进行强制类型转换,反之则不需要。10. 给出下面的不完整的类代码: (单选

12、题)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;下面的哪些表达式可以加到构造方法中的&qu

13、ot;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的错误在于在父类型的构造函数被调用前不能引用类的成员。构造方法是一个类对象实例化的起点(虽然严格来说首先执行的并不是构造方法的第一个语句,而是内

14、存的分配),因此在构造方法中不能将成员作为参数引用。11. public void test() / (多选题)try oneMethod();System.out.println("condition 1"); catch (ArrayIndexOutOfBoundsException e) System.out.println("condition 2"); catch(Exception e) System.out.println("condition 3"); finally System.out.println("

15、finally"); 在oneMethod()方法运行正常的情况下将显示什么?A. condition 1B. condition 2C. condition 3D. finally答案 ad分析:如果try块中的语句在执行时发生异常,则执行从该处中断而进入catch块,根据异常的类型进行匹配,最前面的优先进行匹配比较,只要该异常是catch中指定的异常的子类就匹配成功进而执行相应的catch中的内容,而finally块中的内容无论是否发生异常都将被执行。12. 给出下面的代码:(单选题)public class Test void printValue(int m)do Syste

16、m.out.println("The value is"+m);while( -m > 10 )public static void main(String arg) int i=10;Test t= new Test();t.printValue(i);输出将是什么?A. The value is 8 B. The value is 9C. The value is 10D. The value is 11答案:c此题考察的是do while循环和 - 操作符的知识,dowhile最少被执行一次,在执行完do中的内容后判断while中的条件是否为true,如果为tr

17、ue的话就再执行do中的内容,然后再进行判断,以此类推直到while的判断为false时退出循环执行循环后面的内容,而操作符的规则是在变量右边的- 将先进行运算,然后才是使变量的值减一,而在变量左边的是先将变量的值减一再运算。13. 给出下面的代码:(单选题)1) public void modify() 2) int i, j, k;3) i = 100;4) while ( i > 0 ) 5) j = i * 2;6) System.out.println (" The value of j is " + j );7) k = k + 1;8) i-;9) 10

18、) 哪些行在编译时可能产生错误。A. line 4B. line 6C. line 7D. line 8答案c这个问题在前面有关变量的类型及其作用域的问题中讨论过,局部变量在使用前必须显式初始化,而代码中的变量k在使用前没有。14. 给出下面的代码片断:(单选题)1) String str = null;2) if (str != null) && (str.length() > 10) 3) System.out.println("more than 10");4) 5) else if (str != null) & (str.length

19、() < 5) 6) System.out.println("less than 5");7) 8) else System.out.println("end"); 哪些行将导致错误? A. line 1B. line 2C. line 5D. line 8答案c此题需要将代码仔细看清楚,查询没有逻辑错误,if else的使用没有问题,也没有拼写错误,错误在于第5行的“与”操作符的使用,逻辑操作符(logical operator)的“与”应该是&&,而&是位逻辑操作符(bitwise logical operator)的“

20、与”,使用的对象不一样,逻辑操作符的“与”的左右操作数都应该是布尔型(logical boolan)的值,而位逻辑操作符的左右操作数都是整型(integral)值。15. 给出下面的代码:(单选题)public class Personstatic int arr = new int10;public static void main(String a) System.out.println(arr1;)那个叙述是对的。A. 编译时将发生错误。B. 编译时正确但是运行时出错。C. 输出为0。D. 输出为null答案cint型数组是类对象,它在类被加载时完成初始化,在前面题目中已经有叙述,由于是

21、原始数据类型int,其初始值为0。16. public class Parent /(多选题)public int addValue( int a, int b) int s;s = a+b;return s;class Child extends Parent 哪些方法可以加入类Child中?A. int addValue( int a, int b )/ do something.B. public void addValue ()/ do something.C. public int addValue( int a )/ do something.D. public int addVa

22、lue( int a, int b )throws MyException /do something.答案bc此题涉及方法重载(overload),方法重写(override)以及类派生时方法重写的规则。方法重载的规则是:一、参数列表必须不同,个数的不同完全可以,如果个数相同则参数类型的不同不能引起歧意,例如int 和long,float和double就不能作为唯一的类型不同;二、返回值可以不同,但是不能是重载时唯一的不同点(这点和c+中不同,c+中返回类型必须一致)。方法重写发生在类继承时,子类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样时才能说是重写,否则就是重载,java

23、中方法重写的一个重要而且容易被忽略的规则是重写的方法的访问权限不能比被重写的方法的访问权限低!重写的另一个规则是重写的方法不能比被重写的方法抛弃(throws)更多种类的异常,其抛弃的异常只能少,或者是其子类,不能以抛弃异常的个数来判断种类,而应该是异常类层次结果上的种类。此题中答案a的错误就是重写的访问权限比被重写的方法的低,而b,c都属于重载,d的错误在于比被重写的方法抛弃了更多种类的异常。17. 共有成员变量MAX_LENGTH是一个int型值,变量的值保持常数值100。使用一个短声明定义这个变量。(单选题)A. public int MAX_LENGTH=100;B. final in

24、t MAX_LENGTH=100;C. final public int MAX_LENGTH=100;D. public final int MAX_LENGTH=100。答案dJava中共有变量使用public定义,常量变量使用final,另外注意的是修饰符的顺序,一个最完整的修饰是public static final int varial_a=100;这个顺序不能错,这和c+中也是不同的。而答案c恰恰错在修饰符的顺序上。18. 下面的那个java源文件代码片断是对的? (多选题)A. package testpackage;public class Test/do something.

25、B. import java.io.*;package testpackage;public class Test/ do something. C. import java.io.*;class Person/ do something.public class Test/ do something.D. import java.io.*; import java.awt.*;public class Test/ do something.答案acdjava中的package语句必须是源文件中除去说明以外的第一条语句,导入包语句可以有几个,但是必须位于package语句之后,其它类定义之前,

26、一个源文件中可以有几个类,但最多只能有一个是public的,如果有,则源文件的文件名必须和该类的类名相同。19. 下面的哪些声明是合法的? (多选题)A. long l = 4990;B. int i = 4L;C. float f = 1.1;D. double d = 34.4;E. double t = 0.9F.答案ade此题的考点是数字的表示法和基本数据类型的类型自动转换,没有小数点的数字被认为是int型数,带有小数点的数被认为是double型的数,其它的使用在数字后面加一个字母表示数据类型,加l或者L是long型,加d或者D是double,加f或者F是float,可以将低精度的数字

27、赋值给高精度的变量,反之则需要进行强制类型转换,例如将int,short,byte赋值给long型时不需要显式的类型转换,反之,将long型数赋值给byte,short,int型时需要强制转换(int a=(int)123L;)。20. 如下描述:(多选题)public class Parent int change() class Child extends Parent 哪些方法可被加入类Child?A. public int change()B. int chang(int i)C. private int change()D. abstract int chang()答案ab这个题目的

28、问题在第35题中有详尽的叙述。需要注意的是答案D的内容,子类可以重写父类的方法并将之声明为抽象方法,但是这引发的问题是类必须声明为抽象类,否则编译不能通过,而且抽象方法不能有方法体,也就是方法声明后面不能带上那两个大括号(),这些D都不能满足。21. 给出下面的代码:(单选题)1) class Parent 2) private String name;3) public Parent()4) 5) public class Child extends Parent 6) private String department;7) public Child() 8) public String

29、getValue() return name; 9) public static void main(String arg) 10) Parent p = new Parent();11) 12) 哪些行将导致错误?A. line 3B. line 6C. line 7D. line 8E. line 10答案d第8行的getValue()试图访问父类的私有变量,错误,参看前面有关变量类型及其作用域的叙述22. 变量"result"是一个boolean型的值,下面的哪些表达式是合法的?(多选题)A. result = true;B. if ( result ) / do s

30、omething. C. if ( result!= 0 ) / so something. D. result = 1答案abJava的boolean不同于c或者c+中的布尔值,在java中boolean值就是boolean值,不能将其它类型的值当作boolean处理。23. 类Teacher和Student都是类Person的子类(单选题)Person p;Teacher t;Student s;P,t和s都是非空值。if(t instanceof Person) s = (Student)t; 这个if语句导致的结果是什么A. 将构造一个Student对象。B. 表达式合法。C. 编译时

31、非法。D. 编译时合法而在运行时可能非法。答案cinstanceof操作符的作用是判断一个变量是否是右操作数指出的类的一个对象,由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象,这时就可以使用instanceof了。当左操作数是右操作数指出的类的实例或者是子类的实例时都返回真,如果是将一个子类的实例赋值给一个父类的变量,用instanceof判断该变量是否是子类的一个实例时也将返回真。此题中的if语句的判断没有问题,而且将返回真,但是后面的类型转换是非法的,因为t是一个Teacher对象,它不能被强制转换为一个Studen

32、t对象,即使这两个类有共同的父类。如果是将t转换为一个Person对象则可以,而且不需要强制转换。这个错误在编译时就可以发现,因此编译不能通过。24. 给出下面的类:(单选题)public class Samplelong length;public Sample(long l) length = l; public static void main(String arg)Sample s1, s2, s3;s1 = new Sample(21L);s2 = new Sample(21L); s3 = s2;long m = 21L; 哪个表达式返回true。A. s1 = s2;B. s2

33、= s3;C. m = s1;D. s1.equals(m).答案b前面已经叙述过=操作符和String的equals()方法的特点,另外=操作符两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。25. 给出下面有关List的表达式:(多选题)List l = new List(6,true);哪些叙述是对的。A. 在没有其它的约束的条件下该列表将有6行可见。B. 一行的最大字符数是6C. 列表将允许用户多选。D. 列表只能有一项被选中。答案acList组件的该构造方法的第一个参数的意思是它的初始显式行数,如果该值为0则显示4行,第二个参数是指定该组件是否可以多选,如果值为true

34、则是可以多选,如果不指定则缺省是不能多选。26. 给出下面的代码:(单选题)class Person String name,department;public void printValue() System.out.println("name is "+name);System.out.println("department is "+department);public class Teacher extends Person int salary;public void printValue()/ doing the same as in the

35、 parent method printValue()/ including print the value of name and department.System.out.println("salary is "+salary);下面的哪些表达式可以加入printValue()方法的"doing the same as."部分?A. printValue(); B. this.printValue();C. person.printValue();D. super.printValue().答案d子类可以重写父类的方法,在子类的对应方法或其它方法中

36、要调用被重写的方法需要在该方法前面加上”super.”进行调用,如果调用的是没有被重写的方法,则不需要加上super.进行调用,而直接写方法就可以。这里要指出的是java支持方法的递归调用,因此答案a和b在语法上是没有错误的,但是不符合题目代码中说明处的要求:即做和父类的方法中相同的事情?打印名字和部门,严格来说也可以选a和b。27. 给出下面的代码片断:(多选题)1) switch(m)2) case 0: System.out.println("case 0");3) case 1: System.out.println("case 1"); bre

37、ak;4) case 2:5) default: System.out.println("default");6) m为哪些值将导致"default"输出?A. 0 B. 1C. 2D. 3答案cd此题考察switch语句的用法,switch的判断的条件必须是一个int型值,也可以是byte、short、char型的值,case中需要注意的是一个case后面一般要接一个break语句才能结束判断,否则将继续执行其它case而不进行任何判断,如果没有任何值符合case列出的判断,则执行default的语句,default是可选的,可以没有,如果没有defa

38、ult而又没有任何值匹配case中列出的值则switch不执行任何语句。28. 给出下面的不完整的方法:(多选题)1)2) success = connect();3) if (success=-1) 4) throw new TimedOutException();5) 6)TimedOutException 不是一个RuntimeException。下面的哪些声明可以被加入第一行完成此方法的声明。?A. public void method()B. public void method() throws ExceptionC. public void method() throws Tim

39、edOutExceptionD. public void method() throw TimedOutExceptionE. public throw TimedOutException void method()答案b、c如果程序在运行的过程中抛出异常,而这个异常又不是RuntimeException或者Error,那么程序必须捕获这个异常进行处理或者声明抛弃(throws)该异常,捕获异常可以使用trycatch()语句,而抛弃异常在方法声明是声明,在方法的声明后面加上throws XxxxException,抛弃多个异常时在各异常间使用逗号(,)分隔,题目中的程序在运行时抛出的不是一个

40、RuntimeException,所有必须捕获或者抛弃,而程序又没有捕获,所有应该在方法声明中声明抛弃。由于Exception是所有异常的父类,所有当然也可以代表RuntimeException了。29. 下面的哪些答案可以正确表示一个十六进制数字10?(单选题)A. 0xAB. 0x16C. 0AD. 016答案a十六进制数以0x开头,以0开头的是八进制数。十六进制表示中的a,b,c,d,e,f依次为10,11,12,13,14,15。30. 给出下面的代码:(单选题)1) public class Test 2 int m, n;3 public Test() 4public Test(i

41、nt a) m=a; 5 public static void main(String arg) 6 Test t1,t2;7 int j,k;8 j=0; k=0;9 t1=new Test();10 t2=new Test(j,k);11 12 在编译时哪行将导致一个错误?A. line 3B. line 5C. line 6D. line 10答案d第10行的声明调用一个带两个参数的Test的构造方法,而该类没有这样的构造方法。二、 简答题1. 读如下程序,说出结果,并说明得出结果原因(10分)。public class BreakContinue public static void

42、main(String args) for (int i = 0; i < 10; i+) if(i = 3 | i = 5) continue;for (int j = 0; j < i; +j) if (i + j > 5) break;System.out.println(i + j);if (i = 6) break; 答案:1,2,3,4,52. 读程序,说出j值,并说明得出结果原因(10分)。public class Test private static int j = 0;public static void main(String args) methodA

43、(0);System.out.println(j);private static boolean methodB(int k) j += k; return true;public static void methodA(int i) boolean b;b = i < 10 | methodB(4);b = i < 10 | methodB(8); / 此处短路method不进行计算答案:三、 编程题1. 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母(20分)。答案:1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if

44、语句判断第二个字母。   import java.util.Scanner;public class Ex26 public static void main(String args) /保存用户输入的第二个字母 char weekSecond; /将Scanner类示例化为input对象,用于接收用户输入 Scanner input = new Scanner(System.in); /开始提示并接收用户控制台输入 System.out.print("请输入星期值英文的第一个字母,我来帮您判断是星期几:"); String letter = input.next

45、(); /判断用户控制台输入字符串长度是否是一个字母 if (letter.length() = 1) /利用取第一个索引位的字符来实现让Scanner接收char类型输入 char weekFirst = letter.charAt(0); switch (weekFirst) case 'm': /当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 case 'M': System.out.println("星期一(Monday)"); break; case &#

46、39;t': /当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 case 'T': System.out.print("由于星期二(Tuesday)与星期四(Thursday)均以字母T开头,故需输入第二个字母才能正确判断:"); letter = input.next(); /判断用户控制台输入字符串长度是否是一个字母 if (letter.length() = 1) /利用取第一个索引位的字符来实现让Scanner接收char类型输入 weekSecond = letter.charAt(0); /利用或(|)运算符来实现忽略用户控制台输入大小写敏感的功能 if (weekSecond = 'U' | weekSecond = 'u') System.out.println(&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论