Java基础入门第三版课后习题答案_第1页
Java基础入门第三版课后习题答案_第2页
Java基础入门第三版课后习题答案_第3页
Java基础入门第三版课后习题答案_第4页
Java基础入门第三版课后习题答案_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章JaVa开发入门

1.对象

2.面向对象、跨平台性

3.javac

4.Java虚拟机(或JVM)

5.JRE

—*、

1.错

2.错

3.错

4.对

5.对

三、

1.C

2.ABCD

3.D

4.ABCD

5.D

四、

1.简答性、面向对象、安全性、跨平台性、支持多线程、分布性。

2.Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为JaVa的源文件进行编

译,生成后缀名为.class的字节码文件,然后JaVa虚拟机将字节码文件进行解释执行,并将

结果显示出来。

五、

HelloWorldjava

1publicclassHelloWorld{

2publicstaticvoidmain(String[]args){

3SyStem.out.println("这是第一个JaVa程序!”);

4)

5}

第2章JaVa编程基础

1.class

2.单行注释、多行注释、文档注释

3・4

4.==

5.容器、O

1.对

2.错

3.对

4.错

5.对

*.、

1.AC

2.A

3.BD

4.C

5.C

四、

IjaVa语言的八种基本数据类型有:byte字节型,占一个字节。Short短整型,占两个字节。

int整型,占4个字节。IOng长整型,占8个字节。float单精度浮点型,占4个字节。double

双精度浮点型,占8个字节。Char字符型,占两个字节。boolean型,表示逻辑值,有true

和false两个值,分别占一个字节。

2.在switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中

时,作用是终止某个CaSe并跳出SWitCh结构。当它出现在循环语句中,作用是跳出循环语

句,执行循环后面的代码;ContinUe语句用在循环语句中,它的作用是终止本次循环,执行

下一次循环。

五、

1.

1publicclassgetSum{

2publicstaticvoidmain(String[]args){

3intsum=0;

4for(inti=1;i<100;i++){

5if(i%2!=0)

6sum+=i;

7}

8System.out.printIn(sum);

9}

10)

2.

1publicclassTest{

2publicstaticvoidmain(String[]args){

3inti=1;

4longsum=1;

5do(

6sum*=i;

7i++;

8)while(i<=5);

9System.out.printIn(sum);

10}

H)

第3章面向对象(上)

1.封装、继承、多态

2.privateʌdefaultʌprotectedʌpublic

3.static

4.private

5.参数类型参数个数

6.this

—-、

1.对

2.对

3.错

4.对

5.对

1.C

2.B

3.D

4.B

5.C

四、

1.

面向对象的特点主要可以概括为封装性、继承性和多态性。

其中封装是面向对象核心思想7将对象的属性和行为封装起来”J不需要让外界知道具

体实现细节7这就是封装思想。

继承性主要描述的是类与类之间的关系”,“通过继承7可以在无需重新编写原有类的情

况下T对原有类的功能进行扩展。

多态性指的是在程序中允许出现重名现象,“它指在一个类中定义的属性和方法被其它类继

承后/它们可以具有不同的数据类型或表现出不同的行为",“这使得同一个属性和方法在不

同的类中具有不同的语义。

2.

(1)构造方法名与类名相同

(2)在构造方法名的前面没有返回值类型的声明

⑶在构造方法中不能使用return语句返回一个值

五、

Examplejava

classResume{

privateStringname;

privateStringsex;

privateintage;

publicResume(){

)

publicResume(Stringname,Stringsex,intage){

this.namename;

this.sex=sex;

this.age=age;

)

publicStringgetName(){

returnname;

)

publicStringgetSe×(){

returnsex;

)

publicintgetAge(){

returnage;

}

publicvoidintroduce(){

System.out.printIn(n姓名:,,+this.getName()+n∖n性别

"+this.getSex()+,,∖n年龄:"+this.getAge());

)

}

publicclassExample{

publicstaticvoidmain(String[]args){

Resumere=newReSUme(“李四","男”,20);

re.introduce();

第4章面向对象(下)

1.继承

2.重写

3.final

4.implements

5.抽象类

6.super

1.错

2.对

3.对

4.对

5.对

6.错

7.对

1.B

2.D

3∙C

4.D

5.C

四、

1.概念:在JaVa中,”类的继承是指在一个现有类的基础上去构建一个新的类,“构建出来的

新类被称作子类T现有类被称作父类/子类会自动拥有父类所有可继承的属性和方法。

好处:继承性主要描述的是类与类之间的关系,“通过继承/可以无需重新编写原有类的情

况下T对原有类的功能进行使用和扩展。

2.

工、应用程序不必为每一个子类编写功能调用T只需要对抽象父类进行处理即可。大大提高

程序的可复用性。

2、子类的功能可以被父类的方法或引用变量所调用T这叫向后兼容可以提高可扩充性和

可维护性。

3、使用多态可以解决项目中紧偶合的问题/提高程序的课扩展性.是OCP原则的一个具体

的实现。

五、

Employeejava

abstractclassEmployee{

privateStringname;//定义姓名name并私有化属性

privateintmonth;//定义生日月份month并私有化属性

publicEmployee(){}〃无参构造器

publicEmployee(Stringname,intmonth){//有参构造方法

this.name=name;〃给属性name初始化赋值

this.month=month;//给属性month初始化赋值

)

//获取属性name的方法

publicStringgetName(){

returnname;//返回name属性

}

〃获取属性month的方法

publicintgetMonth(){

returnmonth;//返回month属性

)

//给属性name赋初始值

publicvoidSetName(Stringname){

this.name=name;//本类中的属性name

)

〃给属性month赋初始值

publicvoidSetMonth(intmonth){

this.month=month;//本类中的属性month

)

//创建一个方法getSalary()用来计算工资,参数Inonth是月份,如果当月是员工生日,奖

励IOo元

publicdoublegetSalary(intmonth){

doublesalary=0;〃定义工资变量

〃判断当前月份是否是员工的生日月份,如果是奖励IOo元

if(this.month==month){

salary=salary+100;

returnsalary;//返回工资salary

)

}

}

SalariedEmployeejava

classSalariedEmployeeextendsEmployee{

privatedoublemonthsalary;//封装monthsalary属性

publicSalariedEmployee(){}//无参构造方法

//有参构造方法参数姓名生日月份月薪

publicSalariedEmployee(Stringname,intmonth,doublemonthsalary){

super(name,month);〃调用父类有参构造方法

this.monthSalary=monthsalary;〃为属性monthSaIary初始化赋值

)

//获取monthsalary的值

publicdoublegetMonthSalary(){

returnmonthsalary;

}

〃给monthsalary赋值

publicvoidSetMonthSalary(doublemonthsalary){

this.monthSalary=monthsalary;

)

//覆盖父类中的方法

publicdoublegetSalary(intmonth){

doublesalary=monthSalary+super.getSalary(month);//定义工资变量

returnsalary;

)

}

HourlyEmployeejava

classHourlyEmployeeextendsEmployee{

privatedoublehoυrlySalary;〃定义属性hourlySalary每小时的工资

privateinthours;//定义属性hours每月工作的小时数

publicHourlyEmployee(){}//无参构造方法

//有参构造方法参数姓名生日月份每小时的工资每月工作的小时数

publicHourlyEmployee(Stringname,intmonth,doubleHourlySalaryzint

hours){

super(name,month);〃调用父类有参构造方法

this.hourlySalary=hourlySalary;〃为属性hourIySaIary初始化赋值

this.hours=hours;〃为属性hours初始化赋值

}

publicdoublegetHourlySalary(){//获取h。UrlySalary的值

returnhourIySalary;

}

publicintgetHours(){〃获取h。UrS的值

returnhours;

)

//定义Set方法设置hourlySalaryhours的值

publicvoidSetHourlySalary(doublehourlySalary){

this.hourlySalary=hourlySalary;

)

publicvoidSetHourly(inthours){

this.hours=hours;

)

//覆盖父类方法

publicdoublegetSalary(intmonth){

if(hours<O){//如果工作小时数小于O输出数据错误

System,out.printIn("数据错误");

returnO;

)

//小于160个小时的按照每个月的工作小时数乘以每小时的工资

elseif(hours<=160)

returnhourIySalary*hours+super.getSalary(month);

//超出160个小时的小时数按照1・5倍计算

elsereturnhourlySalary*l60÷hourlySalary*l.5*(hours-

160)+super.getSalary(month);

)

)

SalesEmployeejava

classSalesEmployeeextendsEmployee{

privatedoublesales;〃定义销售额SaIeS

privatedoublerate;//定义提成率rate

publicSalesEmployee(){}

publicSalesEmployee(Stringname,intmonth,doublesales,doublerate){

super(name,month);

this.sales=sales;

this.rate=rate;

}

publicdoublegetSales(){

returnsales;

)

publicdoublegetRate(){

returnrate;

publicvoidsetSales(doublesales){

this.sales=sales;

)

publicvoidsetRate(doublerate){

this.rate=rate;

}

publicdoublegetSalary(intmonth){

returnthis.getSales()*(l+this.getRate())+super.getSalary(month);

}

}

BasePlusSalesEmployee.java

classBasepiusSalesEmployeeextendsSalesEmployee{

privatedoublebaseSalary;//定义基础工资baseSalary

//无参构造方法

publicBasepiusSalesEmployee(){}

//有参构造方法

publicBasepiusSalesEmployee(Stringname,intmonth,doublesales,double

rate,doublebaseSalary){

super(name,month,sales,rate);

this.baseSalary=baseSalary;

}

//get/set方法对私有属性的调用和设迎

publicdoublegatBaseSalary(){

returnbaseSalary;

}

publicvoidSetBaseSalaryO{

this.baseSalary=baseSalary;

)

publicdoublegetSalary(intmonth){

returnbaseSalary+super.getSalary(month);

}

)

Testjava

〃定义一个测试类

publicclassTest{

publicstaticvoidmain(String[]args){

//声明一个Employee类型的数组,并创建不同子类型的对象

Employee[]employee={newSalariedEmployee(“张三”,Iz6000),new

HourlyEmployee(“李四”,2,50,180),newSalesEmployee(“王

五”,3z6500z0.15)znewBaSePIUSSaleSEmPIoyee("赵六”,4,5000,0,15,2000)};

//打印每个员工的工资

for(inti=0;i<employee.length;i++)

System.out.printIn(Math.round(employee[i].getSalary(10)));

)

第5章异常

1.RuntimeException

2.运行时异常编译时异常

3.throw

4.throws

5.Exception

—*、

1.错

2.对

3.对

4.对

5.错

三、

1.C

2.A

3.C

4.C

5.A

四、

1.

try>catchyfinally、throw、throwsŋ

2.

程序通过try语句捕获可能出现的异常,如果try语句没有捕获到异常,则直接跳出

try∙∙∙catch语句块执行其他程序;如果在try语句中捕获到了异常,则程序会自动跳转到

catch语句中找到匹配的异常类型进行相应的处理。如果try语句捕获到的异常与catch语

句例的异常匹配,则先执行Cateh中的语句,最后执行其他程序语句。

处理编译时期的异常有两种方式如下:

(I)使用tιy∙∙-catch语句对异常进行捕获处理。

(2)使用throws关键字声明抛出异常,调用者对异常进行处理。

第6章JavaAPI

1.StringStringBufferStringBuiIder

2.Iength()

3.DateFormat

4.Random

5.edcba

—、

1.错

2.错

3.对

4.对

5.错

^-、

1.B

2.C

3.A

4.B

5.A

四、

1.

String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而

StringBuilder和StringBUffer表示字符容器,其内容和长度可以随时修改。在操作字符串时,

如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符

进行增删操作,则使用StringBUffer与StringBUikier类。如果有大量字符串拼接操作,不要

求线程安全的情况下,采用StringBuilder更高效。相反如果需要线程安全则需要使用

StringBuffero

2.

_____________基本数据类型_______________对应的包装类_______________

byteByte

charCharacter

intInteger

shortShort

_________________long____________________________________Long___________________

floatFloat

doubleDouble

booleanBoolean

五、

1.

Examplejava

1importjava.util.Random;

2publicclassExample{

3publicstaticvoidmain(String[]args){

4for(inti=0;i<10;i++){

5System.out.printIn(newRandom().nextlnt(100));

6)

7)

8}

2.

TesLjava

1importjava.text.DateFormat;

2importjava.util.Calendar;

3importjava.util.Date;

4publicclassTest{

5publicstaticvoidmain(String[]args){

6Calendarcalendar=Calendar.getlnstance();

7calendar.add(Calendar.DATE,100);

8Datedate=calendar.getTime();

9DateFormatformat=DateFormat.getDatelnstance(DateFormat.FULL);

10Stringstring=format.format(date);

11System.out.printIn(string);

12

13

第7章集合类

1.Collection

2.hashNext()next()

3.Comparable

4.Key(键)、Value(值)

5.数组

—、

1.错

2.对

3.对

4.对

5.对

三、

1.D

2.D

3.C

4.A

5.C

四、

1.

LiSt的特点是元素有序、可重复。LiSt接口的主要实现类有ArrayLiSt和LinkedLiStO

Set的特点是元素无序、不可重复。Set接口的主要实现类有HaShSet和TreeSet。M叩的特

点是存储的元素是键(Key)、值(VaIUe)映射关系,元素都是成对出现的。MaP接口的主要实

现类有HashMap和TreeMapo

2.

由于ArrayLiSt集合的底层是使用一个数组来保存元素,在增加或删除指定位置的元素时,会

导致创建新的数组,效率比较低,因此不适合做大量的增删操作。但这种数组的结构允许程

序通过索引的方式来访问元素,因此使用ArQyLiSt集合查找元素很便捷。

五、

1.

Examplejava

1publicclassExample{

2publicstaticvoidmain(String[]args){

3ArrayListlist=newArrayListo();

4list.add(,'an);

5list.add("bπ);

6list.add(,,cn);

7list.add(,,aπ);

8for(Iteratorit=list.iterator();it.hasNext();){

9System.out.ρrintln(it.next());

10)

11}

12}

2.

Testjava

1importjava.util.*;

2classStudent{

3privateintage;

4privateStringname;

5publicStudent(intagezStringname){

6this.age=age;

7this.name=name;

8)

9publicStringtoString(){

10returnage+":,,+name;

11}

12publicinthashCode(){

13returnname.hashCode()+age;

14)

15publicbooleanequals(Objectobj){

16if(this==obj)

17returntrue;

18if(!(objinstanceofStudent))

19returnfalse;

20Studentstu=(Student)obj;

21returnthis.name.equals(stu.name)&&this.age==stu.age;

22)

23)

24publicclassTest{

25publicstaticvoidmain(String[]args){

26HashSet<Student>hs=newHashSet<Student>();

27hs.add(newStudent(18,“zhangsan”));

28hs.add(newStudent(20,"lisa"));

29hs.add(newStudent(20,,,lisa"));

30System.out.printIn(hs);

31)

32)

第8章泛型

1.参数化

2.泛型类泛型接口泛型方法

3.泛型方法

4.实现

—、

1.错

2.对

3.对

4.对

5.对

^-、

1.D

2.A

3.A

4.AC

四、

1.

(1)提高类型的安全性。

泛型的主要目标是提高JaVa程序的类型安全性,即可以通过泛型定义对变量类型进行

限制,在对变量类型限制之后编译器可以更好的进行类型验证。

(2)避免强制类型转换。

使用泛型的另一个好处是避免源代码中的许多强制类型转换。这使得代码可读性更

高,并且减少出错机会。尽管减少强制类型转换可以降低使用泛型类代码的复杂度,但是

声明泛型变量会带来相应的复杂操作。

五、

1.

1interfaceGeneric<T>{

2publicabstractvoidget(Tt){}

3}

4classGeneric<T>implementsGeneric{

5publicvoidget(Tt){}

6)

第9章反射

1.动态

2.newlnstance()

3.Method

4.getDeclaredFields()

5.Class

—∙、

1.对

2.对

3∙对

4.错

5.对

三、

1.D

2.C

3.AC

4.A

5.C

四、

1.

JaVa的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对

象,可以得到任意一个对象所属的类的信息,可以调用任意一个类的成员变量和方法,可

以获取任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为

JaVa语言的反射机制。

2.

(1)根据类名获取:类名.class;

(2)根据对象获取:对象.getClass0;

(3)根据全限定类名获取:ClaSS.forName(“全限定类名”

第10章IO(输入输出)

1.字节流字符流

2.Reader

3.BufferedInputStreamBufferedOutputStream

4.InputStreamReaderOutputStreamWriter

5.OutputStream

1.对

2.错

3.错

4.对

5.错

三、

1.A

2.A

3.B

4.C

5.C

四、

1.

字节流的两个基类是InputStream和OutputStream,字符流的两个基类是Reader和

Writer,它们都是ObjeCt类的直接子类,字节流是处理以8位字节为基本单位的字节流

类;Reader和Writer类是专门处理16位字节的字符流类。

2.

InPUtStTeamReader是Reader的子类,它可以将一个字节输入流转换成字符输入流,方

便直接读取字符。OUtPUtStreamWriter是Writer的子类,它可以将一个字节输出流转换成

字符输出流,方便直接写入字符。

五、

1.

TestOlJava

1importjava.io.;

2publicclassTestOl{

3publicstaticvoidmain(String[]args)throwsException{

4//字节流拷贝

5FileInputStreamin=newFileInputStream(πE:∕src.txtπ);

6FileOutputStreamout=newFileOutputStream(πE:/desl.txtπ);

7byte[]buf=newbyte[1024];

8intlen;

9while((len=in.read(buf))!=-1){

10out.write(buf,O,len);

11)

12in.close();

13out.close();

14//字符流拷贝

15BufferedReaderbf=newBufferedReader(new

16FileReader(,,E:∕src.txt"));

17BufferedWriterbw=newBufferedWriter(new

18FileWriter(',E:∕des2.txt"));

19Stringstr;

20while((str=bf.readLine())!=null){

21bw.write(str);

22bw.newLine();

23

24bf.close();

25bw.close();

26

27)

第11章JDBC

1.java.sql.DriverManager

2.classpath

3.update

4.预编译

5.1

—∙、

1.错

2.对

3.对

4.对

5.错

*.、

1.B

2.B

3.C

4.C

5.A

5.AD

四、

1.

1、加载并注册数据库驱动;

2、通过DriVerManager获取数据库连接;

3、通过COnneCtiOn对象获取Statement对象;

4、使用Statement执行SQL语句;

5、操作ResuItSet结果集;

6、回收数据库资源。

2.所谓预编译,就是说当相同的SQL语句再次执行时,数据库只需使用缓冲区中的数据,而

不需要对SQL语句再次编译,从而有效提高数据的访问效率。

第12章多线程

1.ThreadRunnable

2.新建状态(New)、就绪状态(RUnnabIe)、运行状态(Running)

3.start()

4.sleep()

5.synchronized

—*、

1.对

2.对

3.对

4.错

5.错

三、

1.C

2.B

3.B

4.D

5.BC

四、

1.

一种是继承java.lang包下的Thread类,覆写Thread类的run()方法,在run()方法中实

现运行在线程上的代码。

newThread(){

publicvoidrun(){}

}.start();

另一种就是实现java.lang.Runnable接口,同样是在run。方法中实现运行在线程上的代

码。

classMyThreadimplementsRunnable{

publicvoidrun(){}

)

2.

同步代码块的作用是控制线程,保证同步代码块中只能有一个线程在运行,保证了多线

程操作数据的安全性。

五、

1.

ExampIeJava

1publicclassExample{

2publicstaticvoidmain(String[]args){

3TicketWindowtw=newTicketWindow();

4newThread(twz”线程1”).Start();

,

5newThread(twz'⅛⅛S2").start();

6)

7)

8classTicketWindowimplementsRunnable{

9privateintnum=100;

10publicvoidrun(){

11while(num>0){

12Threadth=Thread.CurrentThread();

13Stringth_name=th.getName();

14System.out.printin(th_name+”正在发售第n+num―+n张票");

15}

16)

第13章网络编程

1.链路层、网络层、运输层、应用层

2.UDP

3.TCP

4.DatagramSocket

5.ServerSocket

—、

1.错

2.错

3.对

4.对

5.对

三、

1.D

2.A

3.D

4.C

5.D

四、

1.UDP通信与TCP通信的区别在于,UDP中只有发送端和接收端,不区分客户端与服务

器端,计算机之间可以任意地发送数据;而TCP通信是严格区分客户端与服务器端的,在

通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以主动连接客户端,

并且服务器端程序需要事先启动,等待客户端的连接。

2.在TCP连接中必须要明确客户端与服务器端,由客户端向服务器端发出连接请求,每次

连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待

服务器确认:第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求:

第三次握手,客户端再次向服务器端发送确认信息,确认连接。

五、

AskServerjava

/**

*

*在线客服咨询人员

*

*/

publicclassAskServer{

publicstaticvoidmain(String[]args){

〃创建DatagramSocket,发送接收数据都依赖他

DatagramSocketsocket=null;

try(

socket=newDatagramSocket(8888);

Scannerinput=newScanner(System.in);

while(true){

//准备一个空的数据包,用来接收数据

byte[]buf=newbyte[1024];

DatagramPacketpacket=newDatagramPacket(bufλbuf.length);

//接收数据使用空的数据包

socket.receive(packet);

//输出信息

Stringinfo=newString(packet.getData(),0,

packet.getLength());

SyStem.oUt.printIrι(“客户端请求:"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论