JAVA基础错题总结

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值