Java中的i++、++i语句

在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,笔者专门测试了一下,在Java语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。

int i = 0;
int j1 = i++; // 正确
int j2 = ++i; // 正确
i++; // 正确
++i; // 正确

i++ = 5; // 编译不通过
++i = 5; // 编译不通过

关于i++和++i的区别,稍微有经验的程序员都或多或少都是了解的,为了文章的完整性,本文也通过实例来简单地解释一下。

{
    int i = 1;
    int j1 = i++;
    System.out.println("j1=" + j1); // 输出 j1=1
    System.out.println("i=" + i); // 输出 i=2
}

{
    int i = 1;
    int j2 = ++i;
    System.out.println("j2=" + j2); // 输出 j2=2
    System.out.println("i=" + i); // 输出 i=2
}

上面的例子中可以看到,无论是i++和++i指令,对于i变量本身来说是没有任何区别,指令执行的结果都是i变量的值加1。而对于j1和j2来说,这就是区别所在。

int i = 1;
int j1 = i++; // 先将i的原始值(1)赋值给变量j1(1),然后i变量的值加1
int j1 = ++i; // 先将i变量的值加1,然后将i的当前值(2)赋值给变量j1(2)

猜你喜欢

转载自blog.csdn.net/luzhensmart/article/details/82941198