基本数据类型、运算符和表达式
(总分:56.00,做题时间:90分钟)
一、选择题

(总题数:21,分数:42.00)
1.阅读下面程序
public static void main (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
 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.阅读下面程序
public class OperatorsAndExpressions
void equalsMethodl()
String s1=new String("how are you");
String s2=new String("how are you");
System.out.printIn (s1==s2);

public static void main (String args[])
OperatorsAndExpressions OperAndExp=new OperatorsAndExpressions();
//用于复合类型数据的"= ="运算符
OperAndExp.equalsMethodl();


程序运行结果是______。


(分数:2.00)
float型
 A.==
&ue
 C.false 
 D.equal
解析:[解析] 本程序的运行结果应该是表达式s1=s2的结果。字符串对象s1和s2是复合数据类型,因而表达式s1=s2比较的是s1和s2是否是同一个对象。本题中s1和s2虽然有相同的值“how are you”,但它们是两个不同的对象,所以本题的结果是false。若要比较两个对象的值,可以调用equals()方法。
4.下列代码中,将引起编译错误的行是______。
1) public class Exercise
2) public static void main (String args[])
3)float f=0.0;
4) f+=1.0;
5)
6)


(分数:2.00)
 A.第2行
 B.第3行 
 C.第4行
 D.第6行
解析:[解析] float f=0.0;语句中,想要定义一个float型变量f,并且赋初值为0.0,但是数字后面没有跟任何字母,计算机默认为double类型,而从double类型不能自动转换为float,所以该语句将引起编译错误。
5.阅读下面程序
public class Test2
public static void main (String args[])
int a=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.阅读下列代码
public class Test2005
public static void main (String args[])
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.阅读下面程序
import java.io.*;
public class TypeTransition
public static void main (String args[])
char a='h';
int i=100;
int j=97;
int aa=a+i;
System.out.printIn( "aa="+aa);
char bb= (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.阅读下面程序
public class Increment
public static void main (String args[]
int c;
c=5;
System.out.printIn(c);
System.out.printIn(c++)j
System.out.printIn (c);


程序运行结果是______。


(分数:2.00)
 A.5
6
6
 B.5
5
 C.6
7
7
 D.6
6
6
解析:[解析] 本程序中,变量c的初值为5,第一条输出语句输出其初值;第二条输出语句先输出c的值,再将c加1,故第二条仍输出5;执行第三条输出语句时,c已经加1变为6,所以输出的结果为6。根据以上分析可知本题正确答案为B。