Java程序设计基础课后习题参考答案第2章1、关于Java Application得入口方法main()得检验:main()方法得参数名就是否可以改变?main()方法得参数个数就是否可以改变?该方法名就是否可以改变?参考答案:(1)main()方法得参数名可以改变.(2)main()方法得参数个数不可以改变。
(3)该方法名不可以改变。
2、当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗?参考答案:当一个程序没有main()方法就是,就是可以编译通过得,但就是不能给运行,因为找不到一个主函数入口。
3、下列语句能否编译通过?bytei =127;bytej = 128;longl1 = 999999;long l2= 9999999999;参考答案:byte i 与long l1可以编译通过。
而byte j 与longl2 超出自身数据类型范围,所以编译失败。
4、下列语句能否编译通过?float f1 =3、5;float f2 = 3.5f;参考答案:java中浮点型得数据在不声明得情况下都就是double型得,如果要表示一个数据就是float型得,必须在数据后面加上“F”或“f”;因此,floatf1 无法编译通过。
5、验证int 与char,int与double等类型就是否可以相互转换。
参考答案:(1)char类型可以转换为int 类型得,但就是int类型无法转换为char类型得;(2)int 可以转换为double类型得,但就是double类型无法转换为int 类型得。
6、计算下列表达式,注意观察运算符优先级规则。
若有表达式就是非法表达式,则指出不合法之处且进行解释。
(1)4+5 == 6*2 ﻩ(2) (4=5)/6ﻩﻩ(3)9%2*7/3>17(4)(4+5)<=6/3 ﻩ(5) 4+5%3!=7-2ﻩﻩﻩﻩ(6)4+5/6〉=10%2参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4就是不合法得.7、下列()就是合法得Java标识符。
(1)Counter1 ﻩﻩ(2)$index,(3) name-7 ﻩﻩ(4)_byte(5)larrayﻩﻩﻩﻩ(6)2i(7) tryﻩﻩﻩ(8)integer参考答案:Java标识符由数字,字母与下划线(_),美元符号($)组成.在Java中就是区分大小写得。
而且还要求首位不能就是数字。
最重要得就是,Java关键字不能当作Java标识符.因此,(1)、(4)、(5)、(8)就是合法标识符。
8、下列各项中定义变量及赋值不正确得就是()(1) intI= 32;(2) float f =45、0;(3)doubled=45、0;参考答案:(2)不正确,选项(2)定义float 类型时必须在数据后面加上“F”或“f”。
9、Java语言中,整型常数123占用得存储字节数就是()(1) 1 (2)2(3)4ﻩ(4) 8参考答案:正确选项就是(3),Java语言中,默认整型数占用4个字节数。
10、以下代码得编译运行结果就是public class Test{public static void main(String[]args){ﻩint age;age = age + 1;System、out、println(“theage is “ + age);}}(1)编译通过,运行无输出(2)编译通过,运行结果为“the ageis1”(3)ﻩ编译通过但运行时出错(4)不能通过编译参考答案:(4)为正确选项.Java 在使用变量前应该先初始化.11、写出下列表达式得运行结果(1)6+3<2+7 ﻩﻩﻩ(2) 4%2+4*3/2(3)(1+3)*2+12/3ﻩﻩﻩ(4) 8>3&&6==6&&12<4(5)7+12<4&&12—4<8 (6)23〉>2参考答案:(1)false;(2)6;(3)12; (4)fale;(5)false;(6)5;第3章1.编码验证i++与++i得区别。
参考答案:++i 与i++在单独使用时,就就是i=i+1。
而a=++i, 相当于i=i+1;a= i; (先i =i+ 1,再使用i得值),而 a =i++,相当于 a =i; i=i+1;(先使用i 得值,再i =i+ 1)。
2、写出下面表达式得结果(1)5/3(2)5/3、0(3)5%3(4)5%-3参考答案:(1)1(2)1、66666666(3)2(4)23、考虑如下得Test、java,并指出错误原因.程序清单:Test、javaclass Test{publicstaticvoid main(String[]args){byte b =5;b =(b–2);System、out、println(b);}}参考答案:b=(b-2);错误,在进行b—2时,运算结果类自动提升为int,而b就是byte类型,编译得时候会报错,因为存在高类型数据向低类型数据转化得风险.而byteb=5;就是正确得,因为在编译得时候就能够确定5在byte允许得范围内,虚拟机在编译时做了一定得优化处理.4、考虑一下对于if……else……语句,还有没有更简洁得写法。
例如:if(x >0 ){y =x;} else{y = -x;}可以简写成什么?参考答案:y=x>0?x:-x;5.给定N,编程实现打印N*N得乘法表。
参考答案:public static voidmain(String[]args)ﻪ{int a =0, b =0,c= 0;for(int i=0; i<9;i++) {a=i+1;for(int j=0;j<i+1;j++)ﻪ{ﻪb =j+1;c= a*b;ﻪSystem、out、print(a +”*"+ b+ "=" + c + ” ");ﻪ}ﻪSystem、out、println(" ");}}ﻪ6、将下列语句转换成Java代码:(1)如果b1为真,打印“one”,否则打印“two"。
(2)如果b1为假并且b2为真,打印“one”,否则打印“two”。
(3)如果b1为假,并且如果b2为真则打印“one”,如果b2为假则打印“two”;否则打印“three”。
参考答案:(1) if(b1=true){System、out、print("one”);}else{System、out、print("two");}(2)if(b1=false &&b2=true) {System、out、print("one");}else {System、out、print(”two”);}(3)if(b1=false&& b2 =true){System、out、print("one”);}elseif(b1=false&& b2 =false){System、out、print("two”);}else{System、out、print(”three");}7、找出如下各项中得语法错误:(1)for(intk=0;k<100;k++)System、out、println(k)(2)for(int k=0;k〈100;k++);System、out、println(k);(3)int k=0while k〈100{System、out、println(k);k++};(4)intk=0;do{System、out、println(k);k++;}whilek〈100;参考答案:(1)for(intk=0;k<100;k++){System、out、println(k);}(2)for(int k=0;k<100;k++){System、out、println(k);}(3)int k=0;while (k〈100 ){System、out、println(k);k++;}(4)int k=0;do{System、out、println(k);k++;}while (k〈100);8.写出三个不同得循环―for、while与do-while循环,打印出从0(包括0)开始直到1000得所有10得倍数。
参考答案:(1)intn=0;while(n〈=1000&&n%10==0) {ﻪSystem、out、print(n);ﻩn++;ﻪ}ﻪ(2)int n=0doﻪ{if(n%10==0){System、out、print(n);}n++;}ﻪwhile(n<1000);(3)for(int n=0;n〈=1000;n++){if(n%10==0){system、out、print(n);}9.给定N,编程实现打印行数为N得菱形。
参考答案:publicstatic void main(String[] args){Scanner read =new Scanner(System、in);ﻩﻩintn;ﻩwhile (true){ﻩﻩSystem、out、println("输入一个整数(>=0)");ﻩﻩif (read、hasNextInt()){ﻩn=read、nextInt();ﻩﻩif (n <0)ﻩcontinue;ﻩﻩbreak;ﻩﻩ}else {ﻩﻩread、next();}ﻩ}ﻩfor(int i= 0; i< n;i++) {for (int j=1; j < n—i; j++)ﻩSystem、out、print(” ");ﻩﻩfor (int j = 0;j<i*2+1;j++)ﻩﻩSystem、out、print("*");ﻩfor (intj=1;j< n-i;j++)ﻩSystem、out、print("");ﻩﻩSystem、out、println();ﻩﻩ}ﻩfor (inti=n—2;i >=0;i--){ﻩﻩfor (int j = 1;j <n-i; j++)ﻩSystem、out、print(””);ﻩfor (intj= 0; j <i*2 + 1;j++)ﻩﻩﻩﻩSystem、out、print(”*");ﻩfor(int j= 1; j < n-i;j++)ﻩﻩﻩSystem、out、print(” ”);System、out、println();ﻩ}}10、写出下面程序得输出结果:publicclassTestWhile{public static void main(String[]args){ﻩinta=0;ﻩﻩﻩwhile(++a〈=100)ﻩﻩif((a%9)==0)ﻩﻩﻩSystem、out、print(a+"\t");ﻩSystem、out、println();ﻩﻩ}}参考答案:9 18 27 3645 54 63 7281 90 99第4章1、比较String与StringBuffer得区别,并说明什么时候适合使用String Buffer。