java培训习题(150题).doc_第1页
java培训习题(150题).doc_第2页
java培训习题(150题).doc_第3页
java培训习题(150题).doc_第4页
java培训习题(150题).doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第一部分:基础(25题)关于方法1、编写方法计算f(n):f(n)=f(n-1)+f(n-2); n2f(1)=f(0)=1;public int f(int n) throws Exceptionif(n0)throw new Exception(n应该大于等于0);if(n=0 | n=1)return 1;elsereturn f(n-1)+f(n-2);2、编写方法,查找a在数组x中的位置,如果不存在返回-1.方法定义如下:public int find(int n,int a)for(int i=0;ia.length;i+)if(ai = n)return i+1;return -1;3、编写方法,找出数组x中的最大值public int max(int a)int max = a0;for(int i=1;ia.length;i+)if(max2;int c=a2;System.out.println(b);System.out.println(c);System.out.println(d);13、是否有错?short a=10;short b=20;short c=a+b;最后一句应该修改为:short c=(short)(a+b);14、&和&的区别是什么?&是快速运算,可以短路,如果左边的结果为false,结果一定为false,右边的表达式不再运行。&不管左边是什么结果,右边的一定运行。15、输出结果是什么?int a=10;int b=20;int c=0;if(a20 & (b+)6) a+;c=a+b;System.out.println(c);结果:30把&换成&:结果:31控制语句16、switch中的表达式可以是什么类型?byte、short、int、long(不行)、char、枚举类型switch(n)17、输出结果short n=3;switch(n) case 1:System.out.println(1); case 2:System.out.println(2); case 3:System.out.println(3); case 4:System.out.println(4); case 5:System.out.println(5);结果:3 4 518、continue和break有什么区别?break跳出循环,continue结束本次循环。19、输出结果int i=0;for(i=0;i5;i+) i+;System.out.println(i);结果:620、输出结果int i=0;for(i=0;ib) return a; if(a=b) return b; 错误:可以把if(a=b)改为else36、代码是否有错public class A public int to_int(String str) try return Integer.parseInt(str); catch (Exception e) 错误:因为可能产生异常,可能没有返回值。静态成员37、输出结果public class A int a; static int b; public static void main(String args) A a1 = new A(); A a2 = new A(); a1.a = 10; a1.b = 20; a2.a = 30; a2.b = 40; System.out.printnl(a1.a+-+a1.b+-+a2.a+-+a2.b); 结果:10-40-30-40原因:b是静态成员,A的所有对象共享,a1.b和a2.b是同一个变量。抽象类38、代码是否有错?如有,如何改?public abstract class A public abstract void print();public class B extends A int x;错误:在B中应该实现从A继承的print方法,或者把B改成抽象类。注意:抽象类的子类必须实现抽象类中定义的所有方法,除非子类也是抽象类。继承39、是不是所有类都有父类?除Object之外,其他类都有父类。40、如果一个类没有声明父类,系统会把Object作为他的父类?正确。构造方法41、如果一个类没有定义构造方法,系统会提供一个无参数的构造方法?对。42、如果在类中定义了构造方法,系统不再提供无参数的构造方法?对。43、代码是否有错public class A public final int x=10; public A(int a) this.x = a; 错误:x是常量,不能多次赋值。44、代码是否有错public class A public final int x; public A(int a) this.x = a; 正确。45、代码是否有错public class A public final int x; x = 10; public A(int a) 正确:初始化代码块。46、代码是否有错public class A public final int x; public A(int a) public void setA(int a) this.x = a; 错误:不能通过setA赋值。47、代码是否有错public class A public final int x; public A(int a) 错误:x没有被赋值。静态成员可以通过构造方法赋值,也可以在定义的时候赋值,不能通过其他方法赋值,并且只能赋值一次。48、代码是否正确public class A public static final int x; public A(int a) 错误:没有对x赋值。49、代码是否正确?public class A public static final int x=10; public A(int a) 正确。50、代码是否正确?public class A public static final int x; static x=10; public A(int a) 正确。51、代码是否正确?public class A public static final int x; x=10; public A(int a) 错误。52、代码是否正确?public class A public static final int x; public A(int a) x = a; 错误。注意:静态常量只能通过静态初始化器和声明时候赋值,只能赋值一次。53、代码是否正确?public class A public A(int a) int y; System.out.println(y); 错误:y没有初始化。53、代码是否正确?如果错误,请改正,如果正确,请写输出结果。public class A int y; public A(int a) System.out.println(y); public static void main(String args) new A(10); 正确。结果为0.54、是否正确public class A int y; public A(int a) System.out.println(y); public static void main(String args) new A(); 错误:没有无参数的构造方法。55、类和对象的区别是什么?类是抽象的,是对对象的抽象。对象是具体的,是类的实例,或者称为类的具体化。在编写程序的时候是编写类。程序运行过程中,需要不断的创建对象。56、抽象类和接口的区别是什么?抽象类是对类的抽象,接口是对行为的抽象。抽象类可以包含非抽象方法,接口中的方法全部为抽象方法。抽象类可以有各种类型的成员变量,接口中的成员变量是public static final类型的。抽象类只能实现单继承,接口可以实现多继承(1个类可以实现多个接口,只能继承一个父类)。57、代码是否正确?(5个类在单独的文件中)public class Apublic class B extends Apublic class C extends Apublic class D extends Cpublic class Test public static void main(String args) A a = new A(); /正确 A a2 = new B(); / 正确 A a3 = new C(); / 正确 A a4 = new D(); / 正确 B b1 = (B)a; / 语法正确,运行错误。 B b2 = (B)a2; / 正确 B b3 = (B)a3; / 语法正确,运行错误。 C b4 = (C)a4; / 正确 C c1 = (C)b2; / 编译错误。B和C没有继承关系。 58、抽象类A,接口B,非抽象类C实现接口B,继承类A。代码是否正确?A a ; / 正确a = new A(); / 错误。抽象类不能实例化对象B b ; / 正确。b = new B(); / 错误。接口不能实例化对象C c; / 正确。c = new C(); / 正确。前提是类C有无参数的构造方法a = c; / 正确,父类引用指向了子类对象b = c; / 正确,接口引用指向了实现接口的类的对象c = a; / 错误,需要强制类型转换。c=(C)a;c = b; / 错误,需要强制类型转换。 / if(b instanceof C) c=(C)b; /instanceof判断是否是相应的类型。59、写输出结果public class A public int a; public class B public void processA(A a) a.a = 10; public static void main(String args) B b = new B(); A a = new A(); a.a = 20; cessA(a); System.out.println(a.a); 输出:10原因:调用方法的时候,传递的是引用(地址),所以在方法内部的处理会修改原来对象的值。60、写出输出结果public class B public void processA(int a) a = 10; public static void main(String args) B b = new B(); int a = 20; cessA(a); System.out.println(a); 输出结果:20原因:方法的参数是基本数据类型,传递的值,而不是引用,不会影响原来变量的值。61、B是A的子类,代码是否正确public void f(A a) / a是形参 a.g();public void g() B b = new B(); f(b); / b是实参正确。参数类型可以是接口,可以是抽象类,可以是非抽象类。方法调用的时候,实参可以是形参的类型,也可以形参的子类,如果形参是接口,实参可以是实现了接口的类的对象。62、方法重写时候的约束?第三部分:1、什么是异常处理?在程序运行过程可能会产生异常,异常可能会造成系统不能正常运行,通过异常处理可以避免。例如:数组越界,如果数组5个单元,下标应该是0到4,如果访问的时候用的下标不是0到4,就会产生异常,如果不对异常处理,系统就会死掉了。2、异常处理使用了哪些关键字?try,把可能出现异常的代码放在try语句中。catch,用特定的异常类型与try中产生的异常进行匹配,如果匹配上可以处理。finally,如果希望某些代码必须执行,不管是否产生异常,可以把这些代码写在finally中。throw,程序运行过程中遇到特殊情况,抛出表示这种特殊情况的异常对象。throws,在方法中如果抛出了某种类型的异常,应该在方法头通过throws声明异常的类型。3、如何定义异常类来表示异常信息?继承Exception,提供无参数的构造方法和有一个参数的构造方法。public class MyException extends Exception public MyException(String msg) super(msg); public MyException()4、异常处理的基本结构?try / 可能会产生异常的代码catch(异常类型 对象) / 异常类型匹配时候的处理代码finally / 必须要执行的代码,不管是否异常5、补充下面的代码int a;public void setA(String str) / 在此处补充代码,完成的功能,把str的值赋值给成员变量a参考答案:int a;public void setA(String str) try a = Integer.parseInt(str); catch(Exception e) System.out.println(不是数字!); 6、需要把可能出错的代码放在try语句中,哪些代码可能会出错?程序中的代码主要包括:变量定义、进行各种运算、方法调用。变量定义,通常不会有异常。运算,数学运算可能会越界、可能被0除,根据需要进行处理。方法调用,通过方法的声明可以知道方法可能有哪些类型的异常,分别进行处理。7、如何获取异常对象的信息,假设异常对象为e。toString()方法,可以把异常信息转换为字符串getMessage()方法,可以得到异常信息(通常比较简单)printStackTrace()方法,把异常信息输出到标准输出设备这些方法通常在catch中使用。8、只有try语句,没有catch和finally,可以不可以? 不可以。9、有一个try,能不能有多个catch?能。10、如果产生的两个异常有继承关系,并且分别使用了catch,两个类的先后顺序有没有关系?例如下面的代码,NumberFormatException是Exception的子类。try .catch(Exception e)catch(NumberFormatException e)不可以。必须把子类对应的catch放在前面。11、编写一个方法,参数是整数,方法名set,返回值类型void,方法中对参数进行判断,如果参数在1到10之间,把这个值输出,否则抛出异常MyException,写出这个方法。public void set(int a) throws MyException if(a=1) System.out.println(a); else throw new MyException(值的范围不合适!); / 抛出异常对象 12、编写代码调用上面的set方法,假设代码所在的方法是f(int a)public void f(int a) set(a);参考答案1:public void f(int a) try set(a); catch(MyException e) / MyException的位置,可以使用父类 / 写对异常处理的代码 参考答案2:public void f(int a) throws MyException set(a);13、举几个异常的例子IOException,输入输出异常;ClassNotFoundException,类找不到异常;ArrayIndexOutofBoundsException,数组越界异常;IlegalArgumentException,参数异常NullPointerException,空对象异常ArimaticExection,数学运算异常NumberFormatException,数字转换异常14、String与StringBuffer的区别?String是常量,值一旦确定,不能修改。StringBuffer,内容可变。15、String的常用方法长度:length()取某个字符:charAt(int index),第一个字符的索引是0取字串:subString(int start,int end),从start开始到end结束,包含start,不包含end。 subString(int start),取后半部分查找字符串中是否包含另外一个字串: indexof(String sub) / 从头找 indexof(String sub,int start) / 从指定的位置开始找 lastIndexof(String sub) / 从后面开始找比较字符串内容是否相同 equals(Object o)取出两端的空格 trim()转换大小写 toUppercase toLowercase把字符串转换成数组 split(String reg)转换成字节流: getBytes()16、StringBuffer的常用方法append(),添加信息,可以是各种类型insert(),在中间添加toString(),可以转换成字符串17、下面的代码,产生了几个String对象String s1 = new String(test);test本身是一个字符串对象;new String(test),又产生了一个对象;s1是对象引用,指向了第二个对象。18、下面代码输出结果String s1 = test;String s2 = test;String s3 = new String(test);String s4 = new String(test);System.out.println(s1=test); / trueSystem.out.println(s1.equals(test); / true System.out.println(s1=s2); / trueSystem.out.println(s1.equals(s2); / trueSystem.out.println(s1=s3); / falseSystem.out.println(s1.equals(s3); / trueSystem.out.println(s3=s4); / falseSystem.out.println(s3.equals(s4); / true19、如何把int转换成Integer对象,反过来呢?int i=5;Integer ii = i; / jdk5之后可以直接赋值ii = new Integer(i);i = Value();20、8中基本数据类型的封装类型Byte、Short、Int、Long、Float、Double、Boolean、Characterbyte、short、int、long、float、double、boolean、char21、如何把字符串转换成数字,以整数为例String str=1234;int i = Integer.parseInt(str);str = String.valueof(i);22、如何获取当前系统日期?Date date = new Date();23、使用哪个类对日期进行格式化?如何格式化? SimpleDateFormat df = new SimpleDateFormat(yyyy/MM/dd); / 日期格式化 Date date = new Date(); String str = df.format(date); System.out.println(str); / 把字符串转换成日期 date = df.parse(1988/8/8);24、3种类型的集合Set、List和Map。Set表示普通的集合,集合中的元素不能重复,元素无序。List是链表,元素可以重复,元素之间有顺序,可以根据序号得到元素。Map的每个元素是一个key/value(键/值),在添加1个元素的时候需要指定两部分信息(key和value),访问的时候可以根据key得到value。25、ArrayList的使用?创建对象:ArrayList list = new ArrayList();添加对象:list.add(o);删除对象:remove(o) remove(i) removeAll()修改:list.set(i,o) / 第一个参数表示位置,第二个参数表示修改后的值得到某个元素:get(i)遍历:方法1:转换成

温馨提示

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

评论

0/150

提交评论