Java中的一元加减运算符

        不得不说,在没学《Java编程思想》之前,我对Java的学习只是“知其然”,即只是知道该这样用而已,但是当你看了《Java编程思想》之后,才真正明白什么叫做“知其所以然”。当然这句话并不是我说的,而是某位大佬说的,这里就引用一下吧。

        今天学习到第三章的一元加(+)减(-)运算符,从字面上讲,这两个符号的操作数只有一个,而且他们与二元加减运算符都使用相同的符号,编译器会根据表达式的书写形式来判断是哪一种。比如:
        x = -a;
上面这条语句很显然,无论是编译器还是读者都能读出这里的减号是一元减号运算符,但是下面的语句可能就会不一样了。
        x = a * -b;
这样的语句编译器能正确读出来,但是读者可能就会搞糊涂,所以有时需要明确地写成这样:
       x = a * (-b);
接下来才是我写这篇文章的目的:
       《Java编程思想》原文中对这两个符号的作用做了这样的总结:
        
    一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是 它唯一的作用仅仅是将较小类型的操作数提升为int.
           
       加亮的这句话第一次看的时候看不懂,因为根据我自己无法用代码去证明这句话的正确性,于是我在网络上搜了一下,发现网络上的回答也只是一知半解,于是自己找乐原版英文书,发现书中原文是这样子的。

     高亮中文部分在我浅显的英文功力面前的理解是没有“ 它唯一的作用仅仅是将较小类型的操作数提升为int.”这句话,也就是它除了和一元减号运算符相呼应之外没有任何的作用。但是中文版既然加上去了也不能说它错吧,肯定是在翻译的时候Java已经变了,于是就增加了上去(我自己的理解)。
        不过后来问了网络上的大佬终于给证明出来了。如下
public class Yiyuan {
     public static void main(String[] args) {
          //定义一个byte类型变量
          byte b = 1;
          //用一元加号后赋值给c,发现报错。
          byte c = +b;
          //再赋值给整型变量d后能编译通过,证明b编程了int型。
          int d = +b;
          
          
     }
}

猜你喜欢

转载自blog.csdn.net/zane06/article/details/79718368