Java面向对象程序设计 教程课后答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章Java语言基础
1.标示符和关键字在定义和使用方面有何区别?
【答】定义方面:标示符是用户定义的、以字母开头的字母数字序列,关键字是由Java语言定义的、具有特定含义的英文单词。
使用方面:标示符用于命名变量、常量、类、对象等元素,每一个关键字都有特定的含义,不能被赋予别的含义。
2.Java语言的基本数据类型有哪些?引用数据类型有哪些?
i++; } }
else//奇数
{ int i=0;
while (i<number && prime[i]<=n/3)
{int j=i;//如果j=0,则会出现重复的算式
while (j<number && prime[j]<=n/3)
{if (isPrime(n-prime[i]-prime[j]))
{ if (prime==null)
init();
if (n%2==0)//偶数
{ int i=0;
while (i<number && prime[i]<=n/2)
{if (isPrime(n-prime[i]))
System.out.print(n+"="+prime[i]+"+"+(n-prime[i])+" ");
for (int i=0;i<number;i++)
{ System.out.print(" "+prime[i]);
if ((i+1)%10==0)
System.out.println();//每行写10个数
}
System.out.println("\nnumber="+number);
}
public staticboolean isPrime(int k)//判断k是否为素数,即在prime中查找k值
28=5+23 28=11+17
奇数
7=2+2+3
9=2+2+5 9=3+3+3
11=2+2+7 11=3+3+5
13=3+3+7
15=2+2+11 15=3+5+7 15=5+5+5
17=2+2+13 17=3+3+11 17=5+5+7
19=3+3+13 19=3+5+11
21=2+2+17 21=3+5+13 21=3+7+11 21=5+5+11 21=7+7+7
5.什么是平台无关性?Java是怎样实现平台无关性的?Biblioteka Baidu
【答】平台无关性即Java程序的运行不依赖于操作系统。Java采用虚拟机技术实现平台无关性。程序由虚拟机解释执行,不同的操作系统上运行不同版本的Java虚拟机。
6.Java应用程序由哪两种形式?他们的运行方式有什么不同?
【答】Application和applet两种形式,其中application是能够独立运行的应用程序,既可以以DOS的命令方式运行,也可以以图形用户界面方式运行。Applet是可以嵌入页面的最小应用程序,不能独立运行,必须嵌入超文本中,由浏览器显示运行。
0111
0122
0123
〖解答〗采用二重循环的程序如下。
public class Phalanx
{public static void main(String args[])
{int n=4; //阶数
for (int i=0;i<n;i++)
{for (int j=0;j<n;j++)
System.out.print(" "+((i<j)?i:j));
System.out.print(n+"="+prime[i]+"+"+prime[j]+"+"+(n-prime[i]-prime[j])+" ");
j++;
}i++;} }
System.out.println();}
public static void init()//初始化数组,筛选法求素数
{ prime = new int[30];
〖解答〗程序如下。
public class Goldbach
{static final int MAX=30;//数据范围
static int[] prime=null;//存放素数的一维数组
static int number;//素数个数,即数组的实际元素个数
public Goldbach(int n)//输出n的哥德巴赫算式
(1)for(i=1,i<=10,i++){
int Sum=1;
Sum=Sum*i;}
(2)int i=1;
while(i<=10){
int Sum=1;
Sum=Sum*i;
i++;}
int i=Sum=1;
do{
Sum=Sum*i;
i++;}while(i<=10);
11.输出以下数字的形式;
(1)0000
4.Java程序的运行机制是怎样的?与C++或其他语言有什么不同?
【答】Java的每一个类都有一个class文件和它对应,Java在程序的启动的时候将程序运行需要用到的类加载到虚拟机中,根据Java的虚拟机规范进行连接(动态连接),程序的组装是在运行的时候完成的
C++和其他的编译型的语言一样,它的程序的组装方式是一种传统的组装方式。C++在编译的时候生成适用于某一平台的二进制代码,在连接的时候找到需要调用的库,然后将这些库中的代码连接进可执行程序之中,生成的可执行程序运行速度非常的快,但是可执行代码已经变成了一个整体,不可能再分开
在面向对象概念方面,Java语言放弃了多元继承、友元类和运算符重载,采用“单重继承+接口”的方式代替多重继承,提供语言级的内存自动管理和异常处理方式,使Java语言更健壮、更安全、更高效。
3.Java对原程序文件的命名规则有什么要求?源程序文件编译后生成什么文件?
【答】要求:源程序文件与类同名,文件扩展名为.java;编译后生成字节码文件(*.class)。
5.程序中为什么需要常量和变量?声明常量或变量时,为什么必须给出其所属的数据类型?
【答】在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语言都提供常量和变量来存储数据。
为了确定常量或变量的数据性质、取值范围、以及它们占用的内存单元的字节数和它们参加的合法运算和操作。
6.什么是变量的作用域,声明变量时,如何确定变量的作用域?
有错误,正确的如下
int i=1,n=10,s=0;
for(i=1,i<=n,i++)
s+=i;
System.out.pointln(“Sum=1+……+”+n+”=”+s);
13.编程验证哥德巴赫猜想。哥德巴赫猜想:
(1)任何大于2的偶数都可以表示为2个素数之和,如16=3+13,16=5+11
(2)任何大于5的奇数都可以表示为3个素数之和,如11=2+2+7,11=3+3+5
{ for(int i=4;i<Goldbach.MAX;i+=2)
new Goldbach(i);
for(int i=7;i<Goldbach.MAX;i+=2)
new Goldbach(i);
} }
程序运行结果如下:
All primes in 2~30 are:
2357111317192329
number=10
While语句的特点:“先判断后执行”,当条件满足时执行循环体
Do-while语句的特点:“先执行后判断”,先执行循环体,在判断条件是否满足
For语句的特点:“先判断后执行”,但for语句将循环控制变量初始值、循环条件和变量的变化规律都以表达式形式写在循环体之前。
10.分别用for,while,do-while三种循环语句计算一个正数的阶乘
prime[0]=2;//已知的最小素数
number=1;//素数个数
int i=1;//下一个素数应存放的数组下标位置
int k=3;//从最小奇数开始测试,所有偶数不需测试
do
{int j=0;
while ((j<number) && (k % prime[j]!=0))//用已知素数prime[j]测试k
判断ch是一个十进制的数字字符
判断ch是一个十六进制的数字字符
判断ch是一个大写字母
判断ch是一个英文字母,不论大写和小写
如何将一个十进制的数字字符ch转换成对应的整数类型值
如何将一个十六进制的数字字符ch转换成对应的整数类型值
9.说明for、while、和do-while三种循环语句的特点和区别?
偶数
4=2+2
6=3+3
8=3+5
10=3+7 10=5+5
12=5+7
14=3+11 14=7+7
16=3+13 16=5+11
18=5+13 18=7+11
20=3+17 20=7+13
22=3+19 22=5+17 22=11+11
24=5+19 24=7+17 24=11+13
26=3+23 26=7+19 26=13+13
for (int i=1;i<=n;i++)
{for (int j=1;j<=n-i;j++)//前导空格
System.out.print(" ");
for (int j=1;j<=i;j++)
System.out.print(" "+j);
for (int j=i-1;j>0;j--)
System.out.print(" "+j);
System.out.println();
}}}
(2)输出下列形式的数字三角阵(当n=4时)。
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
〖解答〗采用二重循环的程序如下。
public class Tower
{public static void main(String args[])
{int n=4;//行数
7.什么是解释执行?Java怎样解释执行两种应用程序?
【答】解释执行即将字节码解释成本地机器码并执行。
Java源程序文件经编译后生成字节码文件,若是application应用程序,则将字节码文件交由Java解释器解释执行,最后在windows操作系统上运行。若是applet应用程序,则将字节码文件嵌入超文本文件并下载到web浏览器上,最后由windows操作系统中的Java虚拟机运行。
【答】变量的作用域是指其作用范围。变量声明的位置决定了它的作用域
7.设i是一个整数类型变量,写出下列问题对应的表达式?
判断i为奇数或偶数;
【答】i%2==0 //取值为true时是偶数,否则是奇数
判断i的值是否在0~9之间;
【答】(i>0)&&(i<9)
8.设ch是一个字符变量,写出下列问题对应的表达式
j++;
if (j==number)//k是素数
{prime[i]=k;//将k添加到数组prime中
i++;
number++; }
k+=2;//测试下一个奇数是否是素数
} while(k<MAX);
output();}
public static void output()//输出素数
{ System.out.println("All primes in 2~"+MAX+" are: ");
System.out.println();
}}}
12.下列程序希望用for语句求出1~n累加和并显示,请问程序有错误吗?错在哪里?输出结果i和s的值分别是多少?
int i=1,n=10,s=0;
for(i=1,i<=n,i++);
s+=i;
System.out.pointln(“Sum=1+……+”+n+”=”+s);
{ boolean yes=false;
int i=0;
while (!yes && i<=number && prime[i]<=k)
if (prime[i]==k)
yes=true;
else i++;
return yes;
}
public static void main(String args[])
23=2+2+19 23=3+3+17 23=3+7+13 23=5+5+13 23=5+7+11
【答】基本数据类型有:整数类型byte、short、int、long,浮点数类型float、double,字符类型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface)
3.试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变量有哪些差别?【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。
第1章Java概述
1.Java具有那些适合在Internet环境中的特点?
【答】简单性和完全面向对象,平台无关性,安全性和可靠性,多线程,高效的网络编程。
2.Java保留、放弃了C/C++语言中哪些语法和面向对象机制?为什么需要这样做?
【答】在语法规则方面,Java语言放弃了全程变量、goto语句、宏定义、全局函数以及结构、联合和指针数据类型,使Java语言更简单、更精练。
1.标示符和关键字在定义和使用方面有何区别?
【答】定义方面:标示符是用户定义的、以字母开头的字母数字序列,关键字是由Java语言定义的、具有特定含义的英文单词。
使用方面:标示符用于命名变量、常量、类、对象等元素,每一个关键字都有特定的含义,不能被赋予别的含义。
2.Java语言的基本数据类型有哪些?引用数据类型有哪些?
i++; } }
else//奇数
{ int i=0;
while (i<number && prime[i]<=n/3)
{int j=i;//如果j=0,则会出现重复的算式
while (j<number && prime[j]<=n/3)
{if (isPrime(n-prime[i]-prime[j]))
{ if (prime==null)
init();
if (n%2==0)//偶数
{ int i=0;
while (i<number && prime[i]<=n/2)
{if (isPrime(n-prime[i]))
System.out.print(n+"="+prime[i]+"+"+(n-prime[i])+" ");
for (int i=0;i<number;i++)
{ System.out.print(" "+prime[i]);
if ((i+1)%10==0)
System.out.println();//每行写10个数
}
System.out.println("\nnumber="+number);
}
public staticboolean isPrime(int k)//判断k是否为素数,即在prime中查找k值
28=5+23 28=11+17
奇数
7=2+2+3
9=2+2+5 9=3+3+3
11=2+2+7 11=3+3+5
13=3+3+7
15=2+2+11 15=3+5+7 15=5+5+5
17=2+2+13 17=3+3+11 17=5+5+7
19=3+3+13 19=3+5+11
21=2+2+17 21=3+5+13 21=3+7+11 21=5+5+11 21=7+7+7
5.什么是平台无关性?Java是怎样实现平台无关性的?Biblioteka Baidu
【答】平台无关性即Java程序的运行不依赖于操作系统。Java采用虚拟机技术实现平台无关性。程序由虚拟机解释执行,不同的操作系统上运行不同版本的Java虚拟机。
6.Java应用程序由哪两种形式?他们的运行方式有什么不同?
【答】Application和applet两种形式,其中application是能够独立运行的应用程序,既可以以DOS的命令方式运行,也可以以图形用户界面方式运行。Applet是可以嵌入页面的最小应用程序,不能独立运行,必须嵌入超文本中,由浏览器显示运行。
0111
0122
0123
〖解答〗采用二重循环的程序如下。
public class Phalanx
{public static void main(String args[])
{int n=4; //阶数
for (int i=0;i<n;i++)
{for (int j=0;j<n;j++)
System.out.print(" "+((i<j)?i:j));
System.out.print(n+"="+prime[i]+"+"+prime[j]+"+"+(n-prime[i]-prime[j])+" ");
j++;
}i++;} }
System.out.println();}
public static void init()//初始化数组,筛选法求素数
{ prime = new int[30];
〖解答〗程序如下。
public class Goldbach
{static final int MAX=30;//数据范围
static int[] prime=null;//存放素数的一维数组
static int number;//素数个数,即数组的实际元素个数
public Goldbach(int n)//输出n的哥德巴赫算式
(1)for(i=1,i<=10,i++){
int Sum=1;
Sum=Sum*i;}
(2)int i=1;
while(i<=10){
int Sum=1;
Sum=Sum*i;
i++;}
int i=Sum=1;
do{
Sum=Sum*i;
i++;}while(i<=10);
11.输出以下数字的形式;
(1)0000
4.Java程序的运行机制是怎样的?与C++或其他语言有什么不同?
【答】Java的每一个类都有一个class文件和它对应,Java在程序的启动的时候将程序运行需要用到的类加载到虚拟机中,根据Java的虚拟机规范进行连接(动态连接),程序的组装是在运行的时候完成的
C++和其他的编译型的语言一样,它的程序的组装方式是一种传统的组装方式。C++在编译的时候生成适用于某一平台的二进制代码,在连接的时候找到需要调用的库,然后将这些库中的代码连接进可执行程序之中,生成的可执行程序运行速度非常的快,但是可执行代码已经变成了一个整体,不可能再分开
在面向对象概念方面,Java语言放弃了多元继承、友元类和运算符重载,采用“单重继承+接口”的方式代替多重继承,提供语言级的内存自动管理和异常处理方式,使Java语言更健壮、更安全、更高效。
3.Java对原程序文件的命名规则有什么要求?源程序文件编译后生成什么文件?
【答】要求:源程序文件与类同名,文件扩展名为.java;编译后生成字节码文件(*.class)。
5.程序中为什么需要常量和变量?声明常量或变量时,为什么必须给出其所属的数据类型?
【答】在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语言都提供常量和变量来存储数据。
为了确定常量或变量的数据性质、取值范围、以及它们占用的内存单元的字节数和它们参加的合法运算和操作。
6.什么是变量的作用域,声明变量时,如何确定变量的作用域?
有错误,正确的如下
int i=1,n=10,s=0;
for(i=1,i<=n,i++)
s+=i;
System.out.pointln(“Sum=1+……+”+n+”=”+s);
13.编程验证哥德巴赫猜想。哥德巴赫猜想:
(1)任何大于2的偶数都可以表示为2个素数之和,如16=3+13,16=5+11
(2)任何大于5的奇数都可以表示为3个素数之和,如11=2+2+7,11=3+3+5
{ for(int i=4;i<Goldbach.MAX;i+=2)
new Goldbach(i);
for(int i=7;i<Goldbach.MAX;i+=2)
new Goldbach(i);
} }
程序运行结果如下:
All primes in 2~30 are:
2357111317192329
number=10
While语句的特点:“先判断后执行”,当条件满足时执行循环体
Do-while语句的特点:“先执行后判断”,先执行循环体,在判断条件是否满足
For语句的特点:“先判断后执行”,但for语句将循环控制变量初始值、循环条件和变量的变化规律都以表达式形式写在循环体之前。
10.分别用for,while,do-while三种循环语句计算一个正数的阶乘
prime[0]=2;//已知的最小素数
number=1;//素数个数
int i=1;//下一个素数应存放的数组下标位置
int k=3;//从最小奇数开始测试,所有偶数不需测试
do
{int j=0;
while ((j<number) && (k % prime[j]!=0))//用已知素数prime[j]测试k
判断ch是一个十进制的数字字符
判断ch是一个十六进制的数字字符
判断ch是一个大写字母
判断ch是一个英文字母,不论大写和小写
如何将一个十进制的数字字符ch转换成对应的整数类型值
如何将一个十六进制的数字字符ch转换成对应的整数类型值
9.说明for、while、和do-while三种循环语句的特点和区别?
偶数
4=2+2
6=3+3
8=3+5
10=3+7 10=5+5
12=5+7
14=3+11 14=7+7
16=3+13 16=5+11
18=5+13 18=7+11
20=3+17 20=7+13
22=3+19 22=5+17 22=11+11
24=5+19 24=7+17 24=11+13
26=3+23 26=7+19 26=13+13
for (int i=1;i<=n;i++)
{for (int j=1;j<=n-i;j++)//前导空格
System.out.print(" ");
for (int j=1;j<=i;j++)
System.out.print(" "+j);
for (int j=i-1;j>0;j--)
System.out.print(" "+j);
System.out.println();
}}}
(2)输出下列形式的数字三角阵(当n=4时)。
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
〖解答〗采用二重循环的程序如下。
public class Tower
{public static void main(String args[])
{int n=4;//行数
7.什么是解释执行?Java怎样解释执行两种应用程序?
【答】解释执行即将字节码解释成本地机器码并执行。
Java源程序文件经编译后生成字节码文件,若是application应用程序,则将字节码文件交由Java解释器解释执行,最后在windows操作系统上运行。若是applet应用程序,则将字节码文件嵌入超文本文件并下载到web浏览器上,最后由windows操作系统中的Java虚拟机运行。
【答】变量的作用域是指其作用范围。变量声明的位置决定了它的作用域
7.设i是一个整数类型变量,写出下列问题对应的表达式?
判断i为奇数或偶数;
【答】i%2==0 //取值为true时是偶数,否则是奇数
判断i的值是否在0~9之间;
【答】(i>0)&&(i<9)
8.设ch是一个字符变量,写出下列问题对应的表达式
j++;
if (j==number)//k是素数
{prime[i]=k;//将k添加到数组prime中
i++;
number++; }
k+=2;//测试下一个奇数是否是素数
} while(k<MAX);
output();}
public static void output()//输出素数
{ System.out.println("All primes in 2~"+MAX+" are: ");
System.out.println();
}}}
12.下列程序希望用for语句求出1~n累加和并显示,请问程序有错误吗?错在哪里?输出结果i和s的值分别是多少?
int i=1,n=10,s=0;
for(i=1,i<=n,i++);
s+=i;
System.out.pointln(“Sum=1+……+”+n+”=”+s);
{ boolean yes=false;
int i=0;
while (!yes && i<=number && prime[i]<=k)
if (prime[i]==k)
yes=true;
else i++;
return yes;
}
public static void main(String args[])
23=2+2+19 23=3+3+17 23=3+7+13 23=5+5+13 23=5+7+11
【答】基本数据类型有:整数类型byte、short、int、long,浮点数类型float、double,字符类型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface)
3.试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变量有哪些差别?【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。
第1章Java概述
1.Java具有那些适合在Internet环境中的特点?
【答】简单性和完全面向对象,平台无关性,安全性和可靠性,多线程,高效的网络编程。
2.Java保留、放弃了C/C++语言中哪些语法和面向对象机制?为什么需要这样做?
【答】在语法规则方面,Java语言放弃了全程变量、goto语句、宏定义、全局函数以及结构、联合和指针数据类型,使Java语言更简单、更精练。