java语言程序设计教程第二版习题解答Word文档格式.docx

上传人:b****6 文档编号:16977219 上传时间:2022-11-27 格式:DOCX 页数:35 大小:30.20KB
下载 相关 举报
java语言程序设计教程第二版习题解答Word文档格式.docx_第1页
第1页 / 共35页
java语言程序设计教程第二版习题解答Word文档格式.docx_第2页
第2页 / 共35页
java语言程序设计教程第二版习题解答Word文档格式.docx_第3页
第3页 / 共35页
java语言程序设计教程第二版习题解答Word文档格式.docx_第4页
第4页 / 共35页
java语言程序设计教程第二版习题解答Word文档格式.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

java语言程序设计教程第二版习题解答Word文档格式.docx

《java语言程序设计教程第二版习题解答Word文档格式.docx》由会员分享,可在线阅读,更多相关《java语言程序设计教程第二版习题解答Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。

java语言程序设计教程第二版习题解答Word文档格式.docx

Java的字节码(byte‐code)是与平台无关的是虚拟机的机器指令

7.简述Java程序的运行过程。

首先编写Java源代码程序,通过Java虚拟机编译成.class的字节码程序。

然后通过然后再执行翻译所生成的字节代码,属于先解释后执行方式。

在运行时,字节码载入器用于调入包含、继承所用到的所有类,确定内存分配,变成真正可执行的机器码。

由,再通过字节码校验器就是用于检验字节码是否正确,如果通过校验,再由系统执行平台解释执行。

8.Java程序分哪两类?

各有什么特点?

Java程序根据程序结构的组成和运行环境的不同可以分为两类:

JavaApplication(Java独立应用程序)和JavaApplet(Java小应用程序)。

Java独立应用程序是一个完整的程序,需要独立的Java解释器来解释执行;

而Java小应用程序则是嵌在Web页面中的非独立应用程序,由Web浏览器内部所包含的Java解释器来解释执行,为Web页面增加交互性和动态性。

习题二

Java语言对标识符命名有何规定,下面这些标识符哪些是合法的,哪些是不合法的。

1)Myname2)JavaLanguage3)2Person4)_is_Has5)$12345。

合法的标识符有:

Myname、JavaLanguage、_is_Has

非法的标识符有:

2Person、$12345

2.Java有哪些基本数据类型,与C/C++相比有何特点?

复合数据类型是哪几种?

基本数据类型有:

整型数据类型(字节整型、短整型、整型、长整型),实数数据类型(单精度实数、双精度实数),字符数据类型和布尔数据类型。

与C/C++相比,Java的数据类型与C++相似,但有两点不同:

①在Java语言中所有的数据类型是确定的,与平台无关,所以在Java中无sizeof操作符;

②Java中每种数据类型都对应一个默认值。

这两点体现了Java语言的跨平台性和完全稳定性。

Java的复合类型是由用户根据需要自己定义并实现其运算的数据类型,主要有类类型、接口和数组等。

Java的字符类型采用何种编码方案?

有何特点?

Java的字符类型采用16位Unicode(全球文字共享编码)方式,用16位来表示东西方字符。

由于采用Unicode编码方案,使得Java在处理多语种的能力方面得到大大提高,从而为Java程序在基于不同语种之间实现平滑移植铺平了道路。

Java有哪些运算符和表达式?

请写出下面这些表达式的运算结果(设a=2,b=–3,f=true)。

1)––a%b++2)(a>

=1)&

&

a<

=12?

a:

b)3)f^(a>

b)4)(––a)<

<

a。

Java的运算符主要由算术运算符、关系运算符、条件运算符、位运算符、逻辑运算符以及赋值运算符。

表达式由运算符、操作数和方法调用,按照语言的语法规则构造而成的符号序列。

表达式的结构是:

1)––a%b++的结果是:

1

2)(a>

b)的结果是:

3)f^(a>

false

4)(––a)<

a的结果是:

0

5.Java中标准输入输出使用哪种系统类、使用哪个对象和方法?

通过系统类java.lang.System达到访问标准输入输出的功能。

System类管理标准输入输出流和错误流,有以下三个对象:

1)System.out:

把输出送到默认的显示(通常是显示器)。

常使用输出的方法有print()、

println()等。

2)System.in:

从标准输入获取输入(通常是键盘)。

常实现输入处理的方法有read()、skip()等;

3)System.err:

