i++与++i,i--与--i操作符绕晕面试官

452 阅读3分钟

前言

嘿,朋友们!一年一度的金九银十又到了,今天我们来聊聊Java八股文中那些的面试题:i++++ii----i。它们就像是我们编程世界里的“加减小能手”,在变量的值上轻松地加一或减一。这四个在循环、迭代和条件语句中无处不在,也是面试官们的“宠儿”。别担心,本文将带大家深入了解它们的工作原理,并通过一个实际面试代码示例来展示它们的行为。

基本概念

首先简单介绍一下,这四个知识点的基本概念:

  • i++(后缀自增):先使用变量的值,然后再给它加个1。
  • ++i(前缀自增):先把变量的值加个1,然后再用这个新值。
  • i--(后缀自减):先使用变量的值,然后再给它减个1。
  • --i(前缀自减):先把变量的值减个1,然后再用这个新值。

这些操作符可以用于任何数值类型的变量,包括intfloatdouble等,这里强行记忆还是毕竟混淆的,这里给大家一个口诀:“i++先用后加,++i先加后用,i--先用后减,--i先减后用”。

实际面试题目

上面了解这四个知识点的基本概念,接下来直接通过一个实际面试题来具体分析这些操作符的行为:

public class IPlusPlus
{
    public static void main(String[] args)
    {
        int i = 1;
        System.out.println("i: "  +   i); 
        System.out.println("++i: "+   ++i); 
        System.out.println("i++: "+   i++);
        System.out.println("i: "  +     i);
        System.out.println("--i: "+   --i);
        System.out.println("i--: "+   i--);
        System.out.println("i: "  +   i);
    }
}

可以尝试自己算一下,分别输出的i是多少,面试题最终结果如下:

image.png

逐步解析

如果对于初级开发,估计遇到这个问题会有点晕,但是不必着急,只需要根据上面口诀,逐步分析即可。

  1. 初始化变量: 首先第一行代码,这里我们定义了一个整型变量i,并给它起了一个初始值1。

    int i = 1;
    
  2. 输出初始值

    System.out.println("i: "  +   i); // 输出 i: 1
    

    这里我们输出变量i的初始值,此时i的值为1。

  3. 前缀自增操作

    System.out.println("++i: "+   ++i); // 输出 ++i: 2
    

    其次在这里,++i表示先把i的值加个1,然后输出。因此,i的值变为2,输出结果为++i: 2

  4. 后缀自增操作

    System.out.println("i++: "+   i++);// 输出 i++: 2
    

    接下来是后缀自增操作i++,它表示先输出i的当前值,然后再给它加个1。因此,输出结果为i++: 2,之后i的值变为3。

  5. 输出当前值

    System.out.println("i: "  +     i);// 输出 i: 3
    

    此时,i的值为3,因此输出结果为i: 3

  6. 前缀自减操作

    System.out.println("--i: "+   --i);// 输出 --i: 2
    

    这里是前缀自减操作--i,它表示先把i的值减个1,然后输出。因此,i的值变为2,输出结果为--i: 2

  7. 后缀自减操作

    System.out.println("i--: "+   i--);// 输出 i--: 2
    

    后缀自减操作i--表示先输出i的当前值,然后再给它减个1。因此,输出结果为i--: 2,之后`I的值变为1。

  8. 输出最终值

    System.out.println("i: "  +   i);// 输出 i: 1
    

    最终,i的值为1,输出结果为i: 1

总的来说,记住口诀“i++先用后加,++i先加后用,i--先用后减,--i先减后用”,这个面试题便可以轻松解答。

结论

通过上述代码示例和逐步解析,可以清楚地看到i++++ii----i操作符的行为差异。前缀形式(++i--i)会在表达式计算之前改变变量的值,而后缀形式(i++i--)则是在表达式计算之后改变变量的值。

这种差异在复杂的表达式或者循环中可能会导致不同的结果,因此在编程时需要特别注意它们的使用。理解这些细微差别对于编写正确且高效的代码至关重要。希望这篇文章能让你对这些小家伙有更深入的了解!

欢迎大家评论留言,遇到了哪些面试题,一起讨论。