JAVA程序设计基础习题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java程序设计基础课后习题参考答案第2章1.关于JavaApplication的入口方法main()的检验:main()方法的参数名是否可以改变?main()方法的参数个数是否可以改变?该方法名是否可以改变?参考答案:(1)main()方法的参数名可以改变。(2)main()方法的参数个数不可以改变。(3)该方法名不可以改变。2.当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗?参考答案:当一个程序没有main()方法是,是可以编译通过的,但是不能给运行,因为找不到一个主函数入口。3.下列语句能否编译通过?bytei=127;bytej=128;longl1=999999;longl2=9999999999;参考答案:bytei和longl1可以编译通过。而bytej和longl2超出自身数据类型范围,所以编译失败。4.下列语句能否编译通过?floatf1=3.5;floatf2=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/317(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)floatf=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.以下代码的编译运行结果是publicclassTest{publicstaticvoidmain(String[]args){intage;age=age+1;System.out.println(“theageis“+age);}}(1)编译通过,运行无输出(2)编译通过,运行结果为“theageis1”(3)编译通过但运行时出错(4)不能通过编译参考答案:(4)为正确选项。Java在使用变量前应该先初始化。11.写出下列表达式的运行结果(1)6+32+7(2)4%2+4*3/2(3)(1+3)*2+12/3(4)83&&6==6&&124(5)7+124&&12-48(6)232参考答案:(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.6666666666666667(3)2(4)23.考虑如下的Test.java,并指出错误原因。程序清单:Test.javaclassTest{publicstaticvoidmain(String[]args){byteb=5;b=(b–2);System.out.println(b);}}参考答案:b=(b-2);错误,在进行b-2时,运算结果类自动提升为int,而b是byte类型,编译的时候会报错,因为存在高类型数据向低类型数据转化的风险。而byteb=5;是正确的,因为在编译的时候就能够确定5在byte允许的范围内,虚拟机在编译时做了一定的优化处理。4.考虑一下对于if……else……语句,还有没有更简洁的写法。例如:if(x0){y=x;}else{y=-x;}可以简写成什么?参考答案:y=x0?x:-x;5.给定N,编程实现打印N*N的乘法表。参考答案:publicstaticvoidmain(String[]args){inta=0,b=0,c=0;for(inti=0;i9;i++){a=i+1;for(intj=0;ji+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;k100;k++)System.out.println(k)(2)for(intk=0;k100;k++);System.out.println(k);(3)intk=0whilek100{System.out.println(k);k++};(4)intk=0;do{System.out.println(k);k++;}whilek100;参考答案:(1)for(intk=0;k100;k++){System.out.println(k);}(2)for(intk=0;k100;k++){System.out.println(k);}(3)intk=0;while(k100){System.out.println(k);k++;}(4)intk=0;do{System.out.println(k);k++;}while(k100);8.写出三个不同的循环―for、while和do-while循环,打印出从0(包括0)开始直到1000的所有10的倍数。参考答案:(1)intn=0;while(n=1000&&n%10==0){System.out.print(n);n++;}(2)intn=0do{if(n%10==0){System.out.print(n);}n++;}while(n1000);(3)for(intn=0;n=1000;n++){if(n%10==0){system.out.print(n);}9.给定N,编程实现打印行数为N的菱形。参考答案:publicstaticvoidmain(String[]args){Scannerread=newScanner(System.in);intn;while(true){System.out.println(输入一个整数(=0));if(read.hasNextInt()){n=read.nextInt();if(n0)continue;break;}else{read.next();}}for(inti=0;in;i++){for(intj=1;jn-i;j++)System.out.print();for(intj=0;ji*2+1;j++)System.out.print(*);for(intj=1;jn-i;j++)System.out.print();System.out.println();}for(inti=n-2;i=0;i--){for(intj=1;jn-i;j++)System.out.print();for(intj=0;ji*2+1;j++)System.out.print(*);for(intj=1;jn-i;j++)System.out.print();System.out.println();}}10.写出下面程序的输出结果:publicclassTestWhile{publicstaticvoidmain(String[]args){inta=0;while(++a=100)if((a%9)==0)System.out.print(a+\t);System.out.println();}}参考答案:918273645546372819099第4章1.比较String和StringBuffer的区别,并说明什么时候适合使用StringBuffer。参考答案:在Java中,String被完全当成一个对象,一个String对象是组成这个字符串的字符序列,加上用来操作字符串的方法。字符串一旦被创建,就不能改变它的值。StringBuffer类同样能够表示一串字符。但是,与String类不同,一个StringBuffer类能够被修改,StringBuffer类维护的是一个字符缓冲区,在必要时它的长度能够增长和缩短。对任何涉及修改字符串的任务,应该用StringBuffer代替String。2.说明==和equals的区别,并举例。参考答案:==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的是两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==比较的是两个对象的地址,而equals比较的是两个对象的内容。3.假定s是字符串字面值“exercise”,找出下列表达式有语法错误的并改正:(1)s.charAt(hello)(2)s.indexOf(er)(3)s.substring(5)(4)s.lastIndexOf(er)(5)s.length()参考答案:其中(1)和(4)表达式有语法错误。(1)charAt(int)参数是int类型的;(4)lastIndexOf()中的参数应该为int或者String,这里的er既不是int也不是String。4.给定一个句子,统计单词中字母的出现次数(字母不区分大小写,全部按照小写计算)。参考答案:参考代码importjava.util.Scanner;publicclasscountChar{publicstaticvoidmain(String[]args){//输入需要检测的字符串System.out.print(InputString:);Scannerstr0=newScanner(System.in);Strings=str0.next();System.out.println(theStringis:+s);s=s.toLowerCase();//

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功