【问题标题】:What is the difference between the operators += vs =+运算符 += 与 =+ 有什么区别
【发布时间】:2013-06-16 21:56:06
【问题描述】:

我刚刚意识到我使用 =+ 而不是运算符 += 并且我的程序正在做各种奇怪和意想不到的事情。 Eclipse 没有给我任何类型的错误,所以我认为 =+ 是一个合法的运算符,但我的书中没有提到它。

我的问题是 =+ 如果有什么作用,你会在什么情况下使用它?

【问题讨论】:

    标签: java operators


    【解决方案1】:

    常见的语法是:

     +=
    

    这是添加和赋值运算符,它将右手表达式添加到左侧变量,然后将结果分配给左侧变量。例如:

     int i = 1;
     int j = 2;
     i += j;
    
     // Output: 3
     System.out.println( i )
    

    一种不太常见的语法是:

    =+
    

    这通常写成两个不同的运算符,用空格隔开:

    = +
    

    没有空格的样子如下:

    int i = 1;
    int j = 2;
        
    i =+ j;
    
    // Output: 2
    System.out.println(i);
    

    一种惯用的写法是将一元运算符移到右侧:

    int i = 1;
    int j = 2;
        
    i = +j;
    
    // Output: 2
    System.out.println(i);
    

    现在很容易看到i 被分配给j 的正值。然而,+ 是多余的,所以它经常被丢弃,导致i = j,实际上相当于i = +1 * j。与之相反的是负一元运算符:

    int i = 1;
    int j = 2;
        
    i = -j;
    
    // Output: -2
    System.out.println(i);
    

    在这里,- 是必要的,因为它反转了j 的符号,实际上相当于i = -1 * j

    有关详细信息,请参阅operators tutorial

    【讨论】:

      【解决方案2】:

      =+ 与赋值运算符= 相同

      a =+ b;
      

      等价于

      a = (+b);
      

      相同
      a = b;
      

      【讨论】:

      • 确实,鉴于 a=-1;是一条有效的线,我认为尽管什么都不做,但 a=+1 也应该是有效的。我有时用它来强调一些意图
      【解决方案3】:

      要强调的重要事实是,Java 中没有 =+ 赋值运算符。

      您只是列出两个运算符,一个接一个(一个=,然后一个+

      • i =+ j; 就像写 i = +j;

      虽然这样看有点时髦,但在考虑减号时,每个人都非常清楚。

      • i =- j;i = -j; 相同

      正如许多其他答案中提到的,添加和赋值运算符+=

      • 将右侧表达式添加到左侧变量的值中
      • 然后将该加法的值赋给左侧变量。

      【讨论】:

        【解决方案4】:

        += 将右操作数添加到左操作数并将其分配给左操作数

        =+给左操作数赋值

        【讨论】:

          【解决方案5】:

          其实说i=ji= +j一样并不完全正确, 因为i= +j 将变量类型提升为 int 如果它小于 int,而赋值则不会。 例如:

          byte b1 = 2;
          short s1 = b; // compiles and s1 equals 2 of type short
          short s2 = +b; // Compile error: required type: short, provided int
          // Because the result of +b equals 2 of type int
          

          【讨论】:

            【解决方案6】:

            =+除了和=一样没有其他作用

            【讨论】:

            • 不要用答案来寻求帮助;如果您想添加评论或只是打开一个新问题,请使用 cmets。
            猜你喜欢
            • 1970-01-01
            • 2022-06-10
            • 1970-01-01
            • 2018-08-16
            • 2012-10-10
            • 1970-01-01
            • 1970-01-01
            • 2010-11-15
            • 2011-02-12
            相关资源
            最近更新 更多