1、下面那个标识符不符合Java定义要求?
A. String
B. _Name
C. Name123
D. 100Book
解析:
Java的变量命名
首字母:英文字母、
和
下
划
线
。
变
量
名
:
由
和下划线。 变量名:由
和下划线。变量名:由、字母、数字和下划线组成。 且不能使用Java关键字
String是可以作为变量名的。
String不是关键字
2、假设有如下程序:
int num = 2147483647 ;
num += 2L ;
最终的num结果是什么?
A. -2147483648
B. 2147483649
C. -2147483647
D. 2
解析:
java int 类整数的最大值是 2 的 31 次方 - 1 = 2147483648 - 1 = 2147483647
int最大值+1后就变成 -的最大值+1 也就是(-2147483648)
在此基础上在+1 即为 -2147483647
此外,题目中写的是,
num += 2L ;
如果写成
num = num+2L;
则编译会报错,因为一个int类型与long类型相加结果为long类型,long赋值给int是无法自动转换。所以报错。
但是将int赋值给long是可以的。因为可以自动转换。
“+=”是java中的一个运算符,而不是两个,所以在运算时 会进行自动类型转换。所以在编译时没有报错。
3、 int i = 1 ;
int j = i++ ;
if((i==(++j))&&((i++)==j)) {
i += j ;
}
System.out.println("i = "+i);
}
int i = 1 ;
int j = i++ ;
i++,先赋值后++,
走完此处 i=2 j=1
下一步
if((i==(++j))&&((i++)==j)){}
if的&&判断从左到右(i=(++j))
++j,先++后比较
此时j=2,i==j为true。
(如果左边为false,则右边不会执行,读题细心观察)
继续走((i++)==j))
i++,先比较后++,
此时i=2,i==j为true。进入if块前i++ , i=3
i += j ;
i=3,j=2,
最后i=3+2=5.