上篇文章我们了解到了运算符和表达式,并对算术运算符有了一定的掌握,今天,我们继续来认识一下更多的运算符吧!
1)算术运算符
详见上篇文章
2)赋值运算符
首先赋值运算符的作用就是将一个表达式的值赋给左边,而且左边必须是可以修改的,不能是常量。
3)自增自减运算符
这两个符号既可以放在变量的前面,也可以放在变量的后面,在单独使用时,它们的结果都是一样的,例:
int i=10,j=10;
i++;
++j;
他们的结果都是11。
但一旦参与到操作当中时,我们就需要做出区分,一个是++i(前++),一个是i++(后++)
这里的前后,是在什么之前,什么之后呢?
是指,在从变量中将数据取出放在操作数栈中之前还是取出放在操作数栈中之后,进行自增自减操作。
操作数栈我们可以先把它理解为在Java程序运行时系统为了方便运算所创立的临时空间,有点像我们生活中的草稿纸,Java不会直接在式子中运算,而是把数据拿到操作数栈里进行运算,在算完之后再把结果返还回去,例:
int i = 10 ;
//情况一
int j = i++ ; //结果为:i=11 , j=10
//情况二
int j = ++i ; //结果为:i=11 , j=11
-
起初,i变量中存储的是都是10
-
在情况一中,i++ 因为是后++,所以会先从i变量中将10取出, 放入操作数栈,然后,再对i变量中的值进行自增1,变成11,但只有操作数栈中的10才能直接参与赋值运算,11在操作数栈之外,因此j的值为10而不是11。
-
而在情况二中,是前++,所以我们在进入操作数栈之前就进行了加操作,然后再进行赋值操作,因此i和j的值都为11。
再来看这个例子:
int i;
i = i++;
我们觉得i的值是几呢?10还是11?
答案是10,为什么呢?
原理和上面一样,i的值先进入操作数栈,现在操作数栈里存的是10,然后再进行自增,i变成11,但没办法,11没在操作数栈中,因此没法进行赋值运算,所以操作数栈中的10进行了赋值操作,相当于i=10;,因此i的结果为10;
3)未完待续
总结
今天我们主要了解到了以下几点:
1.赋值运算符:对变量进行赋值操作的运算符
2.自增自减运算符:对变量进行自增自减操作的运算符
今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~