Java程序设计课堂练习题(20页).doc
-Java程序设计课堂练习题-第 19 页Java程序设计练习题第一章 Java编程基础一、选择题1、可以使用【】实用程序编译Java程序。Ajava Bjavac Cjavadoc Dcmd2、可以使用【】实用程序运行java应用程序。Ajava Bjavac Cjavadoc Dcmd3、可以使用【】实用程序从Java源文件代码中抽取Java文档注释,生成相应的HTML帮助文档。Ajava Bjavac Cjavadoc Dcmd4、Java编译单元(源程序文件)的扩展名为【】A.java B.class C.doc D.exe5、编译Java源程序文件产生的字节码文件的扩展名为【】A.java B.class C.html D.exe6、以下Java应用程序执行入口main方法的声明中,正确的是【】A、public static void main()B、public static void main(String args)C、public static int main(String args)D、public void main(String args)7、Java属于以下哪种语言?【】A机器语言 B汇编语言 C高级语言 D以上都不对8、下面哪种类型的文件可以在Java虚拟机中运行?【】A.java B.jre C.exe D.classs9、Java程序中声明包的关键字是【】A、java B、package C、javadoc D、cmd10、如果JDK的安装路径为“d:jdk”,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?【】 A、d:jdk; B、d:jdkbin; C、d:jrebin; D、d:jre;11、下列说法中,不正确的是【】。A、一个Java源文件编译通过后,得到的结果文件数也只有一个B、一个Java源文件经过编译后,得到的文件的扩展名一定是.classC、一个Java源文件只能有一个public类定义,其类名与源文件名相同D、一个Java源文件可以包含多个类12、安装好JDK后,在其bin目录下有许多exe可执行文件,其中“java.exe”命令的作用是以下哪一种?【】。A、Java文档制作工具 B、Java解释器C、Java编译器 D、Java启动器13、以下关于变量的说法错误的是【】A变量名必须是一个有效的标识符B变量在定义时可以没有初始值C变量一旦被定义,在程序中的任何位置都可以被访问D在程序中,可以将一个byte类型的值赋给一个int型类型的变量,不需要特殊声明14、假设int x=2,三元表达式x>0?x+1:5的运行结果是以下哪一个?【】A0 B2 C3 D515、下面的运算符中,用于执行除法运算的是哪个?【】A/ B C% D*16、下面哪种写法可以实现访问数组arr的首个元素?【】Aarr0 Barr(0) Carr1 Darr(1)17、以下哪个选项可以正确创建一个长度为3的二维数组?【】Anew int23 Bnew int3Cnew int 3 D以上答案都不对18、关于变量的作用域,下列说法错误的是【】A类成员变量的作用域为类定义体B方法参数的作用域为方法体C对于for语句中定义的变量,当for语句执行完时,该变量就消亡了D在方法void f(int i)的for语句块中,可以声明变量“int i;”19、Java字符类型采用的是Unicode编码方案,每个Unicode码占用的位数是【】。A8 B16 C32 D6420、下列赋值语句中,不合法的是【】。Afloat f=1.2 Bfloat f2=1.2fCdouble d=1.2 Ddouble d2=1.2f二、填空题1、Java的三个技术平台分别是_java se_、_java ee_、_javame_。2、Java程序的运行环境简称之为_jre_。3、编译Java程序需要使用_javac_命令。4、_path_环境变量用来存储Java的编译和运行工具所在路径,而_classpath_环境变量则用来保存Java虚拟机要运行的“.class”文件路径。5、在Java语言中,main()方法的参数是表示命令行参数的String数组,其中,_args0_表示第一个参数。6、Java应用程序的入口方法是_main()_,用于控制程序的开始和结束。7、Java系统运行时,通过_自顶垃圾收集_机制周期性地释放无用对象所使用的内存,完成对象的清除。8、Java中的程序代码都必须在一个类中定义,类使用_class_关键字来定义。9、布尔常量即布尔类型的两个值,分别是_true_和_false_。10、Java中的注释可分为三种类型,分别是_单行_、_多行_、_文档_。三、判断题1、Java语言采用面向对象的思想编程,具有跨平台、分布式、多线程等优点。2、Java语言的语法与C或C+类似,也支持面向过程的程序设计技术。3、Java提供了自动垃圾收集机制进行内存管理,减小了内存出错的可能性。4、Java语言的平台无关性使得Java程序可以跨平台运行。5、Java虚拟机是实现Java语言平台无关性的基础。四、简答题1、简述JRE与JDK的区别。JRE,它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。它包含编译工具、解释工具、文档制作工具、打包工具等多种与开发相关的工具,是提供给Java开发人员使用的。初学者学习和使用Java语言时,首先必须下载和安装JDK。JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。2、什么是方法重载?方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。第二章 面向对象思想一、选择题1、类的定义必须包含在以下哪种符号之间?【】A方括号 B花括号 C双引号“” D圆括号()2、在以下什么情况下,构造方法会被调用?【】A类定义时 B创建对象时C调用对象方法时 D使用对象的变量时3、在类的继承关系中,需要遵循以下哪个继承原则?【】A多重 B单一 C双重 D不能继承4、在Java语言中,以下哪个关键字用于在方法上声明抛出异常【】A、try B、catch C、throws D、throw5、关于super关键字以下说法哪些是不正确的【】。Asuper关键字可以调用父类的构造方法Bsuper关键字可以调用父类的普通方法Csuper与this不能同时存在于同一个构造方法中Dsuper与this可以同时存在于同一个构造方法中6、类中的一个成员方法被下面哪个修饰符修饰时,该方法只能在本类被访问?【】。Apublic Bprotected Cprivate Ddefault7、在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?【】A、inherits B、implements C、extends D、modifies8、System类位于以下哪个包中?【】。A、java.io B、java.util C、java.awt D、java.lang9、以下关于继承的说法,正确的是【】。A继承可以避免代码复制和相关的代码维护等问题BJava语言中一个子类可以继承多个基类(多重继承)CJava语言不允许实现多个接口D子类可以继承父类的方法,但不能重新改写父类的方法10、下列修饰符中,不能用来修饰类的是【】。Apublic Babstract Cfinal Dstatic二、填空题1、面向对象的三大特征是_封装_、_继承_和_多态_。2、在Java中,可以使用关键字_new_来创建类的实例对象。3、定义在类中的变量被称为_成员变量_,定义在方法中的变量被称为_局部变量_。4、在非静态成员方法中,可以使用关键字_this_访问类的其他非静态成员。5、被static关键字修饰的成员变量被称为_静态变量_,它可以被该类所有的实例对象共享。6、在一个类中,除了可以定义属性、方法,还可以定义类,这样的类被称为_内部类_。7、在Java语言中,允许使用已存在的类作为基础创建新的类,这种技术称为_继承_。8、一个类如果实现一个接口,那么它就需要实现接口中定义的全部_方法_,否则该类就必须定义成_抽象类_。9、在程序开发中,要想将一个包中的类导入到当前程序中,可以使用_import_关键字。10、一个类可以从其他的类派生出来,派生出来的类称为_子类_,用于派生的类称为_父类_或者_基类_。三、判断题1、在定义一个类的时候,如果类的成员被private所修饰,该成员不能在类的外部被直接访问。2、Java中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。3、声明构造方法时,不能使用private关键字修饰。4、类中static修饰的变量或方法,可以使用类名或对象的引用变量访问。5、方法内部类中不能访问外部类的成员变量。四、简答题1、构造方法和普通的成员方法有什么区别?2、抽象类和接口的区别是什么?3、什么叫多态?1构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。2在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。3多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。第三章 多线程一、选择题1、Thread类位于下列哪个包中?【】Ajava.io Bjava.lang Cjava.util Djava.awt2、线程调用sleep()方法后,该线程将进入以下哪种状态?【】A就绪状态 B运行状态 C阻塞状态 D死亡状态3、在以下哪种情况下,线程进入就绪状态?【】。A线程调用了sleep()方法时 B线程调用了join()方法C线程调用了yield()方法时 D线程调用了notify()方法4、对于通过实现Runnable接口创建线程,下面说法不正确的是【】。A、适合多个相同程序代码的线程去处理同一个资源的情况B、把线程同程序代码、数据有效的分离,很好地体现了面向对象的设计思想C、可以避免由于Java的单继承带来的局限性D、编写简单,可以不通过Thread类直接创建线程5、对于死锁的描述,下面四种说法不正确的是【】。A当两个线程互相等待对方释放同步锁时会发生死锁 BJava虚拟机没有检测和处理死锁的措施C一旦出现死锁,程序会发生异常D处于死锁状态的线程处于阻塞状态,无法继续运行6、下面四个选项中,不是线程进入阻塞状态的原因是【】。A线程试图获取某个对象的同步锁,而该锁被其他线程持有B线程调用了另一个线程的join()方法C线程调用了一个阻塞式的IO方法D线程调用了setDaemon(boolean b)方法7、要创建一个线程类,可通过继承【】类。A、Object B、Thread C、Runnable D、Task8、通过实现【】接口,可创建一个线程类A、Object B、Thread C、Runnable D、Task9、通过重写继承的方法【】,可实现线程要执行的逻辑操作。Astart() Bmain() Crun() Dexecute()10、通过调用线程对象实例的【】方法,可以启动执行该线程。Astart() Bmain() Crun() Dexecute()二、填空题1、一个应用程序中有多条并发执行的线索,每条线索都被称作一个_线程_,它们会交替执行,彼此间可以进行_通信_。2、在实现多线程的程序时有两种方式,一是通过继承_thread_类,二是通过实现_runnable_接口。3、yield()方法只能让相同优先级或者更高优先级、处于_就绪_状态的线程获得运行的机会。4、在Java语言中,同步方法需要用到关键字_synchronized_,对于同步方法而言无须指定同步锁,它的同步锁是方法所在的_对象_,也就是_this_(关键字)。5、在Thread类中,start()方法用于开启一个_新线程_,当线程启动后,系统会自动调用_run()_方法。三、判断题1、当创建一个线程对象时,该对象表示的线程就立即开始运行。2、如果前台线程全部死亡,后台线程也会自动死亡。3、同步代码块中的锁对象可以是任意类型的对象。4、静态方法不能使用synchronized关键字来修饰。5、线程结束等待或者阻塞状态后,会进入运行状态。四、简答题1、在Java中创建线程有几种方式?2、sleep()和wait()有什么区别?五、分析题1、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。class RunHandlerpublic void run()System.out.println("run");public class Testpublic static void main(String args)Thread t=new Thread(new RunHandler();t.start();2、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。public class A extends Threadprotected void run()System.out.println("this is run()");public static void main(String args)A a=new A();a.start();3、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。public class Testprivate Object obj=new Object();public synchronized void a()tryobj.wait();System.out.println("waiting");catch(InterruptedException e)System.out.println("Exception");public static void main(String args)new Test().a();六、设计题 1、声明线程类TalkThread,循环打印线程名称10次(表示10次发言机会);创建测试类,创建3个对象(表示3个发言人)并启动线程,观察输出结果(3个发言人的发言顺序)。第四章 Java API一、选择题1、先阅读下面的程序片段String str="abccdefcdh"String arr=str.split("c");System.out.println(arr.length);程序执行后,打印的结果是几?【】A2 B3 C4 D52、以下都是Math类的常用方法,其中用于计算绝对值的方法是哪个【】。Aciel() Bfloor() Cabs() Drandom()3、Random对象能够生成以下哪种类型的随机数?【】。Aint BString Cdouble DA和C4、String s=“abcdedcba”;则s.subString(3,4)返回的字符串是以下选项中的哪个?【】。A、cd B、de C、d D、e5、假如indexOf()方法未能找到所指定的子字符串,则返回以下选项中的哪个?【】。Afalse B0 C-1 D以上答案都不对6、以下Math类的方法中,-4.4通过哪个方法运算后,结果为-5.0【】。Around() Bmin() Cfloor() Dceil()7、已知int i=(int)(Math.random()*100),则i不可能为【】。A0 B1 C99 D1008、已知String str=“abc计算机123”,则str.length()的值为【】。A9 B10 C12 D189、已知String a=“Hello”,String b=a.subString(0,2),则b=【】。AHello BHe CHel Dnull10、下列方法中,【】不是StringBuffer类的成员方法AcompareTo() BindexOf Cappend DcharAt()二、填空题1、在Java中定义了两个类来封装对字符串的操作,它们分别是_和_。2、Java中操作日期的类有_、_、_。3、Math类中用于计算所传递参数平方根的方法是_。4、Java中专门用于将日期格式化为字符串的类是_。5、Java中用于产生随机数的类是_,它位于_包中。6、String类中用于返回字符串字符个数的方法是_。三、判断题1、String对象和StringBuffer对象都是字符串变量,创建后都可以修改。2、用运算符=比较字符串对象时,如果两个字符串的值相同,结果为true。3、Ssytem类中的currentTimeMillis()方法返回一个long类型的值。4、Date、Calendar以及DateFormat类都位于java.util包中。5、String类的方法replace(CharSequence str1, CharSequence str2)返回一个新的字符串,它是通过用str2替换此字符串中出现的所有str1得到的。四、简答题1、String和StringBuffer有什么区别?2、Date和Calendar类有什么区别和联系?第五章 集合类一、选择题1、Java语言中,集合类都位于哪个包中?【 】Ajava.util Bjava.lang Cjava.array Djava.collections2、使用Iterator时,判断是否存在下一个元素可以使用以下哪个方法?【 】Anext() Bhash() ChasPrevious DhasNext()3、在程序开发中,经常会使用以下哪个类来存储程序中所需的配置?【 】AHashMap BTreeSet CProperties DTreeMap4、要想集合中保存的元素没有重复并且按照一定的顺序排列,可以使用以下哪个集合?【 】ALinkedList BArrayList CHashSet DTreeSet5、以下哪个方法不是LinkedList集合中定义的?【 】AgetLast() BgetFirst() Cremove(int index) Dnext()6、获取单列集合中元素的个数可以使用以下哪个方法?Alength() Bsize() Cget(int index) Dadd(Object obj)7、下列集合类型中,不允许集合中存在重复项的是【 】ACollection BList CSet DQueue8、下列关于List接口的说法,错误的是【 】A继承Collection接口 B不允许重复项C支持遍历 D可以使用访问索引9、下列关于Set接口的说法,错误的是【 】A继承Collection接口 B不允许重复项C支持遍历 D可以使用访问索引10、下列关于Collections类的静态方法binarySerach()的说法,错误的是【 】A使用二分搜索法搜索指定列表B如果没有找到,则返回负值C查找前列表必须先排序D如果有多个相同元素,则返回第一个的索引二、填空题1、JDK中提供了一系列可以存储任意对象的类,统称为_2、在创建TreeSet对象时,可以传入自定义的比较器,自定义比较器需要实现_接口。3、使用Iterator遍历集合时,首先需要调用_方法判断是否存在下一个元素,若存在下一个元素,则调用_方法取出该元素。4、使用Iterator遍历集合时,首先需要调用_方法判断是否存在下一个元素,若存在下一个元素,则调用_方法取出该元素。5、集合按照存储结构的不同可分为单列集合和双列集合,单列集合的根接口是_,双列集合的根接口是_。6、Map集合中的元素都是成对出现的,并且都是以_、_的映射关系存在。7、Iterator有一个子类,不仅可以对集合进行从前向右遍历,还可以从后向前遍历,该类是_。8、List集合的主要实现类有_、_,Set集合的主要实现类有_、_,Map集合的主要实现类有_、_。9、Map集合中存在元素需要调用_方法,要想根据该集合的键获取对应的值需要调用_方法。10、java.util包中提供了一个专门用来操作集合的工具类,这个类是_,还提供了一个专门用于操作数组的工具类,这个类是_。三、判断题1Set集合是通过键值对的方式来存储对象的。2集合中不能存放基本数据类型,而只能存放引用数据类型。3如果创建的TreeSet集合中没有传入比较器,则该集合中存入的元素需要实现Comparable接口。4使用Iterator迭代集合元素时,可以调用集合对象的方法增删元素。5LinkedList在内部维护了一个双向循环链表,每一个元素节点都包含前一个元素节点和后一个元素节点的引用。四、简答题1、集合中的List、Set、Map有什么区别?2、请说说Collection和Collections有什么区别?五、分析题1、分析下面的程序,然后写出程序的运行结果:import java.util.*;public class Exp0719 public static void main(String args) Map map = new LinkedHashMap();map.put("1", "Jack"); map.put("2", "Rose");map.put("3", "Lucy");Set keySet = map.keySet();Iterator it = keySet.iterator();while (it.hasNext() Object key = it.next();Object value = map.get(key); System.out.println(key + ":" + value);2、分析下面的程序,然后写出程序的运行结果:import java.util.*;public class Exp0720 public static void main(String args) TreeMap tm = new TreeMap();tm.put("1", "Jack");tm.put("2", "Rose");tm.put("3", "Lucy");Set keySet = tm.keySet(); Iterator it = keySet.iterator();while (it.hasNext() Object key = it.next();Object value = tm.get(key); System.out.println(key + ":" + value);六、设计题1、已知学生类s6_Stud4,成员变量有no(学号,int)、name(姓名,String)、chinese(语文成绩,int)和math(数学成绩,int)。编程,要求按总成绩降序排列,若总成绩相同,按语文成绩降序排列,并编制简单的测试类。第六章 Java IO(输入输出)一、选择题1、以下选项中,哪个是FileOutputStream的父类【】AFile BFileOutput COutputStream DInputStream2、File类中以字符串形式返回文件绝对路径的方法是 【】AgetParent() BgetName()CgetAbsolutePath() DgetPath()3、以下哪个不是InputStream类的方法?【】Aint read(byte) Bvoid flush()CDataOutputStream Davailable4、以下选项中,哪个流中使用了缓冲区技术?【】ABufferedOutputStream BFileInputStreamCDataOutputStream DFileReader5、以下选项中,哪个是File类delete()方法返回值的类型?【】Aboolean Bint CString DInteger6、以下选项中,哪个文件操作类可以实现一次读入多个文件?【】。A、FileReader B、BufferedReaderC、FileInputStream D、SequenceInputStream7、以下对File类的public boolean isFile()方法的描述,哪个是正确的【】。A、判断该File对象所对应的是否是文件B、判断该File对象所对应的是否是目录C、返回文件的最后修改时间D、在当前目录下生成指定的目录8、以下哪个包和Java.nio包共同提供了用于输入/输出流和文件操作的各种类型【】。A、java.lang B、java.util C、java.io D、java.text9、BufferedReader的父类是【】。A、Reader B、FileReader C、PipedReader D、InputStreamReader10、要确定磁盘分区的容量和可用空闲空间等信息,可以使用的类是【】。A、Drive B、Directory C、File D、FileOutputStream二、填空题1、Java中的IO流,按照传输数据不同,可分为_和_。2、在Java中,_类用于操作磁盘中的文件和目录,位于_包中。3、在Java中,_类用来把两个或更多的InputStream输入流对象合并为单个InputStream输入流对象使用。4、Java中提供了一个类_,它不但具有读写文件的功能,并且可以随机地从文件的任何位置开始执行读写数据的操作。5、在Java中,能实现线程间通信的流是_。6、InputStreamReader类是用于将_流转换为_。三、判断题1、如果一个File表示目录下有文件或者子目录,调用delete()方法也可以将其删除。2、装饰设计模式中,装饰对象应该包含一个被装饰对象的引用。3、使用ObjectInputStream与ObjectOutputStream类来读取或存储的对象必须要实现Serializable接口,否则程序将出现NotSerializableException异常。4、InputStream类的close()方法是用于关闭流并且释放流所占的系统资源。5、一般来说,把字符转换成计算机识别的字节序列称为解码,而把字节序列转换为普通人能看懂的明文字符称为编码。四、简答题1、Java流被分为字节流、字符流两大流类,两者有什么区别?六、设计题1、创建新的文本文件myFile.txt,从控制台输入内容并写入源文件中,然后读取并显示myFile.txt内容。2、在指定的文本文件中查找指定的关键字,并打印包含结果的行。文本文件和关键字均由命令行参数指定。第七章 GUI(图形用户界面)一、选择题1、下面四个组件中哪一个不是Component的子类?【】AButton BDialog CLabel DMenuBar2、每个GUI程序中必须包含一个什么组件【】A按钮 B标签 C菜单 D容器3、当鼠标按键被释放时,会调用以下哪个事件处理器方法?【】AmouseReleased() BmouseUp()CmouseOff DmouseLetGo4、ActionEvent的对象会被传递给以下哪个事件处理器方法?【】AaddChangeListener() BaddActionListener()CstateChanged() DactionPerformed()5、下面哪个不是FlowLayout类中表示对齐方式的常量?【】AFlowLayout.LEFT BFlowLayout.CENTERCFlowLayout.VERTICAL DFlowLayout.RIGHT6、下面对Swing的描述,不正确的是【】。A、Swing是在AWT基础上构建的一套新的图形界面系统B、Swing提供了AWT所能够提供的所有功能C、Swing组件是用Java代码来实现的D、Swing组件都是重量级组件7、下面四对AWT和Swing对应组件中,错误的是【】。A、Button和JButton B、Dialog和JDialogC、MenuBar和JMenuBar D、ComboBox和JComboBox8、使用下面哪个组件可以接收用户的输入信息【】。A、JButton B、JLabel C、JTextField D、以上都可以9、JFrame的默认布局管理器为【】。A、BorderLayout B、FlowLayout C、BoxLayout D、GridLayout10、Japplet的默认布局管理器为【】。A、BorderLayout B、FlowLayout C、BoxLayout D、GridLayout11、Jpanel的默认布局管理器为【】A、BorderLayout B、FlowLayout C、BoxLayout D、GridLayout12、