关于==运算符的使用

关于==运算符的使用

选择题中,x==y为false,==比较的是x和y的值吗?如果是,那我在x++;后面再写一个y++;为什么x==y还是false;有些混乱,如果比较的是引用地址,那例题从创建对象到进行比较,在内存中栈和常量池中的过程是怎样的呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 跨擦 2017-08-12 13:17:32


Integer x=400;

Integer y=x;

System.out.println(x==y);

这样比较的结果是true


Integer x=400;

Integer y=x;

        x++;

System.out.println(x==y);

这样的比较结果是false

如果是先比较再运算,那为什么这个结果不是true


Integer x=400;

Integer y=x;

        x++;

        y++;

System.out.println(x==y);

程序是逐条运行的,为什么是先比较再运算?

调试的过程看,也是先是在x,y的值各加1,

求教!!!!!!

好帮手慕珊 2017-08-12 12:55:40

你好,比较的就是x和y的值,之所以还是false,是因为x++和y++都是先参与运算,然后再自加。所以是先进行比较,然后x和y的值再各自加1。祝学习愉快!

  • 提问者 跨擦 #1
    Integer x=400; Integer y=x; System.out.println(x==y); 这样比较的结果是true Integer x=400; Integer y=x; x++; System.out.println(x==y); 这样的比较结果是false 如果是先比较再运算,那为什么这个结果不是true Integer x=400; Integer y=x; x++; y++; System.out.println(x==y); 程序是逐条运行的,为什么是先比较再运算? 调试的过程看,也是先是在x,y的值各加1, 求教!!!!!!
    2017-08-12 13:18:00
  • 好帮手慕雪 回复 提问者 跨擦 #2
    你“ x++; System.out.println(x==y); ”这是两句话,两行代码,执行完 x++; 之后x就自增了。到第二行的比较那肯定是不同的。“x++和y++都是先参与运算,然后再自加”是有特定环境的,发生在同一行代码既有运算又有++。例如:System.out.println(y==x++),而你分开写成两行就不适用了,就是按行的前后顺序执行的。
    2017-08-13 14:32:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师