开发工具与关键技术:VS + MVC
作者:李光辉
撰写时间:2019.6.3
日常使用中,我们较为经常使用的有算数运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、移位运算符、三目运算符、运算符的优先级等等这些运算符。在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。
算术运算符:
除(/):
1、参与的数类型都是整型时,做取整运算,即商n余m,结果为n
2、只要有一个浮点数参与,就会做类似精确运算
取余%:取余运算符号,也叫取模运算符号,做除法运算时,商n余m,结果为m,而且被除数必须是整数
1、参与运算都是整数时,余数是精确值
2、有浮点数做除数时,余数不一定是精确值
取余运算一般被用来判断,一个数能否被另一个数整除,被除数为正,取余结果为正
被除数为负,取余结果为负
++、-:自增自减运算符,符号要与变量一起使用,表示变量自动+1 自动-1;
- 与变量在一起,不与其他任何符号连用时(单独使用)
- 自增自减运算符与其他符号连用时,需要考虑表达式的值
符号在前,先运算再赋值,符号再后,先赋值再运算。如:int a = 1; a = ++a;
关系运算符:
用来判断条件是否成立,一般都用在分支结构或循环结构
>, <, >=, <=这几个只能比较基本类型数据之间的关系,不能比较对象之间的关系
== ,!=:若使用该运算符比较两个对象的引用(变量),则实质上是比较两个变量是否引用了相同的对象。所谓相同的对象是指,是否是在堆栈(Heap)中开辟的同一块儿内存单元中存放的对象。
若比较两个对象的引用(变量)所引用的对象的内容是否相同,则应该使用equals()方法,该方法的返回值类型是布尔值。需要注意的是:若用类库中的类创建对象,则对象的引用调用equals()方法比较的是对象的内容;若用自定义的类来创建对象,则对象的引用调用equals()方法比较的是两个引用是否引用了同一个对象,因为第二种情况equals()方法默认的是比较引用。
逻辑运算符:(操作符只能是布尔类型的)
&&(与), ||(或), !(非),当有两个条件以上进行判断是否成立时,需要使用逻辑运算符
&&:用于判断两个条件是否同时成立,全真为真,一假则假。从左向右开始计算,当遇到为假的条件时停止计算,整个表达式为假;所有条件为真时表达式才为真
||:用于判断一则有条件成立,一真即真,全假则假。从左向右开始计算,当遇到为真的条件时停止计算,整个表达式为真;所有条件为假时表达式才为假。
!:用于条件的否定,非真即假,非假即真
逻辑运算符用于对包含关系运算符的表达式进行合并或取非。对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成= =是错误的。
位运算符:(int类型数据)
位运算符就是直接操作二进制位的,这样效率可能会高一些,因为计算机就是通过二进制对数据进行存取的。包括:( &位与符、|位或符 、^位异或符、~位取反符)
位运算符与逻辑运算符的区别:
用于int类型数据时,就是位运算符。用于布尔表达式时就是逻辑运算符。
位运算符将操作数视为位而不是数值。数值可以是任意进制的:十进制、八进制或十六进制。位运算符则将操作数转化为二进制,并相应地返回1或0。位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字
赋值运算符:
赋值运算符是比较简单的运算符 ,直接就是给前面的变量赋值
移位运算符:
1、<<(左移)
规律:一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移 的位数.
2、>>(右移)
规律:一个操作数在做右移运算的时候,实际上就是等于该操作数除以2的n次方,n就是右移的位数。
3、>>>(无符号右移):
无符号右移与右移的区别:进行右移运算的时候,如果操作数是一个正数,那么左边的空缺位使用0补,如果操作数是一个负数,那么左边的空缺位使用1补。而使用无符号右移的时候,不管是正数还是负数都统一使用0补。
运算符优先级:
运算符的优先级确定了表达式中运算符的执行顺序。表达式中有多个运算符时,如何确定哪个运算符先执行?优先级顺序对表达式的结果有很大影响,不同的运算顺序可能得出不同结果甚至出现运算错误。
可重载和不可重载运算符:
注:以上图片部分剪切于W3Cschoool菜鸟教程