java单目运算符(++、--)

本文通过几个具体的Java代码示例,深入浅出地解析了单目运算符(以++为例)的工作原理,并探讨了其在表达式中与其他操作的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一鼓作气写点java的东西吧。(“第二次写博客”)
在此郑重说明:一切都是个人理解,或正确或错误,为了不误导你们,请抱着怀疑的态度看!!!谢谢。
1.对单目运算符的测试(以++ 为例)
有如下代码,请问会输出什么?

*public class MyTest {
    public static void main(String[] args){
        int a = 4;
        System.out.println(++a == (a+1));
        System.out.println(a++ == (a+1));
    }
}*

可能有的人会说:true false。因为单目运算符(++ 为例)先出现先运算,后出现后运算,即使用小括号把 a++ 包括起来,a 也会在参与运算后再执行 ++ 操作。第一个在变量前所先运算所以++a运算后a = 5,和右边相等所以第一个输出true,第二个输出false。我测试过两个都输出false。还有更有趣的现象:

*public class MyTest {
    public static void main(String[] args){
        int a = 4;
        System.out.println((++a) == 5);
        System.out.println(a);
        System.out.println((a++) == 6);
        System.out.println(a);
    }
}*

你们猜又会输出什么呢?下面是测试结果:

*true
5
false
6*

其实在写博客之前我是一点头绪都没有,但刚刚打完第二个测试类时,突然脑光一闪,有了自己的猜测:
关于 ++a == (a+1)输出“false”,我的理解是:先运算恒等号左边 ++ 在变量前所以 a 进行自加运算此时 a = 5;运算等式右边时 a+1 = 6,所以 5 == 6 ,false。
关于 a++ == (a+1)输出 false ,我的理解是: 先运算恒等号左边 ++在变量后 所以 a 先参与运算 此时 a = 5(接上面 ++a);运算恒等号右边 a+1= 6,所以 5 == 6,false
第二个测试刚好对上面猜测进行了验证。
这也就是运气吧。自己原来只有第一个测试的代码,慢慢的越写越多也就有了后面这些东西,也解了自己的疑惑。细细想来造成自己困惑的其实是自己已开始认为左右两边的代码是没有关联的,是各运算各的,所以在 a 的值发生改变后没有把 a 的值及时替换掉,因此造成了之前的困惑。望阅读到此文的人没有此困惑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值