我要考JP了,估计还有一周吧,今天看模拟题的时候有个结果实在有些想不明白,请解释下,代码如下:
int i = 0, j = 1;
if ((i++ == 1) && (j++ == 2)) {
i = 42;
}
System.out.println("i = " + i + ", j =" + j);
结果是i =1, j=1实在没想通这个结果,怎么执行的代码?高手请指点下!
int i = 0, j = 1;
if ((i++ == 1) && (j++ == 2)) {
i = 42;
}
System.out.println("i = " + i + ", j =" + j);
结果是i =1, j=1实在没想通这个结果,怎么执行的代码?高手请指点下!
解决方案 »
- IO是如何利用缓冲区来搞高性能的,原理是什么?
- 连接sql server的时候出现Value can not be converted to requested type.
- 为什么提示找不到符号啊
- 如何将外部配置文件读入HashMap,请指教,谢谢!
- JDBC连SQL Server的乱码问题!急!!!
- 如何让一个线程停止执行,然后再通过点击一个按钮继续?
- 求高手点拨一个”更新IM好友列表功能“的最佳修改方案.
- 如何使用JBuilder?
- 请问哪位朋友有together的中文使用文档???
- 请教:用java能不能实现小检索软件?
- jbuild 的报价是多少?
- [急救]如何将一个String类型强制转换为int(Integer)?
a=i++;//这里i先把值赋给a,然后i再自己++
b=i;//此时b=1
int i1=0;
System.out.println( i1++);
System.out.println( i1);输出是
0
1
----------------------------------------------------------
当(i++ == 1)=false的时候(j++ == 2)没有执行 应为你用的是&&
改成如下
int i = 0, j = 1;
if ((i++ == 1) || (j++ == 2)) { //还是false 没执行i=42 ,但执行了j++
i = 42;
}
System.out.println("i = " + i + ", j =" + j);
输出是
i = 1, j =2
1.先比较i是否和1相等,(不等,因为i=0)
2然后i变成1
3&&又叫短路运算,如果前面的为false,后面的语句就不执行。所以结果是i =1, j=1
int i = 0, j = 1;
if ((++i == 1) && (++j== 2)) {
i = 42;
}
System.out.println("i = " + i + ", j =" + j);
}
这样看一下就明白了