黑马程序员技术交流社区
标题:
我也想问一下这个==问题
[打印本页]
作者:
Suly
时间:
2012-3-29 14:13
标题:
我也想问一下这个==问题
本帖最后由 Suly 于 2012-3-29 14:14 编辑
class Demo
{
public static void main(String[] args)
{
int x = 1;
int y = 2;
System.out.println(x++ == y);
//此结果为false x=2 y=2 为什么为false?
System.out.println(x);
System.out.println(y);
System.out.println(x++ == y);
//此结果为true x=3 y=2 为什么为true?
System.out.println(x);
System.out.println(y);
}
}
/*其结果:
false
2
2
true
3
2
*/
作者:
黄或俊
时间:
2012-3-29 14:48
X++ 是先使用再做加1的操作,X的初始值为1,所以使用的时候是1,当第二次输出X时,X值就变为2
++X 是先做加1操作再使用
System.out.println(++x == y); 为:true
作者:
刘士
时间:
2012-3-29 15:52
class Demo
{
public static void main(String[] args)
{
int x = 1;
int y = 2;
System.out.println(x++ == y); //此结果为false x=2 y=2 为什么为false?/*这个 x++,x的值变成了2了 */
System.out.println(x);
System.out.println(y);
System.out.println(x++ == y); //此结果为true x=3 y=2 为什么为true? /*i++,赋完再加,也就是说 先判断相等再相加,运算顺序是先判断完之后x++*/
System.out.println(x);
System.out.println(y);
}
}
作者:
何万县
时间:
2012-3-29 16:22
此问题要注意X++跟++X的区别,X ++是先做运算后,再加1
即x++ == y可分解为:x==y, x=x+1
作者:
欧德林
时间:
2012-3-29 16:24
程序默认的是:先判断== 再做了++ 运算
就是(x++ == y) 先判断X与Y是否相等,然后再X自增
运算的优先关系 不是先算术 运算再逻辑运算啊?请楼下的大神 解释。。
作者:
杨华威
时间:
2012-3-29 16:38
你没有理解运算符++
int x = 1;
int y = 2;
System.out.println(x++ == y); //x++,是先进行计算,然后再加1,比较的时候,x还是1;自然不想等了,输出之后x才加1;
System.out.println(x); //此时x=2;
System.out.println(y);
System.out.println(x++ == y); //此时运算时,x=2;结果自然是true;输出之后x=3;
记住一点,x++,是当前运算结束后再加1,++x,是先加1后再进行运算。
作者:
杨华威
时间:
2012-3-29 16:41
欧德林 发表于 2012-3-29 16:24
程序默认的是:先判断== 再做了++ 运算
就是(x++ == y) 先判断X与Y是否相等,然后再X自增
就是(x++ == y) 先判断X与Y是否相等,然后再X自增;
这句理解是正确的。
作者:
翟友伟
时间:
2012-3-29 16:46
x++ 先用 后++
++x 先++再用
基础的不能再基础了 朋友
作者:
王运科
时间:
2012-3-29 18:15
class Demo
{
public static void main(String[] args)
{
int x = 1;
int y = 2;
System.out.println(x++ == y); // 先执行,也就是判断x==y? 此时x=1,y=2;执行完后x=2。所以为false.
System.out.println(x);
System.out.println(y);
System.out.println(x++ == y); //先执行,此时x=2,y=2;执行完后x=3.所以为true.
System.out.println(x);
System.out.println(y);
}
}
作者:
刘_浩
时间:
2012-3-29 18:37
兄弟,你理解不对。对于x=1;(x++==y);这里的理解是x==y即为1==2;所以为false; 然后才是x+1.即为2.
所以System.out.println(x);x=2; System.out.println(y);y==2; (x++ == y),这里是x==y,即为2==2,即 为true,; System.out.println(x);然后才是x+1,即为x=3; System.out.println(y);y=2;
作者:
胡川
时间:
2012-3-29 18:39
class Demo
{
public static void main(String[] args)
{
int x = 1;
int y = 2;
System.out.println(x++ == y); // 在此你要记得"++""--""==". "++"or"--"为前缀,先自增或者自减在赋值 在后面就像犯了 ,在这个程序“++”在后面,所以是 1.y=2所以逻辑运算符“==” 判定为 false.
System.out.println(x);
System.out.println(y);
System.out.println(x++ == y); //在此同样,此时x=2,y=2;执行完后x=3.所以为true.
System.out.println(x);
System.out.println(y);
}
}
作者:
胡川
时间:
2012-3-29 18:40
class Demo
{
public static void main(String[] args)
{
int x = 1;
int y = 2;
System.out.println(x++ == y); // 在此你要记得"++""--""==". "++"or"--"为前缀,先自增或者自减在赋值 在后面就相反了 ,在这个程序“++”在后面,所以是 1.y=2所以逻辑运算符“==” 判定为 false.
System.out.println(x);
System.out.println(y);
System.out.println(x++ == y); //在此同样,此时x=2,y=2;执行完后x=3.所以为true.
System.out.println(x);
System.out.println(y);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2