Java程序设计基础习题答案.docx
- 文档编号:29682947
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:37
- 大小:28.11KB
Java程序设计基础习题答案.docx
《Java程序设计基础习题答案.docx》由会员分享,可在线阅读,更多相关《Java程序设计基础习题答案.docx(37页珍藏版)》请在冰豆网上搜索。
Java程序设计基础习题答案
Java程序设计基础课后习题参考答案
第2章
1.关于JavaApplication的入口方法main()的检验:
main()方法的参数名是否可以改变
main()方法的参数个数是否可以改变
该方法名是否可以改变
参考答案:
(1)main()方法的参数名可以改变。
(2)main()方法的参数个数不可以改变。
(3)该方法名不可以改变。
2.当一个程序没有main()方法时,能编译吗如果能编译,能运行吗
参考答案:
当一个程序没有main()方法是,是可以编译通过的,但是不能给运行,因为找不到一个主函数入口。
3.下列语句能否编译通过
bytei=127;
bytej=128;
longl1=999999;
longl2=99;
参考答案:
bytei和longl1可以编译通过。
而bytej和longl2超出自身数据类型范围,所以编译失败。
4.下列语句能否编译通过
floatf1=;
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/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)floatf=;
(3)doubled=;
参考答案:
(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;
ageis“+age);
}
}
(1)编译通过,运行无输出
(2)编译通过,运行结果为“theageis1”
(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)5%3
(4)5%-3
参考答案:
(1)1
(2)1.
(3)2
(4)2
3.考虑如下的,并指出错误原因。
程序清单:
classTest{
publicstaticvoidmain(String[]args){
byteb=5;
b=(b–2);
}
}
参考答案:
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>0x:
-x;
5.给定N,编程实现打印N*N的乘法表。
参考答案:
publicstaticvoidmain(String[]args){
inta=0,b=0,c=0;
for(inti=0;i<9;i++){
a=i+1;
for(intj=0;j
b=j+1;
c=a*b;
+"*"+b+"="+c+"");
}
"");
}
}
6.将下列语句转换成Java代码:
(1)如果b1为真,打印“one”,否则打印“two”。
(2)如果b1为假并且b2为真,打印“one”,否则打印“two”。
(3)如果b1为假,并且如果b2为真则打印“one”,如果b2为假则打印“two”;否则打印“three”。
参考答案:
(1)if(b1=true){
"one");
}else{
"two");
}
(2)if(b1=false&&b2=true){
"one");
}else{
"two");
}
(3)if(b1=false&&b2=true){
"one");
}elseif(b1=false&&b2=false){
"two");
}else{
"three");
}
7.找出如下各项中的语法错误:
(1)
for(intk=0;k<100;k++)
(2)
for(intk=0;k<100;k++);
(3)
intk=0
whilek<100{
(4)
intk=0;
do{
whilek<100;
参考答案:
(1)for(intk=0;k<100;k++){
(2)for(intk=0;k<100;k++){
(3)intk=0;
while(k<100){
;
}
(4)intk=0;
do{
while(k<100);
8.写出三个不同的循环―for、while和do-while循环,打印出从0(包括0)开始直到1000的所有10的倍数。
参考答案:
(1)intn=0;
while(n<=1000&&n%10==0){
n++;
}
(2)
intn=0
do{
if(n%10==0){
}
n++;
}while(n<1000);
(3)
for(intn=0;n<=1000;n++){
if(n%10==0){
9.给定N,编程实现打印行数为N的菱形。
参考答案:
publicstaticvoidmain(String[]args){
Scannerread=newScanner;
intn;
while(true){
"输入一个整数(>=0)");
if()){
n=();
if(n<0)
continue;
break;
}else{
();
}
}
for(inti=0;i for(intj=1;j ""); for(intj=0;j "*"); for(intj=1;j ""); } for(inti=n-2;i>=0;i--){ for(intj=1;j ""); for(intj=0;j "*"); for(intj=1;j ""); } } 10.写出下面程序的输出结果: publicclassTestWhile{ publicstaticvoidmain(String[]args){ inta=0; while(++a<=100) if((a%9)==0) "\t"); } } 参考答案: 918273645546372819099 第4章 1.比较String和StringBuffer的区别,并说明什么时候适合使用StringBuffer。 参考答案: 在Java中,String被完全当成一个对象,一个String对象是组成这个字符串的字符序列,加上用来操作字符串的方法。 字符串一旦被创建,就不能改变它的值。 StringBuffer类同样能够表示一串字符。 但是,与String类不同,一个StringBuffer类能够被修改,StringBuffer类维护的是一个字符缓冲区,在必要时它的长度能够增长和缩短。 对任何涉及修改字符串的任务,应该用StringBuffer代替String。 2.说明==和equals的区别,并举例。 参考答案: ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的是两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是两个对象的地址,而equals比较的是两个对象的内容。 3.假定s是字符串字面值“exercise”,找出下列表达式有语法错误的并改正: (1)("hello") (2)("er") (3)(5) (4)(er) (5)() 参考答案: 其中 (1)和(4)表达式有语法错误。 (1)charAt(int)参数是int类型的;(4)lastIndexOf()中的参数应该为int或者String,这里的er既不是int也不是String。 4.给定一个句子,统计单词中字母的出现次数(字母不区分大小写,全部按照小写计算)。 参考答案: 参考代码 import publicclasscountChar{ publicstaticvoidmain(String[]args){ 执行Strings=newString("xyz");这一语句,共创建几个String对象 参考答案: 两个。 "xyz"本身是一个字符串对象,而newString()也会创造一个字符串对象。 6.对于语句Strings="hello";下面那个表达式是合法的 (1)s+=5; (2)charc=s[1] (3)intlen=; (4)Stringt=; 参考答案: (1)为合法的。 7.String和StringBuffer中的哪个方法能改变调用该方法的对象自身的值 (1)String的charAt() (2)String的replace() (3)String的toUpperCase() (4)StringBuffer的reverse() 参考答案: (4)StringBuffer的reverse()可以改变对象自身的值。 8.假定s是字符串字面值“exercise”,计算下面每个表达式的值: (1)(5) (2)("er") (3)(5) (4)(‘e’) (5)() 参考答案: (1)i; (2)2; (3)ise; (4)0; (5)8; 9.写出下面程序的输出结果: publicclassStringExample{ publicstaticvoidmain(String[]args){ Stringstr=newString("abcd"); Stringstr1="abcd"; Stringstr2=newString("abcd"); ==str1); ==str2); ==str2); ==()); ==()); ==()); Stringhello="hello"; Stringhel="hel"; Stringlo="lo"; =="hel"+"lo"); =="hel"+lo); } } 参考答案: false false false true true true false true true true false 10.编写程序,将字符串“aabbcdefg”中每个字符作加2操作,最后结果为“ccddefghi”。 参考答案: 参考代码 publicclassChar{ publicstaticvoidmain(String[]args){ Strings="aabbcdefg"; char[]ch=(); for(inti=0;i<;i++){ ch[i]=(char)(ch[i]+2); } (); } } 第5章 1.编写一个程序,计算出前10个平方数(例如1,4,9,16),并将这10个数保存到一个整型数组中,将数组中的所有元素输出到控制台,验证程序是否正确。 要确保数组有10个元素,并且元素值的范围是1~100. 参考答案: publicstaticvoidmain(String[]args){ intb[]=newint[10]; for(inti=1;i<11;i++){ b[i]=i*i; } for(inti=0;i<10;i++){ } } 2.声明一个数组,其中的元素为37,47,23,-5,19,56,然后创建一个新数组,将前一个数组的内容复制到后一个数组中。 参考答案: publicstaticvoidmain(String[]args){ inta[]={37,47,23,-5,19,56}; intb[]=newint[]; for(inti=0;i<;i++){ b[i]=a[i]; } for(intj=0;j<;j++){ ""); } } 3.从命令行输入5个整数到数组a中,分别输入33、55、22、66及77。 求偶数的个数及其和。 参考答案: 示例代码: publicstaticvoidmain(String[]args){ inta[]=newint[5]; intcount=0; intsum=0; for(inti=0;i<;i++){ "请输入数组中的元素: "); Scannerread=newScanner; a[i]=(); if(i%2! =0){ count++; sum=sum+a[i]; } } "偶数个数是: "+count); "偶数的和是: "+sum); } 4.从命令行输入一个字符串“JavaServlet”,将每个字符存入a数组。 (1)大写字母有几个分别是那几个 (2)小写字母有几个分别是那几个 (3)将小写字母转换成大写字母,大写字母转换成小写字母。 参考答案: publicstaticvoidmain(String[]args){ if(args[0]! =""){ StringinputString=args[0]; intcountLower=0; intcountUpper=0; StringstrLower=""; StringstrUpper=""; for(inti=0;i<();i++){ charc=(i); if(c)){ countUpper++; strUpper+=c+""; }elseif(c)){ countLower++; strLower+=c+""; } } "大写字母有"+countUpper+"个,分别是: "+strUpper); "小写字母有"+countUpper+"个,分别是: "+strLower); } } 5.阅读下面代码: int[]ages=newint[10]; 下面关于上面两行代码的说法哪一个正确的 (1)编译时发生错误 (2)编译通过,运行时发生错误,因为局部变量在没有初始化情况下,不能使用 (3)编译通过,执行之后向控制台输出结果为0 (4)编译通过,执行时提示发生数组越界的错误 参考答案: (3)为正确选项。 6.阅读下面代码: publicclassAClass{ publicstaticvoidmain(String[]args){ String[]msg={"one","two","three","four"}; if==0){ "Noarguments"); }else{ "arguments"); } } } 下面哪个选项的说法是正确的 (1)该代码无法编译通过 (2)不带任何参数运行该程序时,会抛出NullPointerException异常 (3)分别带0个参数、3个参数运行该程序时,会打印Noarguments和twoarguments (4)分别带0个参数、3个参数运行该程序时,会打印Noarguments和fourarguments 参考答案: (4)为正确选项。 6.从命令行输入八个参数,并以气泡法排序后保存在a数组中,然后再输入一个查找键值Key,按顺序查找判断该键值是否存在与a数组中。 参考答案: 参考代码: publicstaticvoidmain(String[]args){ inti,j,t,temp; intarray[]=newint[8]; "输入8个整数: ");/*输入8个整数*/ for(i=0;i<;i++){ "请输入: "); Scannerread=newScanner; array[i]=(); } /*冒泡排序*/ for(i=0;i<;i++){ for(j=-1;j>i;j--) if(array[j]>array[j-1]){ t=array[j]; array[j]=array[j-1]; array[j-1]=t; } } /*输出排序后的数组元素*/ for(i=0;i<;i++){ +""); } "输入一个整数作为键值Key: "); Scannerread=newScanner; temp=(); for(i=0;i<&&temp<=array[i];i++)/*在排序后的数组中查找*/ { if(temp==array[i]){ "array[%d]是您所找的数.\n",i);/*在数组中有可能有相等的元素*/ }elseif(temp! =array[i-1]){ "数组中没有您想找的数.");/*数组中没有所输入的数*/ } } } 8.现有一个长度为49的整型数组a[49],不重复的将1-50之中49个数依次赋值给该数组,编写程序找出没有放进该数组的是哪个数 参考答案: publicstaticintfindNum(inta[]){ intnumFound=0; (a); for(inti=0;i<50;i++){ if(a[i]! =(i+1)){ numFound=i+1; break; } } returnnumFound; } 第6章 1.指出下面声明中的语法错误(如果有)。 记住,域声明的某些部分是可选的。 (1)publicbooleanisEven; (2)privatebooleanisEven; (3)privatebooleanisOdd; (4)publicbooleanisOdd; (5)stringS; (6)privatebooleaneven=0; (7)privateStrings=helloWorld; 参考答案: (3)和(4)均存在变量名命名错误; (5)string并不是一个类型,应为String。 (6)布尔类型变量的值应该为“true”或者“false”,不应该为整型。 (7)hello
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 基础 习题 答案