Java程序设计精编教程第2版习题解答.docx
《Java程序设计精编教程第2版习题解答.docx》由会员分享,可在线阅读,更多相关《Java程序设计精编教程第2版习题解答.docx(46页珍藏版)》请在冰豆网上搜索。
Java程序设计精编教程第2版习题解答
习题解答
习题一(第1章)
1.
2.需3个步骤:
1)用文本编辑器编写源文件。
2)使用编译源文件,得到字节码文件。
3)使用解释器运行程序。
3.:
\\\\;.;
4.B
5.源文件的扩展名是,字节码的扩展名是。
6.D。
习题二(第2章)
1.
2.
{
(b){
;
}
(b){
;
}
}
{
(){
("老师好");
}
}
{
([]){
();
((12,236));
((234,120));
();
();
}
}
3.如果源文件中有多个类,但没有类,那么源文件的名字只要和某个类的名字相同,并且扩展名是就可以了,如果有一个类是类,那么源文件的名字必须与这个类的名字完全相同,扩展名是。
4.行尾风格。
习题三(第3章)
1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。
标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。
不是标识符。
2.关键字就是语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。
不是关键字。
。
3.,,,,,,,。
4.属于操作题,解答略。
5.属于操作题,解答略。
6.E{
([]){
'A''Z';
(<)
("");
}
}
7.不可以。
习题四(第4章)
1.110。
不规范。
2.新亲亲斤!
!
。
3.
{
(){
(913112){
("是三等奖");
}
(20959627){
("是二等奖");
}
(87531659){
("是一等奖");
}
{
("未中奖");
}
}
}
4.
;
{
([]){
();
=0;存放电量
=0;用户需要交纳的电费
("输入电量:
");
();
(<=90>=1){
=*0.6计算的值
}
(<=150>=91){
=90*0.6+(90)*1.1计算的值
}
(>150){
=90*0.6+(150-90)*1.1+(150)*1.7计算的值
}
{
("输入电量:
""不合理");
}
("电费5.2f");
}
}
5.E{
([]){
'A''Z';
(<)
("%2c");
();
(<)
("%2c",(32));
}
}
6.5{
([]){
0;
(1<=1000){
(10<){
(0)
;
}
()
("完数:
");
}
}
}
7
E{
([]){
111;
0;
(){
1;
(1<){
*i;
}
;
(>9876)
;
;
}
("满足条件的最大整数:
"+
(1));
}
}
习题五(第5章)
1.用类创建对象时。
2.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。
可以。
3.可以。
不可以。
4.不可以。
5.一个类通过使用运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间。
所有对象的类变量都分配给相同的一处内存,对象共享类变量。
6.。
7.【代码1】【代码4】。
8.100。
9.27。
10.100和20.0。
习题六(第6章)
1.如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是的成员变量作为自己的成员变量,并且也自然地继承了父类中不是的方法作为自己的方法,继承的成员或方法的访问权限保持不变。
当子类和父类不在同一个包中时,父类中的和友好访问权限的成员变量不会被子类继承,也就是说,子类只继承父类中的和访问权限的成员变量作为子类的成员变量;同样,子类只继承父类中的和访问权限的方法作为子类的方法。
如果所声明的成员的变量的名字和从父类继承来的成员变量的名字相同(声明的类型可以不同),在这种情况下,子类就会隐藏掉所继承的成员变量。
2.不可以。
3.类。
4.A类是B类的父类,当用子类创建一个对象b,并把这个对象b的引用放到父类的对象a中时,称a是b的上转型对象。
5.。
6.15.0
8.0。
7.98.0
12。
习题七(第7章)
1.不能。
2.不能。
3.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。
那么该接口变量就可以调用被类实现的接口中的方法。
4.15.0
8。
5.18
15。
习题八(第8章)
1.有效。
2.可以。
3.不可以。
4.大家好,祝工作顺利!
习题九(第9章)
1.。
2.。
3.15
我们。
4.13579。
5.9。
6.E{
([]){
s121="";
s11();
s21();
(s1);
(s2);
s31(s2);
(s3);
}
}
7.E{
([]){
"";
(0);
=(()-1);
();
();
}
}
8.
.*;
E{
([]){
();
();
20001;
("输入年:
");
();
("输入月:
");
();
();
();
[]()返回号码的一维数组
[]"日一二三四五六"();
(){
("%3c");
}
(0<){输出数组a
(70)
("");换行
("%4s"[i]);
}
}
}
{
[];
00;
(){
;
}
(){
;
}
[](){
[][42];
();
(1,1);
()-1;计算出1号的星期
0;
(135781012)
31;
(46911)
30;
(2){
(((40)(1000))(4000))
29;
28;
}
(0<)
a[i]="";
(1<){
a[i](n);
;
}
(<)
a[i]="";
a;
}
}
9..*;
E{
([]){
();
111222;
("输入第一个日期的年、月、日(用空格或回车分隔):
");
1();
1();
1();
("输入第二个日期的年月日(用空格或回车分隔):
");
2();
2();
2();
();
(11-11);
1();
(22-12);
2();
相隔天数((12)/(1000*60*60*24));
(""1+"年"1+"月"1+"日和"+
2+"年"2+"月"2+"日相隔"+相隔天数+"天");
}
}
10..*;
E{
([]){
000;
12;
24;
(0.56);
(c);
(3.14);
(c);
(1);
(c);
(8);
(c);
}
}
11.E{
([]){
="123你是谁?
";
="\\";
=(,"");
();
}
}
12..*;
E{
([]){
="数学87分,物理76分,英语96分";
=();
("[^0123456789.]+");
0;
=0;
(()){
{=();
;
=;
();
}
(){
t=();
}
}
("总分:
""分");
("平均分:
""分");
}
}
习题十(第10章)
1.使用。
2.按字节读取文件,按字符读取文件。
3.不可以。
4.使用对象流写入或读入对象时,要保证对象是序列化的。
5.使用对象流很容易得获取一个序列化对象的克隆,只需将该对象写入到对象输出流,那么用对象输入流读回的对象一定是原对象的一个克隆。
6.
.*;
E{
([]){
("");;
{(f,"");
(0);
();
(m>=0){
1;
(m);
();
(c<=255>=0)
(()c);
{
1;
(m);
[][2];
();
(());
}
}
}
(){}
}
}
7.
.*;
E{
([]){
("");
("");
{();
();
();
();
;
0;
();
(){
;
("");
();
();
}
();
();
();
();
();
}
(e){}
}
}
8.属于上机操作题,解答略。
9..*;
.*;
E{
([]){
=("");
=;
0;
=0;
{=();
("[^0123456789.]+");
(()){
{=();
;
=;
();
}
(){
t=();
}
}
("平均价格:
");
}
(){
();
}
}
}
习题十一(第11章)
1.容器的默认布局是布局。
2.不可以。
3.
.*;
.*;
.*;
.*;
E{
([]){
();
}
}
{
12;
1;
00;
(){
(());
1(6,20);
2(6,20);
(
(1));
(
(2));
2();
(1())();
(300,320);
();
();
();
}
(e){
1();
[]a("[^0123456789.]+");
0;
0;
(0<){
{(a[i]);
}
(){}
}
;
2();
2("\n和:
");
2("\n平均值:
");
}
(e){
(e);
}
(e){
(e);
}
}
4.
.*;
.*;
.*;
.*;
E{
([]){
();
}
}
{
123;
;
;
(){
(());
1(10);
2(10);
3(10);
("");
();
(1);
();
(2);
(3);
("加");
("减");
("乘");
("除");
();
();
();
();
();
();
();
();
(300,320);
();
();
();
}
(e){
n;
(()){
n12;
{n1(1());
n2(2());
12;
3((n));
("+");
}
()
{3("请输入数字字符");
}
}
(()){
n12;
{n1(1());
n2(2());
12;
3((n));
("-");
}
()
{3("请输入数字字符");
}
}
(())
{n12;
{n1(1());
n2(2());
1*n2;
3((n));
("*");
}
()
{3("请输入数字字符");
}
}
(())
{n12;
{n1(1());
n2(2());
12;
3((n));
("/");
}
()
{3("请输入数字字符");
}
}
();
}
}
5..*;
.*;
.*;
E{
([]){
=();
("使用结构");
(100,100,420,260);
}
}
{
;模型
;视图
;视图
;控制器
(){
();
();
();
}
(){
=();
=(5);
=(5);
=(5);
=();
("计算面积");
();
(("上底:
"));
();
(("下底:
"));
();
(("高:
"));
();
();
();
();
(());
}
(e){
{
=(()());
=(()());
=(()());
();
();
();
=();
("面积:
""\n");
}
(){
("\n""\n");
}
}
}
{
;
(){
=()*2.0;
;
}
(a){
=a;
}
(b){
=b;
}
(c){
=c;
}
}
习题十二(第12章)
1.4种状态:
新建、运行、中断和死亡。
2.有4种原因的中断:
(1)将资源从当前线程切换给其他线程,使本线程让出的使用权处于中断状态。
(2)线程使用资源期间,执行了()方法,使当前线程进入休眠状态。
(3)线程使用资源期间,执行了()方法,使得当前线程进入等待状态。
(4)线程使用资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起阻塞。
3.死亡状态,不能再调用()方法。
4.新建和死亡状态。
5.两种方法:
用类或其子类。
6.使用()方法。
7.使我们可以创建多个线程,在处理多线程问题时,我们必须注意这样一个问题:
当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。
我们应对这样的问题作出处理,否则可能发生混乱。
8.当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用()方法。
使用方法可以中断方法的执行,使本线程等待,暂时让出的使用权,并允许其它线程使用这个同步方法。
其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。
9.不合理。
10.“吵醒”休眠的线程。
一个占有资源的线程可以让休眠的线程调用方法“吵醒”自己,即导致休眠的线程发生异常,从而结束休眠,重新排队等待资源。
11.E{
([]){
();
();
();
();
}
}
负责卖票的类。
{300;
()
{(5)
{1;
(()()+
"给我5元钱,这是您的1张入场卷");
}
(10)
{(<1)
{{(()()+"靠边等");
();
(()()+"结束等待");
}
(e){}
}
1;
1;
(()()+
"给我10元钱,找您5元,这是您的1张入场卷");
}
(20)
{(<1<1)
{{(()()+"靠边等");
();
(()()+"结束等待");
}
(e){}
}
1;
1;
1;
(()()+
"给20元钱,找您一张5元和一张10元,这是您的1张入场卷");
}
();
}
}
{;
;
()
{();
();
();
("张小有");
("孙大名");
("赵中堂");
();
}
()
{(())
{(20);
}
(())
{(10);
}
(())
{(5);
}
}
}
12.
E{
([]){
6501=();
65011();
65012();
{(1000);
}
(){}
6501();
}
}
{
12;
(){
=();
1=();
2=();
("王教授");
1("张三");
2("李四");
}
(){
(()1){
{(1()+"正在睡觉,不听课");
(1000*60*10);
}
(e){
(1()+"被老师叫醒了");
}
(1()+"开始听课");
2();吵醒2
}
(()2){
{(2()+"正在睡觉,不听课");
(1000*60*60);
}
(e){
(2()+"被张三叫醒了");
}
(2()+"开始听课");
}
(()){
(1<=3){
("上课!
");
{(500);
}
(e){}
}
1();吵醒1
}
}
}
13.
E{
([]){
();
.司机();
}
}
{
司机;
装运工;
管理员;
(){
司机();
装运工();
管理员();
}
(){
(()司机){
("司机等待装运工装车");
{
装运工();
装运工();
}
(e){}
("司机开车走了");
}
(()装运工){
("装运工等待管理员");
{
管理员();
管理员();
}
(e){}
("装运工把车装载完毕");
}
(()管理员){
("管理员把装车手续办好,打开仓库大门");
}
}
}
14.
习题十三(第13章)
1.对象调用()方法可以返回一个输入流,该输入流指向对象所包含的资源。
通过该输入流可以将服务器上的资源信息读入到客户端。
2.客户端的套接字和服务器端的套接字通过输入、输出流互相连接后进行通信。
3.使用方法(),()会返回一个和客户端对象相连接的对象。
方法会堵塞线程的继续执行,直到接收到客户的呼叫。
。
4.域名。
5.
(1)客户端
.*;
.*;
.*;
.*;
.*;
{([])
{();
}
}
{;
;
;
;
;
;
()
{();
(());
();
("连接服务器");
("发送");
();
(12);
(12);
();
(("输入三角形三边的长度,用逗号或空格分隔:
"));
();
();
(("收到的结果:
"));
();
();
();
();
();
(10,30,300,400);
();
();
(()
{(e)
{(0);
}
});
}
(e)
{(())
{请求和服务器建立套接字连接:
{(())
{}
{("127.0.0.1");
(,4331);
();
(());
=(());
();
();
}
}
(){}
}
(())
{();
()
{{(s);
}
(e1){}
}
}
}
()
{;
()
{{();
(s);
}
(e)
{("与服务器已断开");
;
}
}
}
}
(2)服务器端
.*;
.*;
.*;
{([])
{;
;
;
()
{{(4331);
}
(e1)
{("正在监听");对象不能重复创建
}
{("等待客户呼叫");
();
("客户的地址:
"());
}
(e)
{("正在等待客户");
}
()
{()();为每个客户启动一个专门的线程
}
}
}
}
{;
;
;
;
;
(t)
{;
{(());
(());
}
(e)
{}
}
()
{()
{a[][3];
0;
{()堵塞状态,除非读取到信息
;
(s,",");
(())
{();
{a[i]()();
}
(e)
{("请输入数字字符");
;
}
}
()
{(a[0][1][2])/2.0;
(""(p*([0])*([1])*([2])));
}
}
(e)
{("客户离开");
;
}
}
}
}
6.解答略
习题十四(第14章)
1.
(1)添加数据源,
(2)选择驱动程序,(3)命名数据源名称。
2..*;
.*;
E{
([]){
();
"";
"";
();
("输入数据源名:
");
=();
("输入表名:
");
=();
();
();
("*");
();
}
}
{
"";数据源名
"";表名
;语句
(){
{("");
}
(e){
(e);
}
}
(s){
=();
}
(s){
=();
}
(){
=();
}
(){
;
;
;
{
=":
";
="";
="";
=();
=();
1=();
字段个数=0;
(1()){
字段个数;
}
=();
=();
(()){
(1<=字段个数){
(""(k)+"");
}
("");
}
();
}
(e){
("请输入正确的表名");
}
}
}
3..*;
.*;
E{
([]){
=();
="";
="";
();
();
="";
();
("商品名:
");
=();
"'%[""]%'";
="*""";
();
("表中商品名是""的记录");
();
}