JAVA实用教程(第三版)课后习题及答案

  • 格式:docx
  • 大小:62.40 KB
  • 文档页数:41
第一章Java语言概述
2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗?
答:不正确
3.java应用程序的主类必须含有怎样的方法?答:含有main方法
4。“java应用程序必须有一个类是public类”这句话正确吗? 答;不正确,只能有一个public类
5。“java Applet程序的主类必须是public类”这句话正确吗?
答:可以出现在构造方法中,代表该类构造方法所创造出的对象。可以出现在实例方法中,代表使用该方法的当前对象。
This不能出现在类方法中,因为类方法是通过类名调用的。
13.源文件声明编写的类一定在同一个包中吗?
答:不一定,当不在同一包中时,可用import语句将其所在的包引入该源文件中。
14.“importjava.awt.*”与“importjava.awt.Button”有什 么不同?答:前者引入了awt包中的所有类,后者只引入了Button一个类。15.程序中使用了“importjava.util.*;”程序运行时,是要加载java.util包中的全部类到内存吗?
Charx=‘a’;
答:是等价的。
7。下列system.out.printf语句输出结果是什么?
Inta=97;
Byte b1=(byte)128; Byte b2=(byte)(-129);
System.out.printf(“%c,%d,%d”,a,b1,b2);如 果 输 出 语 句 改 为 :System.out.printf(“%d,%d,%d”,a,b1,b2);输出什么?
答:不能,因为实例方法,用new创佳对象后才分配入口地址,而类名,一经声明就分配类名地址。而这时对象创建之前实例方法还没有入口地址。实例方法表现实例的功能,或改变实例变量。用类调用改变那个实例的实例变量,表现那个实例的功能,不明确。
12.关键字this可以出现在构造方法中吗?可以出现在实例方法中吗?可以出现在类方法中吗?
6.一个类的类变量被该类创建的所有对象共享吗?答:共享
7.不同对象的实例变量分配的内存地址一定不同吗?
答:当出现引用赋值语句时两个实例变量的内存地址相同。
8.什么叫方法的重载?构造方法可以重载吗?
答:方法的重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数不同,或者参数的个数不同,或者参数的类型不同。构造方法可以重载。
如:
Javap–private java.awt.Button则可以列出Button类中全部的方法和成员变量。
18.下面程序中那个语句是错的?classA
{
privatefloatweight;//weight被修饰为private的float型变量。
public float f(floata,floatb)//方法f是public方法。
答:101,101,100
2。下列语句那些有错误? Int x=0;
X=5.0/2;
Float y=12.5F; y=5.0/2;
答:x=5.0/2;错。
3。下列语句那些有错?Byte x=32;
Char c=‘a’; Int n=c-x; c=c-x;
答:c=c-x;错 应为int类型。
4下列语句正确的是
a[2],a[3],a[4]);
输出:-6,1,2,3,4
11.public classTick
{
public static void main(String args[])
{int a[]={3,4,1,2,-6};
for(int i=0; i<a.length;i++){ fo++){
答:输出a,-128,127
修改后输出97,-128,127
8.数组是基本数据类型吗?怎样获取数组的长度?
答:不是基本数据类型,是复合数据类型。可以通过:数组名.length
的方法获得数组长度
9。假设有两个int类型数组:
Int[] a=new int[10];Int[] b=new int[8];
}
DengCha(int start,intd){this.start=start; this.d=d;
}
void setStart(int s){ start=s;
}
void setD(int d){ this.d=d;
}
int getSum(int n){
int sum=0,i=1; while(i<=n){
A.表达式“12+56>34”的值是trueB.表达式“12+56||34”是非法表达式C.表达式“x+y=12”是非法表达式
D.表达式“12+56>34”的值是13
答:(A,C)
5。对于整数m,m<<1的结果一定是2m吗? 答:不一定,高位有损失时,不是2m
6.对于两个int整形变量
Intm=120,n=240;
System.out.println(n+"个数的和是
"+arithmetical.getSum(n));
}
}
3.编写一个类,该类封装了一元二次方程的属性和功能,即该类有刻画方程系数的3个成员变量和求根的方法。要求:该类所有对象共享常数项。
答:正确,因为java Applet主类必须是Applet类的子类并且是public
的类
6。请叙述java源程序的命名规则。答:与public的类同名。
7。源文件生成的字节码文件在运行时都加载到内存中吗? 答:非也,动态随需要运行才加载。
8.面向对象的程序设计语言有那些基本特征? 答:封装;继承;多态性。
arithmetical.start=Reader.nextInt(); System.out.println("请输入等差数列的差值"); arithmetical.d=Reader.nextInt();System.out.println("请输入等差数列求和的个数"); intn=Reader.nextInt();
if(a[j]<a[i]){
intn=a[j];a[j]=a[i];a[i]=n;}}}
System.out.printf("%d,%d,%d,%d,%d",a[0],a[1],
a[2],a[3],a[4]);
}
}
第四章 类与对象
1.在声明类时,类名应遵循哪些习惯?
答:首字母大写, 望名知意2.类体内容有哪两种重要成员? 答:成员变量,和成员方法。
int a[]={3,4,1,2,-6};
for(int i=0; i<a.length;i++){ for(intj=i+1;j<a.length;j++){
if(a[j]<a[i]){
Intn=a[j];a[j]=a[i];a[i]=n;}}}
System.out.printf(“%d,%d,%d,%d,%d”,a[0],a[1],
9.在Java程序中有多个类文件时,用Java命令应该运行那个类?答:具有main方法的类
第二章基本数据类型和数组
4。下列哪些语句是错的?
Int x=120;Byte b=120;b=x;
答:B=x;错应为b=(byte)x 5。下列哪些语句是错的?
答:y=d;错,应y=(float)d 6。下列两个语句是等价的吗?Charx=97;
shulie.setD(5); System.out.println(shulie.getSum(9)); DengChaarithmetical=newDengCha(); Scanner Reader=new Scanner(System.in);System.out.println("请输入等差数列开始值");
9.请阐述为什么类方法不能调用实例方法?
答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。而这时在类对象创建之前,实例方法还没有入口地址。还不知道一个方法从何处开始执
行,当然不能调用。
10.请阐述,为什么类方法中不能操作实例成员变量?
答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也可以通过类名调用类方法。而这时在类创建之前,实例成员变量还没有分配内存空间。没内存空间当然无法操作。11.实例方法可以用类名直接调用吗?
3。实例方法可以操作类变量吗?类方法可以操作实例变量吗? 答:实例方法可以操作类变量。
而类方法不可以操作实例变量。
4.当类的字节码加载到内存时,类变量就一定分配了内存空间吗? 答:实例成员变量不分配内存,而类变量一定分配内存。
5.类的实例变量在什么时候分配内存?
答:声明之后,在用new关键字创建实例的时候才分配内存。
b=a;A[0]=100;
B[0]的值一定是100吗?
答;一定,因为a数组与b数组引用相同。
10。下列两个语句的作用等价吗?Int[]a={1,2,3,4,5,6,7,8};Int[]a=newint[8];
答:不等价,前者有初值,后者指分配空间。初值数组元素为0 11.有语句:
int [] a={1,2,3},b={4,5};
输出:10,100,-200
8.下列for语句输出结果是什么?
For(int i=1; i<=4; i++){
Switch(i){
Case 1: System.out.printf(“%c”,’a’);
Case 2: System.out.printf(“%c”,’b’); Break;
Case 3: System.out.printf(“%c”,’c’);