Java程序设计实用教程课后答案 钱慎一.docx

上传人:b****6 文档编号:9103387 上传时间:2023-02-03 格式:DOCX 页数:29 大小:26.08KB
下载 相关 举报
Java程序设计实用教程课后答案 钱慎一.docx_第1页
第1页 / 共29页
Java程序设计实用教程课后答案 钱慎一.docx_第2页
第2页 / 共29页
Java程序设计实用教程课后答案 钱慎一.docx_第3页
第3页 / 共29页
Java程序设计实用教程课后答案 钱慎一.docx_第4页
第4页 / 共29页
Java程序设计实用教程课后答案 钱慎一.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

Java程序设计实用教程课后答案 钱慎一.docx

《Java程序设计实用教程课后答案 钱慎一.docx》由会员分享,可在线阅读,更多相关《Java程序设计实用教程课后答案 钱慎一.docx(29页珍藏版)》请在冰豆网上搜索。

Java程序设计实用教程课后答案 钱慎一.docx

Java程序设计实用教程课后答案钱慎一

目录

第一章java基础知识1

第二章java语句基础1

第三章面向对象编程14

第四章面向对象编程26

第五章java常用类和接口7

第六章java异常处理10

第七章图形用户界面处理11

第八章常用Swing组件12

第九章I/O处理15

 

第一章

JAVA语言的特点:

1.简单性2.面向对象性3.分布式与安全性4.与平台无关性5.编译和解释特性6.多线程7.动态执行8.自动废区回收性9.丰富的API文档和类库

 

第二章

1.Java语言对标识符的组成有何要求?

标识符用来标识类名,变量名,方法名,类型名,数组名,文件名的有效序列称为标识符。

简单地说,标识符就是一个名字。

Java语言规定标识符由字母,下划线,美元符号和数字组成,并且第一个字符不能是数字字符。

标识符不能是关键字,但是它可以包含关键字作为它的一部分。

2.如何定义变量和常量?

常量:

关键字+数据类型+常量名称=常量值

如finaldatatypeCONSTNAME=VALUE

变量:

变量声明要三部分:

变量类型,变量名,初始值

intx=1;

3.java的数据类型有哪些?

1)布尔类型:

boolean(逻辑型)trueorfalse默认是false

2)整数类型

byte(字节类型)一个byte8位,占用1个字节例32B默认是0

取值范围是-27—27-1-128~127

short(短整型)一个short16位,占用2个字节例32S默认是0

取值范围是-215—215-1-32768~32767

int(整型)一个int32位,占用4个字节例32默认是0

取值范围是-231—231-1-2147483648~2147483647

long(长整型)一个long64位占用8个字节例32L默认是0

取值范围是-263—263-1-9223372036854774808~9223372036854774807

3)字符型

char用‘单个字符’表示无符号unicode字符例’a’‘1’

取值范围是\u0000~\uFFFF

4)浮点类型分

float(单精度浮点型)一个float32位,占用4个字节例3.2F默认是0.0f

取值范围是3.4e-038—3.4e+038

double(双精度浮点型)一个double64位,占用8个字节例3.2默认是0.0

取值范围是1.7e-038—1.7e+038

4.利用if语句判断两个数是否相等。

publicclassIFstatement{

publicstaticvoidmain(String[]args){

inta=2,b=1;

if(a=b){

System.out.println("a=b")

}

else

System.out.println("a不等于b");

}}

5.利用if-else语句判断某一具体年份是否为瑞年。

publicclassYUNNIANstatement{

publicstaticvoidmain(String[]args){

intx=2010;

if((x%4==0&&x%100!

=0)||(x%4==0&&x%400==0)){

System.out.println("该年为闰年");

}else{

System.out.println("该年为平年");

}}}

6.利用switch语句实现如下功能:

根据用户输入的年份和月份,有程序判断该年的该月有多少天。

publicclassTTIANSHUstatement

{

publicstaticvoidmain(String[]args)

{

inty=0,m=0,n=0;

y=Integer.parseInt(args[0]);

m=Integer.parseInt(args[1]);

switch(m)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

System.out.println(31);

break;

case4:

case6:

case9:

case11:

System.out.println(30);

break;

case2:

{

if((y%4==0&&y%100!

=0)||(y%4==0&&y%400==0))

n=28;

else

n=29;

System.out.println(n);

}

break;

default:

System.out.println("输入错误");

}}}

7.利用两种不同的循环语句计算10的阶乘。

publicclassJIECHENGstatement{

publicstaticvoidmain(String[]args){

intx,sum=1;

for(x=10;x>1;x--){

{

sum=sum*x;

}

}

System.out.println(sum);

}}

8.计算10-100之间的所有素数之和。

