• 177.00 KB
  • 2022-04-22 11:19:56 发布

Java基础入门习题答案.doc

  • 24页
  • 当前文档由用户上传发布,收益归属用户
  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;ihobbies=newHashSet();//gender选中的性别privateStringgender="";//JCheckBox复选框的事件监听器privateActionListenerlistener1=newActionListener(){publicvoidactionPerformed(ActionEvente){JCheckBoxcb=(JCheckBox)e.getSource();//选中的复选框把文本添加到Set集合中if(cb.isSelected()){hobbies.add(cb.getText());//反之从集合中移除}else{ hobbies.remove(cb.getText());}print();}};//JRadioButton单选框的事件监听器privateActionListenerlistener2=newActionListener(){publicvoidactionPerformed(ActionEvente){JRadioButtonjb=(JRadioButton)e.getSource();gender=jb.getText();print();}};//打印方法privatevoidprint(){//清空文本域area.setText("");//如果Set集合中有元素,打印兴趣if(hobbies.size()>0)area.append("你的兴趣爱好有:");Iteratorit=hobbies.iterator();while(it.hasNext()){area.append(it.next()+"");}//如果gender不为空字符串,打印性别if(!"".equals(gender))area.append("你的性别为:"+gender);}publicInformation(){//添加标签、单选和复选按钮panel.add(lb1);panel.add(cb1);panel.add(cb2);panel.add(cb3);panel.add(lb2);panel.add(rb1);panel.add(rb2);bg.add(rb1);bg.add(rb2);//为单选和复选按钮添加事件监听器cb1.addActionListener(listener1);cb2.addActionListener(listener1);cb3.addActionListener(listener1);rb1.addActionListener(listener2); rb2.addActionListener(listener2);//将JPanel面板和JScrollPane面板添加到JFrame容器中Containercontainer=this.getContentPane();container.add(panel,BorderLayout.NORTH);container.add(pane,BorderLayout.CENTER);this.pack();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}publicstaticvoidmain(String[]args){newInformation();}}3、参考答案importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassMyMenuextendsJFrameimplementsActionListener{JLabellabel=newJLabel("请选择菜单",JLabel.CENTER);JMenuItemaaMenuItem,baMenuItem;MyMenu(){JMenuBarmenuBar=newJMenuBar();JMenuaMenu=newJMenu("菜单A");JMenubMenu=newJMenu("菜单B");JMenuItemaaMenuItem=newJMenuItem("菜单项AA");JMenuItemabMenuItem=newJMenuItem("菜单项AB");JMenuItembaMenuItem=newJMenuItem("菜单项BA");menuBar.add(aMenu);menuBar.add(bMenu);aMenu.add(aaMenuItem);aMenu.addSeparator();aMenu.add(abMenuItem);bMenu.add(baMenuItem);aaMenuItem.addActionListener(this);abMenuItem.addActionListener(this);baMenuItem.addActionListener(this);setJMenuBar(menuBar);getContentPane().add(label,BorderLayout.CENTER);}publicvoidactionPerformed(ActionEvente){JMenuItemsource=(JMenuItem)(e.getSource());label.setText("选择了菜单:"+source.getText());label.setHorizontalAlignment(JLabel.CENTER);} publicstaticvoidmain(Stringargs[]){JFrameframe=newMyMenu();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(300,200);frame.setVisible(true);}}第1章网络编程一、填空题1、面向连接、客户端、服务器端2、2、0-655353、链路层、网络层、运输层、应用层4、InetAddress5、DatagramPacket、DatagramSocket二、判断题1、错2、对3、对4、错5、对三、选择题1、C2.A3、ABD4、B5.、A6、D7、B8、C四、简答题1、在Internet中传输数据都需要遵守一定的规则,这种规则通常被称作网络通信协议。网络通信协议对数据传输格式、传输速率、传输步骤等作了统一规定,通信双方必须共同遵守这个规定才能完成数据的交互。到目前为止,网络通信协议已经有很多种,其中TCP/IP协议在世界范围内应用最为广泛。2、UDP协议是无连接通信协议,所谓的无连接就是指数据的发送端和接收端不建立逻辑连接。由于UDP协议消耗资源小,通信效率高,通常都会用于音频、视频和普通数据的传输。UDP协议在传输数据时不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。3、ServerSocket类用于创建服务端程序,通过调用ServerSocket对象的accept()方法,接收来自客户端的请求。Socket类用于创建客户端程序,当客户端和服务端的两个Socket建立了专线连接后,连接的一端既能向另一端连续写入字节,也能从另一端读取字节。Socket类中定义了getInputStream()方法返回Socket的输入流对象,定义了getOutputStream()方法返回Socket的输出流对象。只要连接的一端向该输出流对象写入了数据,连接的另一端就能从其输入流对象中读取到。五、编程题1、参考答案importjava.net.InetAddress;publicclassTest01{publicstaticvoidmain(String[]args)throwsException{InetAddresslocalAddress=InetAddress.getLocalHost();InetAddressremoteAddress=InetAddress.getByName("www.oracle.com"); System.out.println("本机的IP地址:"+localAddress.getHostAddress());System.out.println("本地的主机名:"+localAddress.getHostName());System.out.println("甲骨文的IP地址:"+remoteAddress.getHostAddress());}}1、参考答案接收端:importjava.net.*;publicclassTest02{publicstaticvoidmain(String[]args)throwsException{byte[]buf=newbyte[1024];DatagramSocketds=newDatagramSocket(8001);DatagramPacketdp=newDatagramPacket(buf,1024);ds.receive(dp);Stringstr=newString(dp.getData(),0,dp.getLength());System.out.println(str);ds.close();}}发送端importjava.net.*;publicclassTest03{publicstaticvoidmain(String[]args)throwsException{DatagramSocketds=newDatagramSocket(3000);Stringstr="helloworld";DatagramPacketdp=newDatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),8001);ds.send(dp);ds.close();}}3、参考答案服务端importjava.io.*;importjava.net.*;publicclassTest04{publicstaticvoidmain(String[]args)throwsException{newTCPServer().listen();}}classTCPServer{publicvoidlisten()throwsException{ServerSocketserverSocket=newServerSocket(8002); Socketclient=serverSocket.accept();OutputStreamos=client.getOutputStream();os.write("helloworld").getBytes());Thread.sleep(5000);os.close();client.close();}}客户端importjava.io.*;importjava.net.*;publicclassTest05{publicstaticvoidmain(String[]args)throwsException{newTCPClient().connect();}}classTCPClient{publicvoidconnect()throwsException{Socketclient=newSocket(InetAddress.getLocalHost(),8002);InputStreamis=client.getInputStream();byte[]buf=newbyte[1024];intlen=is.read(buf);System.out.println(newString(buf,0,len));client.close();}}'