《《Java基础入门》课后习题》由会员分享,可在线阅读,更多相关《《Java基础入门》课后习题(33页珍藏版)》请在人人文库网上搜索。
1、Java基础入门课后习题第1章 Java开发入门一、填空题1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。2、Java程序的运行环境简称之为JRE_____。3、编译Java程序需要使用_javac_____命令。4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径。二、选择题1、以下选项中,哪些属于JDK工具?(。
2、多选)ABCDA、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?CA、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?DA、.javaB、.jreC、.exeD、.class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?BA、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为:d:jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量pat。
3、h设置为以下哪个选项?BAd:jdk;Bd:jdkbin;Cd:jrebin;Dd:jre;三、问答题1、简述Java的特点。2、简述JRE与JDK的区别。四、编程题使用记事本编写一个HelloWorld程序,在dos命令行窗口编译运行。请按照题目的要求编写程序并给出运行结果。第2章 Java编程基础一、填空题1、Java中的程序代码都必须在一个类中定义,类使用__class____关键字来定义。2、布尔常量即布尔类型的两个值,分别是_true_____和_flase_____。3、Java中的注释可分为三种类型,分别是_单行注释/__、__多行注释_/*/__、文档/注释*/______。4。
4、、Java中的变量可分为两种数据类型,分别是_基本数据类型_____和_引用数据类型_____。5、在Java中,byte类型数据占____1__个字节,short类型数据占__2____个字节,int类型数据占___4___个字节,long类型数据占____8__个字节。6、在逻辑运算符中,运算符___&___和___&___用于表示逻辑与,__|____和__|____表示逻辑或。7、若x=2,则表达式(x+)3的值是__0___。8、若inta=2;a+=3;执行后,变量a的值为__5____。9、若inta=12,45,34,46,23;,则a2=__34____。10、若inta32。
5、=123,345,34,56,34,56,则a21=__56____。二、判断题1、Java语言不区分大小写。错2、0xC5表示的是一个十六进制整数。对3、continue语句只用于循环语句中,它的作用是跳出循环。错4、“/*/”中可以嵌套“/”注释,但不能嵌套“/*/”注释。对5、-5%3的运算结果是2。错三、选择题1、以下选项中,哪些属于合法的标识符?(多选)ADA、Hello_WorldB、classC、123usernameD、username1232、关于方法重载的描述,以下选项中哪些是正确的?(多选)(AD)ABDA、方法名必须一致B、返回值类型必须不同C、参数个数必须一致D、参数。
6、的个数或类型不一致3、以下关于变量的说法错误的是?CA、变量名必须是一个有效的标识符B、变量在定义时可以没有初始值C、变量一旦被定义,在程序中的任何位置都可以被访问D、在程序中,可以将一个byte类型的值赋给一个int类型的变量,不需要特殊声明4、以下选项中,switch语句判断条件可以接收的数据类型有哪些?(多选)ABCDA、intB、byteC、charD、short5、假设intx=2,三元表达式x0x+1:5的运行结果是以下哪一个?CA、0B、2C、3D、56、下面的运算符中,用于执行除法运算是哪个?AA、/B、C、%D、*7、下列语句哪些属于循环语句?(多选)ACA、for语句B、i。
7、f语句C、while语句D、switch语句8、下面哪种写法可以实现访问数组arr的第1个元素AA、arr0B、arr(0)C、arr1D、arr(1)9、以下哪个选项可以正确创建一个长度为3的二维数组?(B)CA、newint23;B、newint3;C、newint3;D、以上答案皆不对10、请先阅读下面的代码。intx=1;inty=2;if(x%2=0)y+;elsey-;+y);上面一段程序运行结束时,变量y的值为下列哪一项?AA、1B、2C、3D、switch语句四、程序分析题阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果。否则请说明编译失败的原因。代码。
8、一:b=7(编译不通过。int值4和b相加时,由于变量b的类型为byte,取值范围没有int类型大,存不下int类型的值,因此编译不通过)publicclassTest01publicstaticvoidmain(Stringargs)byteb=3;b=b+4;+b);代码二:不能,y只在有效(编译不通过。这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码)publicclassTest02publicstaticvoidmain(Stringargs)intx=12;inty=96;is+x);is+y);y=x;is+x);代码三:3因为没有break,,所以4以后都执行pub。
9、licclassTest03publicstaticvoidmain(Stringargs)intx=4,j=0;switch(x)case1:j+;case2:j+;case3:j+;case4:j+;case5:j+;default:j+;代码四:987publicclassTest04publicstaticvoidmain(Stringargs)intn=9;while(n6)n-;五、简答题1、请列举Java语言中的八种基本数据类型,并说明每种数据类型所占用的空间大小。Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4个字节。。
10、long长整型,占8个字节。float单精度浮点型,占4个字节。double双精度浮点型,占8个字节。char字符型,占两个字节。boolean型,表示逻辑值,有true和false两个值,分别占一个字节。2、 简述&与&的区别并举例说明。如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用“&”进行连接,当“&”左边的表达式为false,则不会执行其右边的表达式。例如定义intx=2,y=0;booleanb=x0表达是会发生被0除异常,因为x/y的表达式执行了。而booleanb=x0是不会出现这种异常的,因为x0)y=0(x=0)x21(x10时。
11、,paly()方法用throw关键字抛出NoThisSongException异常,创建异常对象时,调用有参的构造方法,传入“您播放的歌曲不存在”。3) 在测试类中创建Player对象,并调用play()方法测试自定义的NoThisSongException异常,使用trycatch语句捕获异常,调用NoThisSongException的getMessage()方法打印出异常信息。第5章 多线程一、填空题1、一个应用程序中有多条并发执行的线索,每条线索都被称作一个线程______,它们会交替执行,彼此间可以进行_通信_____。2、在实现多线程的程序时有两种方式,一是通过继_Thread__。
12、___承类,二是通过实现Runnable______接口。3、yield()方法只能让相同优先级或者更高优先级、处于_就绪_____状态的线程获得运行的机会。4、在Java语言中,同步方法需要用到关键字_synchronized_,对于同步方法而言无需指定同步锁,它的同步锁是方法所在的_对象_____,也就是_this_____(关键字)。5、在多任务系统中,每个独立执行的程序称之为_线程_____,也就是“正在运行的程序”。6、线程的整个生命周期分为五个阶段,分别是_新建_____、就绪______、_运行_____、_阻塞_____、和死亡_____。7、线程的优先级用110之间的整数来表。
13、示,其中__10___代表优先级最高,__1___代表优先级最低。8、在Thread类中,提供了一个start()方法,该方法用于启动线程______,当新线程启动后,系统会自动调用__run()____方法。9、要想解决线程间的通信问题,可以使用__wait()____、notify()______、_notifyALL()_____方法。10、要将某个线程设置为后台线程,需要调用该线程的_setDaemon(true)_____方法,该方法必须在_start()_____方法之前调用。二、判断题1、当我们创建一个线程对象时,该对象表示的线程就立即开始运行。错2、如果前台线程全部死亡,后台线。
14、程也会自动死亡。对3、同步代码块中的锁对象可以是任意类型的对象。对4、静态方法不能使用synchronized关键字来修饰。错5、线程结束等待或者阻塞状态后,会进入运行状态。错三、选择题1、Thread类位于下列哪个包中?BA、java.ioB、java.langC、java.utilD、java.awt2、关于线程的创建过程,下面四种说法正确的有哪些?(多选)ACA、定义Thread类的子类,重写Thread类的run()方法,创建该子类的实例对象,调用对象的start()方法B、定义Thread类的子类,重写Thread类的run()方法,创建该子类的实例对象,调用对象的run()方法C、。
15、定义一个实现Runnable接口的类并实现run()方法,创建该类实例对象,将其作为参数传递给Thread类的构造方法来创建Thread对象,调用Thread对象的start()方法D、定义一个实现Runnable接口的类并实现run()方法,创建该类对象,然后调用run()方法3、对于通过实现Runnable接口创建线程,下面说法正确的有哪些?(多选)ABCA、适合多个相同程序代码的线程去处理同一个资源的情况B、把线程同程序代码、数据有效的分离,很好的体现了面向对象的设计思想C、可以避免由于Java的单继承带来的局限性D、编写简单,可以不通过Thread类直接创建线程4、对于线程的生命周期,。
16、下面四种说法正确的有哪些?(多选)ABC(BC)A、调用了线程的start()方法,该线程就进入运行状态(就绪,还要获得CPU使用权)B、线程的run()方法运行结束或被未catch的InterruptedException等异常终结,那么该线程进入死亡状态C、线程进入死亡状态,但是该线程对象仍然是一个Thread对象,在没有被垃圾回收器回收之前仍可以像引用其它对象一样引用它D、线程进入死亡状态后,调用它的start()方法仍然可以重新启动5、对于死锁的描述,下面四种说法正确有哪些?(多选)AB(ABD)A、当两个线程互相等待对方释放同步锁时会发生死锁B、Java虚拟机没有检测和处理死锁的措施。
17、C、一旦出现死锁,程序会发生异常D、处于死锁状态的线程处于阻塞状态,无法继续运行6、下面四个选项中,哪些是线程进入阻塞状态的原因?(多选)ABCA、线程试图获取某个对象的同步锁,而该锁被其它线程持有B、线程调用了另一个线程的join()方法C、当线程调用了一个阻塞式的IO方法D、线程调用了setDaemon(booleanb)方法7、线程调用sleep()方法后,该线程将进入以下哪种状态?CA、就绪状态B、运行状态C、阻塞状态D、死亡状态8、在以下哪种情况下,线程进入就绪状态?DA、线程调用了sleep()方法时B、线程调用了join()方法(终止)C、线程调用了yield()方法时D、线程调。
18、用了notify()方法9、下面四个选项中,对线程同步的目的描述正确的有哪些?(多选)AD(AB)A、锁定资源,使同一时刻只有一个线程去访问它,防止多个线程操作同一个资源引发错误B、提高线程的执行效率C、让线程独占一个资源D、让多个线程同时使用一个资源10、对于wait()方法,下面说法正确的是?(多选)ABCDA、wait()方法的调用者是同步锁对象B、wait()方法使线程进入等待状态C、调用同一锁对象的notify()或notifyAll()方法可以唤醒调用wait()方法等待的线程D、调用wait()方法的线程会释放同步锁对象四、程序分析题阅读下面的程序,分析代码是否能编译通过,如果能。
19、编译通过,请列出运行的结果。如果不能编译通过,请说明原因。1.代码一:不能,RunHandler没有继承Thread,不能用Thread创建对象(程序不能编译通过,因为RunHandler类没有实现Runnable接口,因此RunHandler的实例对象不能作为参数传递给Thread的构造方法。)classRunHandlerpublicvoidrun()run);publicclassTestpublicstaticvoidmain(Stringargs)Threadt=newThread(newRunHandler();t.start();2.代码二:thisisrun(程序不能编译通过,。
20、因为Thread的子类A重写的run()方法的访问级别不能低于父类run()方法的。访问级别)publicclassAextendsThreadprotectedvoidrun()publicstaticvoidmain(Stringargs)Aa=newA();a.start();3.代码三:Exception(程序不能编译通过,因为同步方法中调用wait()方法的对象必须为同步锁对象)publicclassTestprivateObjectobj=newObject();publicsynchronizedvoida()tryobj.wait();改this.wait()catch(Int。
21、erruptedExceptione)publicstaticvoidmain(Stringargs)newTest().a();4.为了使下面的程序能够输出“Threadisrunning”,请在在空格处填上相应的代码。publicclassBimplementsRunnablepublicstaticvoidmain(Stringargs)Threadt=newThread(newB();__t.start()_____________________/此处填空publicvoidrun()isrunning);publicvoidgo()start(1);publicvoidstart(。
22、inti)五、简答题1、 java中有几种方法可以实现一个线程?请举例说明。一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。newThread()publicvoidrun().start();newThread(newRunnable()publicvoidrun().start()2、 sleep()和wait()有什么区别调用sleep()方法,正在执行的线程主动让出CPU去执行其他线程,在sleep()方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不。
23、会释放锁,即使当前线程使用sleep()方法让出了CPU,但其它被同步锁挡住了的线程也无法得到执行。wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。当其它线程调用了notify()方法后,调用wait()方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行。六、编程题请按照题目的要求编写程序并给出运行结果。1、通过继承Thread类的方式创建两个线程,在Thread构造方法中指定线程的名字,并将这两个线程的名字打印出来。2、通过实现Runnable接口的方式创建一个新线程,要求main线程打印10。
24、0此次“main”,新线程打印50次“new”。3、模拟传智播客的三个老师同时分发80份学习笔记,每个老师相当于一个线程。4、编写10个线程,第一个线程从1加到10,第二个线程从11加到20.第十个线程从91加到100,最后再把十个线程结果相加。第6章 JavaAPI一、填空题1、在Java中定义了两个类来封装对字符串的操作,它们分别是String_和_StringBuffer____。2、Java中的操作日期的类有_Date___、_Calendar___、DateFormat____等。3、在程序中若想取得一个Runtime实例,则可以调用Runtime类的静态方法getRnutime()。
25、_____。4、Math类中用于计算所传递参数平方根的方法是_sqrt()____。5、Java中专门用于将日期格式化为字符串的类是_DateFormat____。6、Math类中有两个静态常量PI和E,分别代表数学常量____和_e___。7、Java中的用于产生随机数的类是_Random___,它位于java.util____包中。8、String类中用于返回字符串字符个数的方法是_length()____。9、System类中所提供的属性和方法都是_静态___的,想要引用这些属性和方法,直接使用System类调用即可。10、已知sb为StringBuffer的一个实例,且sb.toStr。
26、ing()的值为abcde,则执行sb.reverse()后,sb.toString()的值为_”edcba_”___。二、判断题1、String对象和StringBuffer对象都是字符串变量,创建后都可以修改。错2、用运算符“=”比较字符串对象时,如果两个字符串的值相同,结果为true。错3、System类中的currentTimeMillis()方法返回一个long类型的值。对4、Date、Calendar以及DateFormat类都位于java.util包中。错分别java.util.Calendarjava.text.DateFormat5、String类的方法replace(Cha。
27、rSequencesrt1,CharSequencesrt2)返回一个新的字符串,它是通过用srt2替换此字符串中出现的所有srt1得到的。对三、选择题。1、先阅读下面的程序片段:CStringstr=abccdefcdh;Stringarr=str.split(c);程序执行后,打印的结果是几?A、2个B、3个C、4个D、5个2、以下都是Math类的常用方法,其中用于计算绝对值的方法是哪个?CA、ceil()B、floor()C、abs()D、random()3、Random对象能够生成以下哪种类型的随机数?DA、intB、stringC、doubleD、A和C4、Strings=abcde。
28、dcba;则s.substring(3,4)返回的字符串是以下选项中的哪个?CA、cdB、deC、dD、e5、假若indexOf()方法未能找到所指定的子字符串,则返回以下选项中的哪个?CA、falseB、0C、-1D、以上答案都不对6、要产生20,999之间的随机整数可以使用以下哪个表达式?BA(int)(20+Math.random()*97)B.20+(int)(Math.random()*980)C.(int)Math.random()*999D.20+(int)Math.random()*9807、以下Math类的方法中,-4.4通过哪个方法运算后,结果为-5.0?D(C)A.rou。
29、nd()四舍五入B.min()C.floor()小于参数最大整数D.ceil()大于参数最小整数8、下面的程序段执行后,输出的结果是以下哪个选项?AStringBufferbuf=newStringBuffer(Beijing2008);buf.insert(7,);A、Beijing2008B、Beijing2008C、Beijing2008D、Beijing#20089、阅读下面的程序:Apublicclasstestpublicstaticvoidmain(Stringargs)inti;floatf=2.3f;doubled=2.7;i=(int)Math.ceil(f)*(int)M。
30、ath.round(d);程序执行后,运行结果为以下哪个选项?A、9B、5C、6D、6.110、先阅读下面的程序片段:BStringstr1=newString(java);Stringstr2=newString(java);StringBufferstr3=newStringBuffer(java);对于上述定义的变量,以下表达式的值为true的是哪个?A、str1=str2;B、str1.equals(str2);C、str1=str3;D、以上都不对四、程序分析题。阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。代码一:57.0-。
31、8.0-58.1-6.1publicclassApublicstaticvoidmain(Stringargs)-8.1);-6.1);代码二:str.length():15str.charAt(0):dlastIndexOf(m):10substring(2,4):feindexOf(g):5publicclassBpublicstaticvoidmain(Stringargs)Strings=dfferghuklmbdfd;+s.length();+s.charAt(0);m):+s.lastIndexOf(m);+s.substring(2,4);+s.indexOf(g);五、简答题1。
32、、String和StringBuffer有什么区别?String类是不可变类,即字符串值一旦初始化后就不可能改变。StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值。2、 Date和Calender类有什么区别和联系?Date类用来表示某个特定的瞬间,能够精确到毫秒。而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,这个类中的大部分方法都已被标记过时。Calender类基本取代了Date类,该类中定义了一系列用于完成日期和时间字段操作的方法。Calendar的getTime()方法,getTime()返回一个表示Calendar时间。
33、值的Date对象,同时Calendar有一个setTime(Datedate)方法,setTime()方法接收一个Date对象,将Date对象表示的时间值设置给Calendar对象,通过这两个方法就可以完成Date和Calendar对象之间的转换。六、编程题请按照题目的要求编写程序并给出运行结果1、 编写一个程序,实现字符串大小写的转换并倒序输出,要求如下1)使用for循环将字符串“HelloWorld”从最后一个字符开始遍历。2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符3)定义一个Stri。
34、ngBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString()方法,并将得到的结果输出。2、 计算从今天算起,100天以后是几月几号,并格式化成xxxx年x月x日的形式打印出来。提示:1)调用Calendar类的add()方法计算100天后的日期2)调用Calendar的getTime()方法返回Date类型对象2)使用FULL格式的DateFormat对象,调用format()方法格式化Date对象3、利用Random类来产生5个2050之间的随机整数。提示:n-m(n、m均为整数,nm)之间的随机数的公式为n+(newRando。
35、m().nextInt(m-n+1)。第7章 集合类一、填空题1、JDK中提供了一系列可以存储任意对象的类,统称为。2、在创建TreeSet对象时,可以传入自定义的比较器,自定义比较器需要实现接口。3、Collection有两个子接口分别是List和Set,List集合的特点是,Set集合的特点是。4、使用Iterator遍历集合时,首先需要调用方法判断是否存在下一个元素,若存在下一个元素,则调用方法取出该元素。5、集合按照存储结构的不同可分为单列集合和双列集合,单列集合的根接口是,双列集合的根接口是。6、Map集合中的元素都是成对出现的,并且都是以、的映射关系存在。7、Iterator有一个子类,不仅可以对集合进行从前向后遍历,还可以从后向前。