publicclassSUSHUstatement{

publicstaticvoidmain(String[]args){

intn,x,sum=0;

for(n=10;n<=100;n++)

{

for(x=2;x

{

if(n%x==0)

break;

}

if(x==n)

{

sum=sum+n;

}

}

System.out.println(sum);

}}

9.如何定义多维数组.

数据类型[][]数组名称;数据类型[]数组名称[];数据类型数组名称[][];

 

第三章

1.定义一个类,仔细观察类中各部分的详细声明。

2.假设在图书管理系统中有一个读者借阅信息类,包括:

属性:

书名,作者,出版社,借书时间,还书时间,应还时间,超期时间,罚款金额。

方法:

设置书名,设置作者。

这只出版社,获取书名,获取出版社信息。

声明并定义该类。

classBooks{

privateStringname;

privateStringauthors;

privateStringpublisher;

privatedoubleborrowtime;

privatedoublereturntime;

privatedoubleneedreturntime;

privatedoubleoverdays;

privatedoublemoney:

publicBooks(){

}

publicbooks(StringName,StringAuthors,StringPublisher,doubleBorrowtime,doubleReturntime,doubleNeedreturntime,doubleOverdays,doubleMoney){

name=Name;

authors=Authors;

publisher=Publisher;

borrowtime=Borrowtime;

returntime=Returntime;

needreturntime=Needreturntime;

overdays=Overdays;

money=Money;

}

publicStringgetName(){

returnname;

}

publicviodsetName(StringName){

name=Name;

}

publicStringgetAuthors(){

returnauthors;

}

publicviodsetAuthors(StringName){

authors=Authors;

}

publicStringgetAuthors(){

returnauthors;

}

publicviodsetAuthors(StringName){

authors=Authors;

}}

3.在2题基础上创建读者借阅信息类的构造函数,重新创建该类的对象,并输出对象基本信息

4.构造函数的作用是什么?

在习题3的基础上添加读者借阅信息类的构造函数,重新创造该类的对象,并输出对象的基本信息。

构造函数作用:

1)对象初始化。

2)引入更多灵活度。

3)java语言中可以不定义构造函数。

5.说明Static声明属性,方法和不用static限制的区别。

声明属性:

定义静态数据的简单方法就是在属性的前面加上关键字static。

方法:

静态方法的定义和非静态方法的定义在形式上没有什么区别,只是在声明为静态方法前面加上一个关键字static。

区别:

1.在外部调用静态方法时,可以使用“类名.方法名”的方式,也可以使用“对象名.方法名”的方式。

而实例方法只有后面这种方式。

也就是说,调用静态方法无需创建对象。

2.静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和ing太方法),不能访问非你高抬的成员变量。

6.Java语言中的访问控制符有几个?

分别说明他们对类中成员的限制作用。

属性和方法的访问控制符有四种:

private,缺省控制符,protected,public

同一类中同一包中同一子类中通用(其它)

privateYes

缺省控制符YesYes

protectedYesYesYes

publicYesYesYesYes

7.final的作用是什么?

final方法

将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。

final类

当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。

第四章

1.子类和父类的关系是什么?

怎样实现父子类之间成员和成员方法的隐蔽?

继承,是对有着共同特性的多类事物,进行再抽象成一个类。

这个类就是多类事物的父类。

父类的意义在于可以抽取多类事物的共性。

子类中有和父类中可访问(可继承到子类)的同名同返回类型同参数表的方法,就会覆盖从父类继承来的方法。

怎样实现父子类之间成员和成员方法的隐蔽。

没找到!

2.方法的覆盖和重载区别是什么?

重载与覆盖的区别:

1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

3.this和super的含义是什么?

关键字this和super是常用来指代父类和子类对象的关键字。

1.当一个方法引用自身对象时,就使用this关键字。

.想通过构造方法将外部传入的参数赋值给类的成员变量,构造方法的形式参数名称与类的成员名称变量名相同。

.假设有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接受一个代表其所在容器的参数。

.构造方法是在产生对象时被JAVA系统自动调用的,不能再程序中像调用其他方法一样去调用构造方法.

2.super关键字表示的是对当前对象的直接父类对象,是对当前对象的直接父类对象的引用。

4.抽象类和接口的概念是什么?

两者区别在哪?

抽象类就是没有具体对象的概念类,是其所有子类的公共属性的集合,所以使用抽象类的一大优点就是可以充分利用这些公共属性来提高开发和维护程序需的效率。

接口是JAVA实现多重能继承功能的一种手段,一种结构。

区别:

接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.

5.包的概念是什么,如何创建和使用包?

一个包就是一些提供访问保护和命名空间管理的相关类与接口的集合。

使用包的目的就是使类更容易查找和使用,防止命名冲突,以及进行控制访问。

创建包要创建包,只需要在java源程序的第一行输入package命令即可package包名

使用包不知道

第五章

1.String和StringBuffer有什么区别?

String类表示了定长,不可变的字符序列。

StringBuffer类可以插入其中或追加其后的字符或字符串,还可以针对这些添加操作自动地增加空间,同时它通常还有比实际需要更多的预留字符,从而允许增加空间。

2.在Vector对象中存放10位学生的姓名,学号,3门成绩,并输出。

importjava.util.*;

