• 144.50 KB
  • 2022-04-22 11:20:51 发布

《Java基础入门》_课后习题答案.doc

  • 15页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《Java基础入门》课后习题答案第1章Java开发入门一、填空题1、JavaEE、JavaSE、JavaME2、JRE3、javac4、bin5、path、classpath二、选择题1、ABCD2、C3、D4、B5、B三、简答题1、面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。2、JRE(JavaRuntimeEnvironment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。JDK(JavaDevelopmentKit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的。初学者学习和使用Java语言时,首先必须下载和安装JDK。JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。四、编程题publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("这是第一个Java程序!");}}第2章Java编程基础一、填空题1、class2、true和false3、单行注释、多行注释、文档注释4、基本数据类型、引用数据类型5、1、2、4、86、&&&|||7、08、5 1、342、56二、判断题1、错2、对3、错4、对5、错三、选择题1、AD2、AD3、C4、ABCD5、C6、A7、AC8、A9、B10、A四、程序分析题1、编译不通过。int值4和b相加时,由于变量b的类型为byte,取值范围没有int类型大,存不下int类型的值,因此编译不通过。2、编译不通过。这是因为y是在最里层的代码块中定义的一个变量,只有在那个代码块中才可使用,在使用y=x;语句时已经超过了y变量的作用域,所以编译无法通过。3、打印结果为:3。4、打印结果为:987五、简答题1、Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4个字节。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=x+3;}elseif(x==0){y=0;}else{y=x*x-1;}returny;}}3、参考答案publicclassTest03{publicstaticvoidmain(String[]args){int[]arr={25,24,12,76,101,96,28};for(inti=0;iarr[j+1]){//比较相邻元素//下面的三行代码用于交换两个元素inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}for(inti=0;i10){thrownewNoThisSongException("您播放的歌曲不存在");}System.out.println("正在播放歌曲");}}publicclassTest03{publicstaticvoidmain(String[]args){Playerplayer=newPlayer();try{ player.play(13);}catch(NoThisSongExceptione){System.out.println("异常信息为:"+e.getMessage());}}}第1章多线程一、填空题1、线程、通信2、Thread、Runnable3、就绪4、synchronized、对象、this5、进程6、新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Terminated)7、10、18、开启一个新线程、run()方法9、wait()、notify()、notifyAll()10、setDaemon(true)、start()二、判断题1、错2、对3、对4、错5、错三、选择题1、B2、AC3、ABC4、BC5、ABD6、ABC7、C8、D9、AB10、ABCD四、程序分析题1、程序不能编译通过,因为RunHandler类没有实现Runnable接口,因此RunHandler的实例对象不能作为参数传递给Thread的构造方法。2、程序不能编译通过,因为Thread的子类A重写的run()方法的访问级别不能低于父类run()方法的。访问级别3、程序不能编译通过,因为同步方法中调用wait()方法的对象必须为同步锁对象。4、t.start();五、简答题1、一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实现运行在线程上的代码。newThread(){publicvoidrun(){}}.start();另一种就是实现java.lang.Runnable接口,同样是在run()方法中实现运行在线程上的代码。newThread(newRunnable(){publicvoidrun(){}}).start()2、调用sleep()方法,正在执行的线程主动让出CPU去执行其他线程,在sleep()方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep()方法并不会释放锁,即使当前线程使用sleep()方法让出了CPU ,但其它被同步锁挡住了的线程也无法得到执行。wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。当其它线程调用了notify()方法后,调用wait()方法的线程就会解除wait状态,当再次获得同步锁后,程序可以继续向下执行。六、编程题1、参考答案publicclassMyThreadextendsThread{publicMyThread(Stringname){super(name);}publicvoidrun(){System.out.println(this.getName());}publicstaticvoidmain(String[]args){newMyThread("Thread1").start();newMyThread("Thread2").start();}}2、参考答案publicclassMyRunnableimplementsRunnable{publicvoidrun(){for(inti=0;i<50;i++){System.out.println("new");}}publicstaticvoidmain(String[]args){newThread(newMyRunnable()).start();for(inti=0;i<100;i++){System.out.println("main");}}}3、参考答案publicclassTest01{publicstaticvoidmain(String[]args){Teachert=newTeacher();newThread(t,"陈老师").start();newThread(t,"高老师").start();newThread(t,"李老师").start();}}classTeacherimplementsRunnable{privateintnotes=80;publicvoidrun(){while(true){ dispatchNotes();//调用售票方法if(notes<=0){break;}}}privatesynchronizedvoiddispatchNotes(){if(notes>0){try{Thread.sleep(10);//经过的线程休眠10毫秒}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+"---发出的笔记"+notes--);}}}4、参考答案publicclassAccumulatorextendsThread{privateintstratNum;publicstaticintsum;publicAccumulator(intstartNum){this.stratNum=startNum;}publicstaticsynchronizedvoidadd(intnum){sum+=num;}publicvoidrun(){intsum=0;for(inti=0;i<10;i++){sum+=stratNum+i;}add(sum);}publicstaticvoidmain(String[]args)throwsException{Thread[]threadList=newThread[10];for(inti=0;i<10;i++){threadList[i]=newAccumulator(10*i+1);threadList[i].start();}for(inti=0;i<10;i++){threadList[i].join();} System.out.println("Sumis:"+sum);}}第1章JavaAPI一、填空题1、String、StringBuffer2、Date、Calendar、DateFormat3、getRuntime()4、sqrt()5、DateFormat6、π、e7、Random、java.util8、length()9、静态10、edcba二、判断题1、错2、错3、对4、错5、对三、选择题1、C2、C3、D4、C5、C6、B7、C8、A9、A10、B四、程序分析题1、程序编译能通过,输出结果如下57.0-8.0-58.1-6.12、程序编译能通过,输出结果如下str.length():15str.charAt(0):dlastIndexOf(m):10substring(2,4):feindexOf(g):5五、简答题 1、String类是不可变类,即字符串值一旦初始化后就不可能改变。StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值。2、Date类用来表示某个特定的瞬间,能够精确到毫秒。而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,这个类中的大部分方法都已被标记过时。Calender类基本取代了Date类,该类中定义了一系列用于完成日期和时间字段操作的方法。Calendar的getTime()方法,getTime()返回一个表示Calendar时间值的Date对象,同时Calendar有一个setTime(Datedate)方法,setTime()方法接收一个Date对象,将Date对象表示的时间值设置给 Calendar对象,通过这两个方法就可以完成Date和Calendar对象之间的转换。六、编程题1、参考答案publicclassTest01{publicstaticvoidmain(String[]args){Stringstr="HelloWorld";//字符串转成char数组char[]ch=str.toCharArray();StringBufferbuffer=newStringBuffer();for(inti=str.length()-1;i>=0;i--){if(ch[i]>="A"&&ch[i]<="Z"){buffer.append(String.valueOf(ch[i]).toLowerCase());}elseif(ch[i]>="a"&&ch[i]<="z"){buffer.append(String.valueOf(ch[i]).toUpperCase());}}System.out.println(buffer.toString());}}2、参考答案importjava.text.DateFormat;importjava.util.Calendar;importjava.util.Date;publicclassTest02{publicstaticvoidmain(String[]args){Calendarcalendar=Calendar.getInstance();calendar.add(Calendar.DATE,100);Datedate=calendar.getTime();DateFormatformat=DateFormat.getDateInstance(DateFormat.FULL);Stringstring=format.format(date);System.out.println(string);}}3、参考答案importjava.util.Random;publicclassTest03{publicstaticvoidmain(String[]args){Randomrand=newRandom();int[]num=newint[5];for(inti=0;i