Java程序设计课堂练习题.docx
- 文档编号:27247207
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:28
- 大小:32.87KB
Java程序设计课堂练习题.docx
《Java程序设计课堂练习题.docx》由会员分享,可在线阅读,更多相关《Java程序设计课堂练习题.docx(28页珍藏版)》请在冰豆网上搜索。
Java程序设计课堂练习题
《Java程序设计》练习题
第一章Java编程基础
一、选择题
1、可以使用【 】实用程序编译Java程序。
A.javaB.javacC.javadocD.cmd
2、可以使用【 】实用程序运行java应用程序。
A.javaB.javacC.javadocD.cmd
3、可以使用【 】实用程序从Java源文件代码中抽取Java文档注释,生成相应的HTML帮助文档。
A.javaB.javacC.javadocD.cmd
4、Java编译单元(源程序文件)的扩展名为【 】
A..javaB..classC..docD..exe
5、编译Java源程序文件产生的字节码文件的扩展名为【 】
A..javaB..classC..htmlD..exe
6、以下Java应用程序执行入口main方法的声明中,正确的是【 】
A、publicstaticvoidmain()
B、publicstaticvoidmain(String[]args)
C、publicstaticintmain(String[]args)
D、publicvoidmain(String[]args)
7、Java属于以下哪种语言?
【 】
A.机器语言B.汇编语言C.高级语言D.以上都不对
8、下面哪种类型的文件可以在Java虚拟机中运行?
【 】
A..javaB..jreC..exeD..classs
9、Java程序中声明包的关键字是【 】
A、java B、package C、javadoc D、cmd
10、如果JDK的安装路径为“d:
\jdk”,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?
【 】
A、d:
\jdk;B、d:
\jdk\bin;C、d:
\jre\bin;D、d:
\jre;
11、下列说法中,不正确的是【 】。
A、一个Java源文件编译通过后,得到的结果文件数也只有一个
B、一个Java源文件经过编译后,得到的文件的扩展名一定是.class
C、一个Java源文件只能有一个public类定义,其类名与源文件名相同
D、一个Java源文件可以包含多个类
12、安装好JDK后,在其bin目录下有许多exe可执行文件,其中“”命令的作用是以下哪一种?
【 】。
A、Java文档制作工具B、Java解释器
C、Java编译器D、Java启动器
13、以下关于变量的说法错误的是【 】
A.变量名必须是一个有效的标识符
B.变量在定义时可以没有初始值
C.变量一旦被定义,在程序中的任何位置都可以被访问
D.在程序中,可以将一个byte类型的值赋给一个int型类型的变量,不需要特殊声明
14、假设intx=2,三元表达式x>0?
x+1:
5的运行结果是以下哪一个?
【 】
A.0B.2C.3D.5
15、下面的运算符中,用于执行除法运算的是哪个?
【 】
A./B.\C.%D.*
16、下面哪种写法可以实现访问数组arr的首个元素?
【 】
A.arr[0]B.arr(0)C.arr[1]D.arr
(1)
17、以下哪个选项可以正确创建一个长度为3的二维数组?
【 】
A.newint[2][3]B.newint[3][]
C.newint[][3]D.以上答案都不对
18、关于变量的作用域,下列说法错误的是【 】
A.类成员变量的作用域为类定义体
B.方法参数的作用域为方法体
C.对于for语句中定义的变量,当for语句执行完时,该变量就消亡了
D.在方法voidf(inti)的for语句块中,可以声明变量“inti;”
19、Java字符类型采用的是Unicode编码方案,每个Unicode码占用的位数是【 】。
A.8B.16C.32D.64
20、下列赋值语句中,不合法的是【 】。
A.floatf=B.floatf2=
C.doubled=D.doubled2=
二、填空题
1、Java的三个技术平台分别是_javase___、__javaee__、__javame__。
2、Java程序的运行环境简称之为_jre___。
3、编译Java程序需要使用__javac__命令。
4、_____path____环境变量用来存储Java的编译和运行工具所在路径,而___classpath__环境变量则用来保存Java虚拟机要运行的“.class”文件路径。
5、在Java语言中,main()方法的参数是表示命令行参数的String数组,其中,__args[0]__表示第一个参数。
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、tryB、catchC、throwsD、throw
5、关于super关键字以下说法哪些是不正确的【 】。
A.super关键字可以调用父类的构造方法
B.super关键字可以调用父类的普通方法
C.super与this不能同时存在于同一个构造方法中
D.super与this可以同时存在于同一个构造方法中
6、类中的一个成员方法被下面哪个修饰符修饰时,该方法只能在本类被访问?
【 】。
A.publicB.protectedC.privateD.default
7、在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?
【 】
A、inheritsB、implementsC、extendsD、modifies
8、System类位于以下哪个包中?
【 】。
A、B、C、D、
9、以下关于继承的说法,正确的是【 】。
A.继承可以避免代码复制和相关的代码维护等问题
B.Java语言中一个子类可以继承多个基类(多重继承)
C.Java语言不允许实现多个接口
D.子类可以继承父类的方法,但不能重新改写父类的方法
10、下列修饰符中,不能用来修饰类的是【 】。
A.publicB.abstractC.finalD.static
二、填空题
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类位于下列哪个包中?
【 】
A.B.C.D.
2、线程调用sleep()方法后,该线程将进入以下哪种状态?
【 】
A.就绪状态B.运行状态C.阻塞状态D.死亡状态
3、在以下哪种情况下,线程进入就绪状态?
【 】。
A.线程调用了sleep()方法时B.线程调用了join()方法
C.线程调用了yield()方法时D.线程调用了notify()方法
4、对于通过实现Runnable接口创建线程,下面说法不正确的是【 】。
A、适合多个相同程序代码的线程去处理同一个资源的情况
B、把线程同程序代码、数据有效的分离,很好地体现了面向对象的设计思想
C、可以避免由于Java的单继承带来的局限性
D、编写简单,可以不通过Thread类直接创建线程
5、对于死锁的描述,下面四种说法不正确的是【 】。
A.当两个线程互相等待对方释放同步锁时会发生死锁
B.Java虚拟机没有检测和处理死锁的措施
C.一旦出现死锁,程序会发生异常
D.处于死锁状态的线程处于阻塞状态,无法继续运行
6、下面四个选项中,不是线程进入阻塞状态的原因是【 】。
A.线程试图获取某个对象的同步锁,而该锁被其他线程持有
B.线程调用了另一个线程的join()方法
C.线程调用了一个阻塞式的IO方法
D.线程调用了setDaemon(booleanb)方法
7、要创建一个线程类,可通过继承【 】类。
A、ObjectB、ThreadC、RunnableD、Task
8、通过实现【 】接口,可创建一个线程类
A、ObjectB、ThreadC、RunnableD、Task
9、通过重写继承的方法【 】,可实现线程要执行的逻辑操作。
A.start()B.main()C.run()D.execute()
10、通过调用线程对象实例的【 】方法,可以启动执行该线程。
A.start()B.main()C.run()D.execute()
二、填空题
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、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。
如果不能编译通过,请说明原因。
classRunHandler{
publicvoidrun(){
"run");
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
Threadt=newThread(newRunHandler());
();
}
}
2、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。
如果不能编译通过,请说明原因。
publicclassAextendsThread{
protectedvoidrun(){
"thisisrun()");
}
publicstaticvoidmain(String[]args){
Aa=newA();
();
}
}
3、阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。
如果不能编译通过,请说明原因。
publicclassTest{
privateObjectobj=newObject();
publicsynchronizedvoida(){
try{
();
"waiting");
}catch(InterruptedExceptione){
"Exception");
}
}
publicstaticvoidmain(String[]args){
newTest().a();
}
}
六、设计题
1、声明线程类TalkThread,循环打印线程名称10次(表示10次发言机会);创建测试类,创建3个对象(表示3个发言人)并启动线程,观察输出结果(3个发言人的发言顺序)。
第四章JavaAPI
一、选择题
1、先阅读下面的程序片段
Stringstr="abccdefcdh"
String[]arr=("c");
程序执行后,打印的结果是几?
【 】
A.2B.3C.4D.5
2、以下都是Math类的常用方法,其中用于计算绝对值的方法是哪个【 】。
A.ciel()B.floor()C.abs()D.random()
3、Random对象能够生成以下哪种类型的随机数?
【 】。
A.intB.StringC.doubleD.A和C
4、Strings=“abcdedcba”;则(3,4)返回的字符串是以下选项中的哪个?
【 】。
A、cdB、deC、dD、e
5、假如indexOf()方法未能找到所指定的子字符串,则返回以下选项中的哪个?
【 】。
A.falseB.0C.-1D.以上答案都不对
6、以下Math类的方法中,通过哪个方法运算后,结果为【 】。
A.round()B.min()C.floor()D.ceil()
7、已知inti=(int)()*100),则i不可能为【 】。
A.0B.1C.99D.100
8、已知Stringstr=“abc计算机123”,则()的值为【 】。
A.9B.10C.12D.18
9、已知Stringa=“Hello”,Stringb=(0,2),则b=【 】。
A.HelloB.HeC.HelD.null
10、下列方法中,【 】不是StringBuffer类的成员方法
A.compareTo()B.indexOfC.appendD.charAt()
二、填空题
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类都位于包中。
5、String类的方法replace(CharSequencestr1,CharSequencestr2)返回一个新的字符串,它是通过用str2替换此字符串中出现的所有str1得到的。
四、简答题
1、String和StringBuffer有什么区别?
2、Date和Calendar类有什么区别和联系?
第五章集合类
一、选择题
1、Java语言中,集合类都位于哪个包中?
【】
A.B.C.D.
2、使用Iterator时,判断是否存在下一个元素可以使用以下哪个方法?
【】
A.next()B.hash()C.hasPreviousD.hasNext()
3、在程序开发中,经常会使用以下哪个类来存储程序中所需的配置?
【】
A.HashMapB.TreeSetC.PropertiesD.TreeMap
4、要想集合中保存的元素没有重复并且按照一定的顺序排列,可以使用以下哪个集合?
【】
A.LinkedListB.ArrayListC.HashSetD.TreeSet
5、以下哪个方法不是LinkedList集合中定义的?
【】
A.getLast()B.getFirst()C.remove(intindex)D.next()
6、获取单列集合中元素的个数可以使用以下哪个方法?
A.length()B.size()C.get(intindex)D.add(Objectobj)
7、下列集合类型中,不允许集合中存在重复项的是【】
A.CollectionB.ListC.SetD.Queue
8、下列关于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、包中提供了一个专门用来操作集合的工具类,这个类是________,还提供了一个专门用于操作数组的工具类,这个类是____________。
三、判断题
1.Set集合是通过键值对的方式来存储对象的。
2.集合中不能存放基本数据类型,而只能存放引用数据类型。
3.如果创建的TreeSet集合中没有传入比较器,则该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 课堂 练习题