《Java基础入门》_课后习题答案.docx
第1章JaVa开发入门四、简答题1、简述JAVA的特点。面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。2、简述JRE与JDK的区别。JRE(JaVaRUntimeEnvirOnment,Java运行时环境),它相当于操作系统部分,提供了JaVa程序运行时所需要的基本条件和许多JaVa基础类,例如,10类、GUl控件类、网络类等。JRE是提供给普通用户使用的,如果你只想运行别人开发好的JaVa程序,那么,你的计算机上必须且只需安装JRE。JDK(JavaDevelopmentKit,JaVa开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给JaVa开发人员使用的。初学者学习和使用JaVa语言时,首先必须下载和安装JDKoJDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。3、简述JAVA的运行机制。JaVa程序运行时,必须经过编译和运行两个步骤。首先将后缀名为Java的源文件进行编译,生成后缀名为.class的字节码文件,然后JaVa虚拟机将字节码文件进行解释执行,并将结果显示出来。五、编程题HelloWorIdjava1 publicclassHelloWorld2 publicstaticvoidmain(Stringargs)3 System.out.printin("这是第一个JaVa程序!;4 5 第2章JaVa编程基础四、简答题1、请列举JaVa语言中的8种基本数据类型,并说明每种数据类型所占用的空间的大小。JaVa语言的八种基本数据类型有:byte字节型,占一个字节。Short短整型,占两个字节。int整型,占4个字节。IOng长整型,占8个字节。float单精度浮点型,占4个字节。double双精度浮点型,占8个字节。Char字符型,占两个字节。boolean型,表示逻辑值,有true和false两个值,分别占一个字节。2、简述&&与&的区别并举例说明。如果使用在表达式之间进行连接,那么无论任何情况,两边的表达式都会参与计算。如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。例如定义EtX=2,y=0;booleanb=x<y<fex2>0表达是会发生被0除异常,因为x/y的表达式执行了。而booleanb=x<y&x/2>0是不会出现这种异常的,因为X<y为false,表达式x/y不会执行。3、简述跳转语句break和COntinUe的作用和区别。方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一样。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。第3章面向对象(上)四、简答题1、简述构造方法和普通的成员方法有什么区别。构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。2、简述JaVa中构造方法须同时满足的条件。(1)方法名与类名相同;(2)在方法名的前面没有返回值类型的声明;(3)在方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束。3、简述JaVa面向对象特性JaVa面向对象有三大特性,封装是将对象的属性和行为封装起来,不需要让外界知道具体实现细节;继承是可以在无需重新编写原有类的情况下,对原有类的功能进行扩展;多态指的是在一个类中定义的属性和功能被其他类继承后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特性。第4章面向对象(下)四、简答题1、简述什么是方法重写。在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写(覆盖)父类的方法。2、简述什么是多态.多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。3、简述抽象类和接口的区别。在JaVa中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。接口可以说是一种特殊的抽象类,接口中只能定义常量、抽象方法、静态方法和默认方法。由于接口的特殊性,在定义时需要使用interface关键字。第5章Java中的常用类四、简答题1、简述String和SIringBUffer有什么区别。String类是不可变类,即字符串值一旦初始化后就不可能改变。SIringBUffer是可变字符串类,类似Smng的缓冲区,可以修改字符串的值。2、简述DaIe和Calender类有什么区别和联系。Date类用来表示某个特定的瞬间,能够精确到毫秒。而在实际应用中,往往需要把一个日期中的年、月、日等信息单独返回进行显示或处理,这个类中的大部分方法都已被标记过时。CaIender类基本取代了Dale类,该类中定义了一系列用于完成日期和时间字段操作的方法。Calendar的getTime()方法,getTime()返回一个表示Calendar时间值的Date对象,同时Calendar有一个setTime(Datedate)方法,setTime()方法接收一个Date对象,将Date对象表示的时间值设置给Calendar对象,通过这两个方法就可以完成Date和Calendar对象之间的转换。3、简述什么是自动装箱和自动拆箱。自动装箱是指将基本数据类型的变量赋给对应的包装类变量,反之,拆箱是指将包装类对象类型直接赋给一个对应的基本数据类型变量。第6章集合四、简答题1、简述什么是集合并列举集合中常用的类和接口。为了使程序能方便的存储和操作数目不固定的一组数据,JDK提供了一套类库,这些类都位于java.ulil包中,统称为集合。集合框架中常用的接口和类有,1.ist、Sei、Array1.istHashSet>Map、HashMap>TreeMapo2、简述集合中的1.ist、Sei、M叩有什么区别。1.ist的特点是元素有序、可重复。1.iSt接口的主要实现类有Array1.iSl和1.inked1.ist。SeI的特点是元素无序、不可重复。Set接口的主要实现类有HaShSel和TreeSet。M叩的特点是存储的元素是键(Key)、值(VaIUe)映射关系,元素都是成对出现的。MaP接口的主要实现类有HashMap和TreeM叩。3、简述Collection和Collections的区别。Collection是一个单例集合接口。它提供了对集合对象进行基本操作的通用方法。COlIeetiOnS是一个工具类。它包含各种有关集合操作的方法。第7章IO(输入榆出)四、简答题1、简述I/O流的概念。JaVa程序通过I/O流来完成输入和输出,流是输入或输出信息的抽象。流通过JaVa的输入/输出系统与外设连接进行数据通信。流是抽象的对象,具体实现代码在javaio包中。2、简述字节流,字符流的区别。字节流的两个基类是InputStream和OutputStream,字符流的两个基类是Reader和Writer,它们都是Objeet类的直接子类,字节流是处理以8位字节为基本单位的字节流类:Reader和Writer类是专门处理16位字节的字符流类。3、简要说明什么是NIO.JaVa中的NIo是为替代传统标准的I/O而出现的。与标准的IO相比,JaVaNIo提供了一种与1/0不同的工作方式。NlO采用内存映射文件的方式来处理输入/输出,它将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了。在标准IO中,使用的是字节流和字符流,而在NIO中,使用的是通道(Channel)和缓冲区(BUffer)。数据总是从通道读入缓冲区,或从缓冲区写入通道。NlC)主要有三大核心部分:BufferChannel和SeleCtOr。其中BUffer可以被看成是一个容器,其本质是一个数组缓冲区,读入或写出到Channel中的所有对象都会先放在Buffer中;Channel是对传统的输入/输出的模拟,在NIo中,所有的数据都需要通过通道流的形式传输;SeleCtor(选择器)用于监听多个通道的事件(例如:连接打开、数据到达等),主要用于多线程处理。第8章GUI(图形用户界面)四、简答题1、请简述GUl中实现事件监听的步骤通过实现XXX1.iStener接口或者继承XXXAdaPter类实现个事件监听器类,并对处理监听动作的方法进行重写创建事件源对象和事件监听器对象调用事件源的addXxx1.isntener()方法,为事件源注册事件监听器对象2、请简述SWing中的布局管理器有哪些。Swing工具在AWT的基础上提供了8种布局管理器,分别为Border1.ayOUt(边界布局管理器)、BOX1.ayoUt(箱式布局管理器)、Card1.ayout(卡片布局管理器)、Flow1.ayout(流式布局管理器)、GridBag1.ayOUt(网格包布局管理器)、Grid1.ayOUt(网格布局管理器)、GroUP1.ayOUt(分组布局管理器)和SPring1.ayOUt(弹性布局管理器)。3、SWing事件处理的过程中涉及哪些对象。 事件源(EVentSOUrCe):事件发生的场所,通常就是产生事件的组件,例如窗口、按钮、菜单等。 事件对象(EVent):封装了GUl组件上发生的特定事件(通常就是用户的一次操作)。监听器(1.iStener):负责监听事件源上发生的事件,并对各种事件做出相应处理的对象(对象中包含事件处理器)。第9章JDBC四、简答题1、简述什么是JDBCoJDBC是一套用于执行SQ1.语句的JaVaAPI。应用程序可通过这套APl连接到关系型数据库,并使用SQ1.语句来完成对数据库中数据的查询、新增、更新和删除等操作。2、简述JDBC的编程步骤。(I)加载数据库驱动(2)通过DriVerManager获取数据库连接(3)通过Connection对象获取Statement对象(4)使用Statement执行SQ1.语句(5)操作ReSUltSet结果集(6)关闭连接,释放资源3、简述PreparedStatement相比Statement优点。(1)代码的可读性和可维护性(2) PreparedStatement尽最大可能提高性能,因为预编译语句有可能被重复调用,所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个函数)就会得到执行。(3)极大地提高了安全性传。递给PreParedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配;在公共Web站点环境下,防止Sq注入问题。第10章多线程四、简答题1、JaVa中有几种方式可以实现多线程。-种是继承java.lang包下的Thread类,覆写Thread类的Rmo方法,在11m()方法中实现运行在线程上的代码。newThread()publicvoidrun().start();另一种就是实现java.lang.Runnable接口,同样是在11m()方法中实现运行在线程上的代码。classMyThreadimplementsRunnable(publicvoidrun()另一种就是实现java.util.concurrent.Callable接口,同样是在call()方法中实现运行在线程上的代码。classMyThreadimplementsCallable<Object>(publicObjectcall()throwsExceptionf)1、Javasleep(longmillis)方法和wait()方法有什么区别。调用sleep(longmillis)方法,正在执行的线程主动让出CPU去执行其他线程,在sleep(Iongmi11is)方法指定的时间过后,CPU才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep(longmillis)方法并不会释放锁,即使当前线程使用Sleep(Iongmillis)方法让出了CPU,但其他被同步锁挡住了的线程也无法得到执行。wait()在一个已经进入了同步锁的线程内进行调用,让当前线程暂时让出同步锁,以便其它正在等待此锁的线程可以得到同步锁并运行。当其它线程调用了notify。或nogAll()方法后,调用Wait()方法的线程就会解除Wait状态,当再次获得同步锁后,程序可以继续向下执行。2、简述为什么要使用多线程。单线程的程序都是从main()方法入口开始执行到程序结束,整个过程只能顺序执行,如果程序在某个地方出现问题,那么整个程序就会崩溃,所以这就说明了单线程在某些方面的脆弱性和局限性。第11章网络编程四、简答题1、简述网络通信协议。在Internet中传输数据都需要遵守一定的规则,这种规则通常被称作网络通信协议。网络通信协议对数据传输格式、传输速率、传输步骤等作了统一规定,通信双方必须共同遵守这个规定才能完成数据的交互。到目前为止,网络通信协议己经有很多种,其中TCP/IP协议在世界范围内应用最为广泛。3、简述TCP协议和UDP协议有什么区别。UDP协议是无连接通信协议,所谓的无连接就是指数据的发送端和接收端不建立逻辑连接。由于UDP协议消耗资源小,通信效率高,通常都会用于音频、视频和普通数据的传输。UDP协议在传输数据时不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。4、.简述Socket类和ServerSocket类各有什么作用。SerVerSOCket类用于创建服务端程序,通过调用SerVerSOCket对象的accept。方法,接收来自客户端的请求。SoCket类用于创建客户端程序,当客户端和服务端的两个SOCket建立了专线连接后,连接的一端既能向另一端连续写入字节,也能从另一端读取字节。SOCket类中定义了getInputStream()方法返回SoCket的输入流对象,定义了getOutputStream()方法返回SOCket的输出流对象。只要连接的一端向该输出流对象写入了数据,连接的另一端就能从其输入流对象中读取到。