publicclassVectorTest{

publicstaticvoidmain(String[]args)throwsException

{Vectorvector1=newVector();

Vectorvector=vector1.getClass().newInstance();

Strings1="杜昊凡学号08成绩988088";

Strings2="寇晔学号16成绩988088";

Strings3="夏雪艳42成绩988088";

Strings4="孟春颖27成绩988088";

Strings5="冯媛07成绩988088";

Strings6="张颖喆52成绩988088";

Strings7="史瑞辉32成绩988088";

Strings8="肖博40成绩988088";

Strings9="宋鹏38成绩988088";

Strings10="王丹48成绩988088";

vector.add(s1);

vector.add(s2);

vector.add(s3);

vector.add(s4);

vector.add(s5);

vector.add(s6);

vector.add(s7);

vector.add(s8);

vector.add(s9);

vector.add(s10);

for(inti=0;i

{Stringin=(String)vector.get(i);

System.out.println(in);

}}}

3.编写程序,输入年月日,计算输入日期为星期几。

importjava.util.*;

publicclassDatelsWeek{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.print("请输入年份:

");

intyear=sc.nextInt();

System.out.print("请输入月份:

");

intmonth=sc.nextInt();

System.out.print("请输入号数日:

");

intday=sc.nextInt();

inttotal=0;

intweek=2;

booleana=true;

a=(year%400==0)||(year%4==0&&year%100!

=0);

year=year-1979;

total=(year-1)*365+year/4+year/100+year/400;

switch(month-1){

case12:

total=total+31;

case11:

total=total+30;

case10:

total=total+31;

case9:

total=total+30;

case8:

total=total+31;

case7:

total=total+31;

case6:

total=total+30;

case5:

total=total+31;

case4:

total=total+30;

case3:

total=total+31;

case2:

if(a){

total=total+29;

}

else{

total=total+28;

}

case1:

total=total+31;

}

total=total+day-1;

week=(week+total)%7;

if(month==12&&day>31){

System.out.println("请输入正确日期");

}

else{

switch(week){

case1:

System.out.println("星期一");break;

case2:

System.out.println("星期二");break;

case3:

System.out.println("星期三");break;

case4:

System.out.println("星期四");break;

case5:

System.out.println("星期五");break;

case6:

System.out.println("星期六");break;

case7:

System.out.println("星期天");break;

}}}}

4.编程产生0-100之间的随机数。

publicclassrandom

{publicstaticvoidmain(Stringargs[])

{inti;

inta[]=newint[10];

for(i=0;i<10;i++)

a[i]=(int)(Math.random()*100);

for(i=0;i<1;i++)

System.out.println(a[i]);

}}

5.如何获得系统的当前时间。

importjava.util.*;

classData

{publicstaticvoidmain(Stringargs[])

{Calendarcalendar=Calendar.getInstance();

calendar.setTime(newDate());

String年=String.valueOf(calendar.get(Calendar.YEAR)),

月=String.valueOf(calendar.get(Calendar.MONTH)+1),

日=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)),

星期=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)-1);

inthour=calendar.get(Calendar.HOUR_OF_DAY),

minute=calendar.get(Calendar.MINUTE),

second=calendar.get(Calendar.SECOND);

System.out.println("现在的时间是:

");

System.out.println(""+年+"年"+月+"月"+日+"日"+"星期"+星期);

System.out.println(""+hour+"时"+minute+"分"+second+"秒");

}}

6.在Java程序中调用其他可执行的外部程序,执行,并输出程序的运行时间

 

第六章

1.简述异常的概念。

异常是程序运行过程中出现的错误。

2.请画出Java语言中异常的层次结构图。

(p121页图6.2)

3.请描述throw和throws语言的区别

区别一:

throw是语句抛出一个异常;throws是方法抛出一个异常;

throw语法:

throw<异常对象>

在方法声明中,添加throws子句表示该方法将抛出异常。

throws语法:

[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]

其中:

异常类可以声明多个,用逗号分割。

区别二:

throws可以单独使用,但throw不能;

区别三:

throw要么和try-catch-finally语句配套使用,要么与throws配套使用。

但throws可以单独使用,然后再由处理异常的方法捕获。

4.自定义一个异常类,从命令行获取两个数据,进行除法运算,如果分母为0或输入的不是两个参数,均异常抛出。

importjava.io.*;

publicclasstext

{

publicstaticvoidmain(Stringargs[])throwsIOException

{

intnum1,num2,sum;

Stringstr;

BufferedReaderbuf;

buf=newBufferedReader(newInputStreamReader(System.in));

System.out.println("Inputthefirstinteger:

");

str=buf.readLine();

num1=Integer.parseInt(str);

System.out.print("Inputthesecondinteger:

");

str=buf.readLine();

num2=Integer.parseInt(str);

sum=num1/num2;

System.out.println("Thesumis"+sum);

}}

 

第七章

1.简述AWT和Swing两者的关系。

swing组件都是从awt组件继承的,swi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1