基本数据类型运算符和表达式.docx
《基本数据类型运算符和表达式.docx》由会员分享,可在线阅读,更多相关《基本数据类型运算符和表达式.docx(12页珍藏版)》请在冰豆网上搜索。
基本数据类型运算符和表达式
基本数据类型、运算符和表达式
(总分:
56.00,做题时间:
90分钟)
一、选择题
(总题数:
21,分数:
42.00)
1.阅读下面程序
publicstaticvoidmain(String[]args)
System.out.printIn(34+56-6);
System.out.printIn(26*2-3);
System.out.printIn(3*4/2);
System.out.printIn(5/2);
程序运行结果是______。
(分数:
2.00)
A.84
49
6
2 √
B.90
25
6
2.5
C.84
23
12
2
D.68
49
14
2.5
解析:
[解析]第一条输出语句中,+、-是同优先级的运算符,按照左结合的原则,表达式34+56-6的值应该是84。
第二条输出语句中,*的优先级高于-,先算26*2=52,再进行减法运算:
52-3=49。
第三条输出语句中,+与/是同优先级的运算符,按照左结合可以得到3*4/2的值为6。
第四条输出语句中,两个整型数据做除法运算,其结果也应该为整型数据,所以结果是2,而不是2.5。
2.下列属于合法的Java标识符是______。
(分数:
2.00)
A."ABC"
B.&5678
C.+rriwo
D.saler √
解析:
[解析]Java中所有的变量、常量、对象和类都用标识符命名,其命名规则为:
(1)只能以字母、下画线、美元符($)作为首字符,不能用数字或其他符号(如*)作为标识符的首字符。
(2)标识符是区分大小写的。
只有D项是正确的。
3.阅读下面程序
publicclassOperatorsAndExpressions
voidequalsMethodl()
Strings1=newString("howareyou");
Strings2=newString("howareyou");
System.out.printIn(s1==s2);
publicstaticvoidmain(Stringargs[])
OperatorsAndExpressionsOperAndExp=newOperatorsAndExpressions();
//用于复合类型数据的"=="运算符
OperAndExp.equalsMethodl();
程序运行结果是______。
(分数:
2.00)
A.==
B.true
C.false √
D.equal
解析:
[解析]本程序的运行结果应该是表达式s1=s2的结果。
字符串对象s1和s2是复合数据类型,因而表达式s1=s2比较的是s1和s2是否是同一个对象。
本题中s1和s2虽然有相同的值“howareyou”,但它们是两个不同的对象,所以本题的结果是false。
若要比较两个对象的值,可以调用equals()方法。
4.下列代码中,将引起编译错误的行是______。
1)publicclassExercise
2)publicstaticvoidmain(Stringargs[])
3)floatf=0.0;
4)f+=1.0;
5)
6)
(分数:
2.00)
A.第2行
B.第3行 √
C.第4行
D.第6行
解析:
[解析]floatf=0.0;语句中,想要定义一个float型变量f,并且赋初值为0.0,但是数字后面没有跟任何字母,计算机默认为double类型,而从double类型不能自动转换为float,所以该语句将引起编译错误。
5.阅读下面程序
publicclassTest2
publicstaticvoidmain(Stringargs[])
inta=10,b=4,C=20,d=6;
System.out.printIn(a++*b+c*--d);
程序运行的结果是______。
(分数:
2.00)
A.144
B.160
C.140 √
D.164
解析:
[解析]表达式a++*b+c*--d中,++、一的优先级最高,a++运算返回结果为10,--d运算返回结果为5;然后进行两个*运算,10*b=40,20*5=100;最后进行加法运算,所以最终结果为140。
这里要注意的是:
x++与++x是有区别的:
x++在使用x后将x加1,整个表达式的值为x;而++x是在使用x之前将x加1,故整个表达式的值为x+1。
6.阅读下列代码
publicclassTest2005
publicstaticvoidmain(Stringargs[])
System.out.printIn(~(Oxa5)&Oxaa);
其运行结果是______。
(分数:
2.00)
A.Oxa5
B.10 √
C.Ox50
D.Oxaa
解析:
[解析]十六进制数0xa5的二进制形式为位10100101,0xaa的二进制形式为10101010。
在位运算符中,“~”的优先级高于“&”,所以先计算~10100101,其结果为01011010,然后计算01011010&10101010,其结果是00001010,将其转换为十进制数,即为10。
所以正确选项为B。
7.下列代表十六进制整数的是______。
(分数:
2.00)
A.0123
B.1900
C.fa00
D.Oxa2 √
解析:
[解析]整型常量分3种书写格式:
十进制整数,如139,-3,35;八进制整数,以0开头,如012表示十进制数10;十六进制数,以0x或0X开头,如0x123表示十进制数291。
选项A是八进制整数,选项B是十进制整数,选项C不是整数,只有选项D是正确选项。
8.阅读下面程序
importjava.io.*;
publicclassTypeTransition
publicstaticvoidmain(Stringargs[])
chara='h';
inti=100;
intj=97;
intaa=a+i;
System.out.printIn("aa="+aa);
charbb=(char)j;
System.out.printIn("bb="+bb);
如果输出结果的第二行为bb=a,那么第一行的输出是______。
(分数:
2.00)
A.aa=I
B.aa=204 √
C.aa=v
D.aa=156
解析:
[解析]Java语言规定,char型数据可以自动转换成int类型,转换的结果就是该字符的ASCⅡ码值。
由题目给出的第二行输出为bb=a,知道a的ASCⅡ值为97,则b的ASCⅡ值为98,依次类推得到h的ASCⅡ码值为104,所以aa=104+100,结果自然就是204。
所以正确选项为B。
9.下列标识符(名字)命名原则中,正确的是______。
(分数:
2.00)
A.类名的首字母小写
B.变量和方法名的首字母大写
C.接口名的首字母小写
D.常量完全大写 √
解析:
[解析]Java中针对变量、常量、类名、方法名、接口名的命名规则如下:
_、$不作为变量名、方法名的开头;变量名、方法名首单词小写,其余单词首个字母大写;接口名、类名首个单词第一个字母大写;常量完全大写。
根据以上规则可知选项D是正确的。
10.下列叙述中,正确的是______。
(分数:
2.00)
A.声明变量时必须指定一个类型 √
B.Java认为变量number与Number相同
C.Java中唯一的注释方式是"//"
D.源文件中public类可以有0或多个
解析:
[解析]Java中声明变量时,必须指定类型,否则将出错。
Java标识符是区分大小写的。
Java中有3种注释方式:
文档注释/**...*/,C语言注释风格/*...*/,单行注释//,格式上要求注释符//后必须紧跟一个空格。
源文件中public类最多只有1个,所以选项D不正确。
11."++"运算符的操作数个数是______。
(分数:
2.00)
A.1个 √
B.2个
C.3个
D.4个
解析:
[解析]按运算符的操作数的数目划分,可以分为:
一元运算符:
++、--、+、-;二元运算符:
+、-、>;三元运算符:
?
:
。
所以本题正确答案是A。
12.阅读下面程序
publicclassIncrement
publicstaticvoidmain(Stringargs[]
intc;
c=5;
System.out.printIn(c);
System.out.printIn(c++)j
System.out.printIn(c);
程序运行结果是______。
(分数:
2.00)
A.5
6
6
B.5
5
6 √
C.6
7
7
D.6
6
6
解析:
[解析]本程序中,变量c的初值为5,第一条输出语句输出其初值;第二条输出语句先输出c的值,再将c加1,故第二条仍输出5;执行第三条输出语句时,c已经加1变为6,所以输出的结果为6。
根据以上分析可知本题正确答案为B。
13.请阅读下面程序
publicclassOperatorsAndExpressions
voidresidual()
inti=100.j=30;
floatm=563.5f,n=4.0f;
System,out.printIn(i%j);
System,.out.printIn(m%n);
publicstaticvoidmain(Stringargs[])
OperatorsAndExpressionsOperAndExp=newOperatorsAndExpressions();
//取模运算在整数和浮点数中的应用
OperAndExp.residual();
程序运算结果是______。
(分数:
2.00)
A.10
3.5 √
B.20
2.5
C.10
4.5
D.-20
3.5
解析:
[解析]解析过程同上题。
14.下列布尔变量定义中,正确并且规范的是______。
(分数:
2.00)
A.BOOLEANcanceled=false;
B.booleancanceled=false; √
C.booleanCANCELED=false;
D.booleancanceled=FALSE;
解析:
[解析]Java中的标识符是区分大小写的,boolean、false都是其中的关键字,大写后不正确,故选项A和C都不正确。
Java中的变量名一般为小写,只有常变量才用大写,所以选项C也不正确。
正确选项是B。
15.下列运算符不能进行位运算的是______。
(分数:
2.00)
A.>>
B.>>>
C.<<
D.<<< √
解析:
[解析]位运算符有:
>>、<<、>>>、&、|、^、~。
其中>>表示算术右移,<<表示算术左移,>>>表示逻辑右移。
没有<<<运算,故选项为D。
16.阅读下面程序
publicclassTest4
publicstaticvoidmain(Stringargs[])
inti=10,j=3;
floatm=213.5f,n=4.0f
System.out.printIn(i%j);
System.out.printIn(m%n);
程序运行的结果是______。
(分数:
2.00)
A.1.0和1.5
B.1和1.5 √
C.1.0和2.5
D.1和2.5
解析:
[解析]对于二元算术运算,若两个操作数全为整型,只要其中一个为long型,则表达式结果为long型;若两个操作数全是byte或short型,表达式结果是int型;两个操作数是浮点型,只要其中一个为double型,则表达式结果为double型,否则为float型。
所以第一次输出的结果一定是1,第二次输出的结果是1.5。
17.请阅读下面程序
importjava.io;
publicclassTypeTransition
pubicstaticvoidmain(Stringargs[])
chara='a';
inti=100;
longy=456L;
intaa=a+i;
longyy=y-aa;
System.out.print("aa="+aa);
System.out.print("yy="+yy);
程序运行结果是______。
(分数:
2.00)
A.aa=197yy=259 √
B.aa=177yy=259
C.aa=543yy=288
D.aa=197yy=333
解析:
[解析]自动转换的优先次序是:
byte,short,char→int→long→float→double。
字符型变量可以当做整型变量参与算术运算,'a'对应的整数值为97,所以aa=97+100,yy=456L-197L。
故正确答案为A。
18.下列运算符属于关系运算符的是______。
(分数:
2.00)
A.== √
B.=
C.+=
D.-=
解析:
[解析]关系运算符有:
>、<、>=、<=、==、!
=、=、+=、-=均属于赋值运算符,故B、C、D均不正确。
19.阅读下列代码
publicclassTest
publicstaticvoidmain(Stringargs[])
System.out.printIn(89>1);
其运行结果是______。
(分数:
2.00)
A.44 √
B.45
C.88
D.90
解析:
[解析]“89>>1”是将89的各二进制位右移1位,并且低位舍弃,高位补入原来高位的值。
Java使用补码来表示二进制数,89的补码是01011001,右移1位后变为00101100,对应的十进制数为44。
20.阅读下列代码
publicclassTest2005
publicstaticvoidmain(Stringargs[])
System.out.printIn((3>2)?
4:
5);
其运行结果是______。
(2006年4月)
(分数:
2.00)
A.2
B.3
C.4 √
D.5
解析:
[解析]条件运算符的形式为:
expressl?
express2:
express3。
当express1结果值为true,则计算express2,并将结果作为整个表达式的值;如果为false,则计算express3,并将结果作为条件表达式的值。
本程序中表达式(3>2)结果为true,故整个表达式的值为4。
21.阅读下面程序
publicclassTest3
publicstaticvoidmain(Stringargs[])
intx=3,y=4,z=5;
StringS="xyz";
System.out.printIn(s+x+y+z);
程序运行的结果是______。
(分数:
2.00)
A.xyz12
B.xyz345 √
C.xyzxyz
D.12xyz
解析:
[解析]Java中对“+”运算符进行了扩展,使它能够进行字符串连接。
如“abc”+“de”得到字符串“abcde”,“abc”+3得到字符串“abc3”。
如果“+”运算符的第一个操作数不是字符串,则运算结果由后续的操作数决定,如3+4+5+“abc”的结果是“12abc”,而不是“354abc”。
由上述分析可知本题正确选项为B。
二、填空题
(总题数:
7,分数:
14.00)
22.在Java中,所有数据类型的长度都固定,因此没有保留字1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
sizeof)
解析:
[解析]Java中,所有数据类型的长度都固定,并与平台无关,因此没有sizeof保留字,这也是Java与C语言的不同之处。
23.在Java中,转义字符/n表示1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
换行)
解析:
[解析]Java中,转义字符以反斜杠(/)开头,下面给出了一些常见的转义字符:
/'表示单撇号字符,/n表示换行,//表示反斜杠字符,/r表示回车,/t表示横向跳格。
24.在Java中,3.14156D表示的是1数。
(分数:
2.00)
填空项1:
__________________ (正确答案:
双精度浮点)
解析:
[解析]浮点型数据分为float和double两种类型。
如果数字的末尾加F或f,则是float类型;如果数字末尾加D或d,则是double型。
特别地,如果数字后面什么字母也没有,计算机默认为double型。
25.布尔逻辑运算包括:
!
、&&和1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
||)
解析:
[解析]布尔逻辑运算符共有3种:
逻辑与(&&)、逻辑或(||)、逻辑非(!
)。
26.阅读下列程序段
puiblicclassOperatoraAndExpressions
StingcondiltionaIExpression(intscore)
Stingresult;
//如果score超过60分,则结果是passed,否则是does'tpass
result=(score>=60)?
"passed":
"doesn'tpass";
System.out.printIn(result);
returnresult;
publicstaticvoidmain(Stringargs[])
OperatorsAndExpressionsOperAndExp=newOperatorsAndExperssions();
//条件表达式
OperAndExp,conditionalExpression(65);
其执行结果是______。
(分数:
2.00)
填空项1:
__________________ (正确答案:
passed)
解析:
[解析]本题中score=65,所以score>60的结果为true,故result=passed,最后输出结果当然也是passed。
27.阅读下列代码
publicclassTest2
publicstaticvoidmcn(Stringargs[])
System.out.printIn(5/2);
其执行结果是______。
(分数:
2.00)
填空项1:
__________________ (正确答案:
2)
解析:
[解析]二元算术运算符适用于所有的数值型数据类型。
如果两个操作数均是int型,则表达式结果也是int型。
本程序中表达式“5/2”的结果也应该是int型,故输出结果为2。
28.Java语言中,移位运算符包括:
>>、<<和1。
(分数:
2.00)
填空项1:
__________________ (正确答案:
>>>)
解析:
[解析]Java中定义了3个移位运算符:
算术右移:
>>;算术左移:
<<;逻辑右移:
>>>。