当前位置:
文档之家› JAVA大学实用教程 第四版 课后习题答案
JAVA大学实用教程 第四版 课后习题答案
DengCha shulie=new DengCha(2,3); System.out.println(shulie.getSum(100)); shulie.setStart(10); shulie.setD(5); System.out.println(shulie.getSum(9)); DengCha arithmetical=new DengCha(); Scanner Reader=new Scanner(System.in); System.out.println("请输入等差数列开始值"); arithmetical.start=Reader.nextInt(); System.out.println("请输入等差数列的差值"); arithmetical.d=Reader.nextInt(); System.out.println("请输入等差数列求和的个数"); int n=Reader.nextInt(); System.out.println(n+"个数的和是"+arithmetical.getSum(n));
12. Java 语言使用_________编码,每个字符占___________字节________byte 位
Unicode 2
16
第三章 运算符、表达式与语句
1。下列语句输出的结果是什么? Int a=100, x,y; X=++a; Y=a-System.out.printf(“%d, %d,%d”,x,y,a); 答: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;
10。下列两个语句的作用等价吗? Int[] a={1,2,3,4,5,6,7,8};
Int[] a=new int[8];
答:不等价,前者有初值,后者指分配空间。初值数组元素为 0 11.有语句:
int [] a={1,2,3},b={4,5};
a=b;
求 a[0]=? b[1]=? 为什么?
答: a[0]=4 ; b[1]=5 因为有相同的引用,同指向 b[].
for(int i=0; i<a.lemgth;i++){ for(int j=i+1;j<a.length;j++){ if(a[j]<a[i]){
n;} } } System.out.printf(“%d,%d,%d,%d,%d”,a[0],a[1],
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){
sum=sum+start; start=start+d; i++; } return sum; } } public class ZuoYe04_1 { public static void main (String args[ ]) {
变实例变量。用类调用改变那个实例的实例变量,表现那个实例的功能,不明确。
12.关键字 this 可以出现在构造方法中吗?可以出现在实例方法中吗?可以出现在类方法中 吗?
答:可以出现在构造方法中,代表该类构造方法所创造出的对象。
可以出现在实例方法中,代表使用该方法的当前对象。
This 不能出现在类方法中,因为类方法是通过类名调用的。 13.源文件声明编写的类一定在同一个包中吗? 答:不一定,当不在同一包中时,可用 import 语句将其所在的包引入该源文件中。 14.“import java.awt.*”与“import java.awt.Button”有什么不同? 答:前者引入了 awt 包中的所有类,后者只引入了 Button 一个类。 15.程序中使用了“import java.util.*;”程序运行时,是要加载 java.util 包中的全部类到内存 吗?
答:不是基本数据类型,是复合数据类型。可以通过:数组名.length 的方法获得数组长度 9。假设有两个 int 类型数组:
Int[] a=new int[10]; Int[] b=new int[8];
b=a;
A[0]=100;
B[0]的值一定是 100 吗? 答;一定,因为 a 数组与 b 数组引用相同。
m^n^n=? 答:m^m=0; m^n^n=120 7.下列 System.out.printf 语句输出的结果是什么? Int x=10, y=10, z=10; If(x>9){ y=100; Z=200; } Else
y=-100; z=-200; System.out.printf(“%d,%d,%d”,x,y,z); 输出: 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’); Case 4: System.out.printf(“%c”,’d’); Break; } } 输出:a,b, b,c,d,d 9. 下列 System.out.printf 语句输出的结果是什么? Char a[]={‘a’,’b’,’c’,’d’,’e’}; For(i=0; i<=a.length/2; i++) {
char c=a[i]; a[i]=a[a.length-(i+1)]; a [a.length-(i+1)]=c; } System.out.printf(“%c%c%c%c%c”a[0],a[1],a[2],a[3],a[4]); 输出:e,d,c,b,a 10.下列 System.out.printf 语句输出的结果是什么? int a[]={3,4,1,2,-6};
c=c-x; 答:c=c-x;错 应为 int 类型。 4 下列语句正确的是 A.表达式“12+56>34”的值是 true B.表达式“12+56||34”是非法表达式 C.表达式“x+y=12”是非法表达式
D.表达式“12+56>34”的值是 13 答: (A, C ) 5。对于整数 m, m<<1 的结果一定是 2m 吗? 答:不一定,高位有损失时,不是 2m 6.对于两个 int 整形变量 Int m=120, n=240; 那么 m^m=?;
第二章 基本数据类型和数组
4。下列哪些语句是错的? Int x=120; Byte b=120; b=x; 答:B=x;错应为 b=(byte)x 5。下列哪些语句是错的? 答:y=d;错,应 y=(float)d 6。下列两个语句是等价的吗? Char x=97; Char x=‘a’; 答:是等价的。 7。下列 system.out.printf 语句输出结果是什么? Int a=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); 输出什么? 答:输出 a , -128, 127 修改后输出 97,-128,127 8.数组是基本数据类型吗?怎样获取数组的长度?
a[2],a[3],a[4]); 输出:-6,1,2,3,4 11.public class Tick { public static void main(String args[]) {int a[]={3,4,1,2,-6}; for(int i=0; i<a.length;i++){
for(int j=i+1;j<a.length;j++){ if(a[j]<a[i]){
int n=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.类体内容有哪两种重要成员? 答:成员变量,和成员方法。 3。实例方法可以操作类变量吗?类方法可以操作实例变量吗? 答:实例方法可以操作类变量。 而类方法不可以操作实例变量。 4.当类的字节码加载到内存时,类变量就一定分配了内存空间吗? 答:实例成员变量不分配内存,而类变量一定分配内存。 5.类的实例变量在什么时候分配内存? 答:声明之后,在用 new 关键字创建实例的时候才分配内存。 6.一个类的类变量被该类创建的所有对象共享吗? 答:共享 7.不同对象的实例变量分配的内存地址一定不同吗? 答:当出现引用赋值语句时两个实例变量的内存地址相同。 8.什么叫方法的重载?构造方法可以重载吗? 答:方法的重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数不同,或 者参数的个数不同,或者参数的类型不同。构造方法可以重载。 9.请阐述为什么类方法不能调用实例方法? 答:对于类方法在该类加到内存时就分配了相应的入口地址,所以即使该类未创建对象,也 可以通过类名调用类方法。而这时在类对象创建之前,实例方法还没有入口地址。还不知道 一个方法从何处开始执行,当然不能调用。