Java基础篇(二):前置与后置运算符

前置与后置运算符是非常常用的运算符,但它们有什么区别?这里以++为例子,看下面的代码:

public class Test 
{
    public static void main(String[] args) 
    {   
        int x = 0;
        x ++;
        ++ x;
    }
}

在这段代码中,x++++x的效果是一样的。再看下面的代码:

public class Test 
{
    public static void main(String[] args) 
    {   
        int x = 0;
        int y = x++;
        int z = ++x;
        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
    }
}

输出结果是

2
0
2

来分析一下代码,x++++x语句的结果都是将x的值加1,而它们的区别就是它们的返回值不一样,x++返回的值是x原来的值(加1之前的值),所以y的值为0,此时x的值为1,++x返回的值是加1之后的值,因此z的值为2,x的值也是2。

C/C++中的前置与后置运算符##

C/C++中的前置与后置运算符对操作数进行运算的结果与Java中是一样的,但有一点不一样,还是它们的返回值不一样,有些同学可能要问,返回值跟Java中是一样的啊,哪里不一样了,看看下面的代码你就明白了:

#include <iostream>
using namespace std;

int main()
{
    int x = 0;
    (x++) ++;   // 这句编译错误,提示:error: non-lvalue in increment
    (++x) ++;
    cout << x << endl;
}

看明白了吗?重点就在于(x++) ++(++x) ++,前者会编译错误,提示非左值不能进行自增操作,而后者可以正常编译。也就是说,在C/C++,x++返回的仅仅是一个而已,不能对其进行写操作,而++x返回的是x本身这个变量,可以对其进行写操作。
而在Java中,如下:

public class Test 
{
    public static void main(String[] args) 
    {   
        int x = 0;
        (x++) ++;    // 编译错误
        (++x) ++;    // 编译错误
    }
}

两者都会编译错误,说明在Java中,不管是前置还是后置运算符返回的都是值,不能作为左值进行写操作。

左值

左值(lvalue) 是B语言/C语言/C++语言类C语言中的一类表达式。“左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数(B语言中已经如此)。而且,现代C/C++中的含义已经不局限于此。lvalue的l被重新解释为location。这也对应于ISO C11/ISO C++11的内存位置(memory location)。(引自左值-百度百科)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容

  • 表达式 表达式是由数字、运算符、数字分组符号(如括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合...
    劼哥stone阅读 554评论 0 4
  • 运算符是检查、改变、合并值的特殊符号或短语。例如,加号+将两个数相加(如let i = 1 + 2)。更复杂的运算...
    穷人家的孩纸阅读 14,940评论 3 6
  • 有时候一个很奇怪的感觉挥之不去,现在看到对对新人结婚时,总觉得他们看上去好小,貌似没有成年便组建家庭了,一问...
    悠姐阅读 197评论 0 0
  • 电容补偿的方法: 1.集中补偿 2.分组补偿 3.单台电动机就地补偿 优点: 1、因电容器与电机直接并联,同时投入...
    王博超0321阅读 239评论 0 0
  • 无名的人 有 很多 无名者 是 那些 无法被人记住的人 无名者 是 那些 被人忘记的人 你与我 也是 大多数人中 ...
    安然静雪阅读 434评论 0 0