把错误信息送到默认的显示。

常见方法有print()、println()、write()等。

6.阅读下列程序,写出运行结果。

(1).

publicclassExample0401{

publicstaticvoidmain(String[]args){

for(intx=0;

x<

10;

x++){

inty=x*x+x+41'

;

System.out.println("

\t"

+x+"

+y);

}

(2).菲波拉契数列:

publicclassExample02{

System.out.print(0)

intfib0=0;

intfib1=1;

intfib2=fib0+fib1

while(fib2<

100){

fib0=fib1;

fib1=fib2;

fib2=fib1+fib0;

System.out.print("

"

+fib1);

(3).产生0~20的随机整型,然后计算并打印它的结果:

importjava.util.Random;

publicclassExample03{

Randomrandom=newRandom();

floatx=random.nextFloat();

intn=Math.round(21*x);

longf=1;

intk=1;

do

f*=k++;

while(k<

=n);

System.out.println(n+"

!

="

+f);

(4).三重循环:

publicclassExample05{

for(inti=0;

i<

3;

i++){

resume:

for(intj=0;

j<

j++){

for(intk=0;

k<

k++){

\n"

+i+"

"

+j+'

+k);

if(i==1&

k==0)breakresume;

\tEndofkloop;

j="

+j);

\tEndofjloop;

i="

+i);

\tEndofiloop."

(1)的运行结果如下:

041

143

247

353

461

571

683

797

8113

9131

(2)的运行结果如下:

0,1,2,3,5,8,13,21,34,55,89

(3)的运行结果如下:

运行结果取决于随机数。

求随机数的阶乘,其中的一个运行结果如下:

3!

=6

(4)的运行结果如下:

000

001

002

Endofkloop;

j=0

010

011

012

j=1

020

021

022

j=2

Endofjloop;

i=0

100

i=1

200

201

202

210

211

212

220

221

222

i=2

Endofiloop.

7.分析下面两个三重循环程序之间的差别,写出结果,然后上机进行检验。

(1).三重循环1:

publicclassExample01{

intcount=0;

i++)

4;

j++)

5;

++count;

j==2&

k==3)breakresume;

\tcount="

+count);

(2).三重循环2:

}。

在三重循环1中,System.out.println()语句是在三重循环之外的,输出的是count的最后的值,而三重循环2中,System.out.println()语句在循环体内,输出的是每次循环后count发生变化的值。

三重循环1的运行结果是:

count=54

三重循环2的运行结果是:

count=20

count=34

count=54

习题三

1.Java程序中字符串常量使用什么类表示?

字符串变量又使用什么类来表示?

它们的主要区别在哪里?

字符串常量常用java.lang.String类表示,字符串变量常用java.lang.StringBuffer类来表示。

它们的主要区别在于:

String对象一旦创建不会发生变化,具有只读性质;

而StringBuffer对象创建后可扩充和修改字符串对象的内容。

2.请说明程序“Strings1="

Ilike"

s1+="

Java!

"

”和程序“StringBuffers1=newStringBuffer("

);

s1.append("

);

”的区别。

根据你得出的结论,如果程序需要处理大量的字符串连接操作,应该尽量使用String类还是StringBuffer类?

程序“Strings1="

”中,s1表示字符串变量,在执行第一次运算时,s1赋值一个字符串对象“Ilike”,而第二次运算,s1被赋值另一个字符串对象“IlikeJava”,二次运算中赋值的对象完全不同。

而对于程序“StringBuffers1=newStringBuffer("

”,变量s1在两次运算中始终表示一个字符串对象,只是这个字符串对象的内容发生了变化。

程序在处理大量的字符串连接操作,尽量使用StringBuffer类的对象来处理。

这是因为StringBuffer对象可以扩充和修改字符串对象,有利于减少系统资源的消耗。

3.编写一个Applet,使之能将定长字符串转化成可变长字符串,并能实现字符串中指定字符的替换。

Applet的程序如下:

packagejavabook.answer.ch03;

importjavax.swing.JApplet;

importjava.awt.*;

publicclassDemo3extendsJApplet{

/**

*字符串替换操作

*

*/

publicvoidinit(){

try{

str=this.getParameter("

str"

strR=newStringBuffer(str);

pch=this.getParameter("

ch1"

).charAt(0);

tch=this.getParameter("

ch2"

}catch(Exceptione){

初始化数据出现错误!

for(inti=0;

i<

strR.length();

i++){

if(strR.charAt(i)==pch){//替换

strR.setCharAt(i,tch);

publicvoidpaint(Graphicsg){

g.drawString("

原来的字符串:

+str,20,20);

替换后的字符串:

+strR,120,120);

privateStringstr;

privateStringBufferstrR;

privatecharpch;

privatechartch;

对应的HTML的文件如下:

html>

head>

title>

关于字符串替换<

/title>

/head>

body>

appletcode="

Demo3.class"

width=300height=300>

paramname="

value="

Hello"

>

l"

c"

/applet>

/body>

/html>

4.阅读下面的程序,写出程序的运行结果。

importjava.util.*;

publicclassStringTest{

publicstaticvoidmain(Stringargs[]){

Strings1="

IloveJava."

Strings2="

IlikeJava."

Strings3="

StringBuffers4=newStringBuffer(s1);

StringBuffers5=newStringBuffer("

Append"

charc1[]=newchar[s1.length()];

s1的长度="

+s1.length());

s1和s2相同吗?

+(pareTo(s2)==0?

相同"

:

不同"

));

s2和s3相同吗?

+(pareTo(s3)==0?

s1连接s2后的字符串为:

+s1.concat(s2));

System.out.println(s1.startsWith("

J"

7));

System.out.println(s1.endsWith("

."

s1.getChars(0,s1.length(),c1,0);

c1.length;

System.out.println(c1[i]+"

System.out.println(s1.toUpperCase()+"

s4的长度="

+s4.length());

System.out.println(s4.append(s5));

System.out.println(s4.insert(2,365.25f));

System.out.println(s4.insert(0,"

INSERTED"

charc2[]=newchar[s4.length()];

s4.getChars(0,s4.length(),c2,0);

c2.length;

System.out.println(c2[i]+"

System.out.println(s4.toString().toUpperCase());

上列程序StringTest的运行结果如下:

不同

相同

IloveJava.IlikeJava.

true

I

l

o

v

e

J

a

.

ILOVEJAVA.

s4的长度=12

IloveJava.Append

I365.25loveJava.Append

INSERTEDI365.25loveJava.Append

N

S

E

R

T

D

3

6

5

2

A

p

n

d

INSERTEDI365.25LOVEJAVA.APPEND

s1的长度=12

习题四

写出类的格式声明中允许使用的关键字。

它们代表的含义是什么?

类的格式声明允许使用的关键字有:

abstract、static、final、public、class、implements以及extends等。

abstract表示定义一个抽象类,static用于定义静态嵌套类、final定义一个最终类,public定义一个公共类、class表示定义一个类、implements表示定义的类实现的接口以及用extends表示该类继承某类。

2.类的成员数据的修饰符是否和类的成员方法部分相同,部分不同。

请写出与成员方法不同的修饰符是哪些?

它们的含义是什么?

类的成员数据修饰符有部分和成员方法相同,如访问控制符、static、final等。

有部分的修饰符存在不同。

对于成员变量与成员方法不同的修饰符有:

transient(说明变量不能被序列化)、volatile(表示变量能从主存读取,进行异步修改);

对于成员方法与成员变量不同的修饰符有:

native(定义本地方法)、abstract(定义抽象方法)、synchronized(定义同步方法)。

3.写出构造方法的定义和用途?

构造方法是一种特殊的方法,它与类名同名,但不具有返回值。

构造方法由用户自定义,如果没有定义系统会自动创建一个默认的无参构造方法。

构造方法用于对象的创建和初始化。

4.关键字static在修饰类、类的成员数据和类的成员方法中的作用各是什么?

static在修饰类时,往往修饰类中定义的嵌套类,也称为静态嵌套类,提高了类的封装性。

static在修饰类的成员数据和成员方法时,表示定义一个静态成员,该成员为类成员,为该类的所有对象共享。

5.定义一个点类“Point”。

Point类的属性有x轴和y轴坐标,可以通过方法setX()设置x轴坐标,方法setY()设置y轴坐标,方法getY()获得x轴坐标,方法getY()获得y轴坐标。

编写一个测试类PointTest来创建Point类的对象,测试该类。

packagejavabook.answer.ch04;

classPoint{

privatedoublex;

privatedoubley;

publicPoint(){

x=0;

y=0;

publicPoint(

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

当前位置:首页 > 初中教育 > 政史地

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

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