(一)运算符基本概念
运算符是指运算功能的符号。参与运算的数据称为操作数,运算符和操作数按照一定规则组成的式子称为表达式。
根据操作数个数不同,可以将运算符分为三种:①单目运算符 (一元运算符)②双目运算符(二元运算符) ③三目运算符(三元运算符)
学懂运算符:搞懂每一个运算符的优先级和结合性
优先级 ———— 算法(怎么去算) —————— 先算括号,再算乘除再加减
结合性 ———— 读法(怎么去读) —————— 从左到右或从右到左
根据运算符的性质或者用途,可以将Java基本运算符分为以下几类:
根据操作数个数不同,可以将运算符分为三种:①单目运算符 (一元运算符)②双目运算符(二元运算符) ③三目运算符(三元运算符)
根据运算符的性质或者用途,可以将Java基本运算符分为以下几类:
(1)算术运算符:
算术表达式是由算术运算符和操作数组成,用于完成基本的算术运算。算数表达式的操作数包括常量、变量等;
注意:
①在进行取余运算(%)或除运算(/)时,如果操作数数据类型是整数类型,只保留值的整数部分。% 取余正负只和被取余数有关
②单目运算符中自增或自减运算符位于操作数左侧与位于操作数右侧是不同的。其二者的区别为:当自增(++)或自减(--)运算符位于操作数左侧时,则在操作数增1或减1后使用操作数;当自增(++)或自减(--)运算符位于操作数右侧时,则先使用操作数,再使操作数增1或减1。+- /*:注意1/2=0(类型转换,没有0.5的说法),除号/自动取整
(2)关系运算符:
关系表达式是由关系运算符和操作数组成,用来比较两个操作数的大小,比较结果是一个布尔值(True或False)。操作数可以是算数表达式,布尔表达式,整数,浮点数和字符等。关系表达式的运算次序是先分别算出运算符两侧表达式的值,再将两者进行比较。
注意:字符型数据按其在Unicode标准字符集中的位置值进行比较。
(3)逻辑运算符:
逻辑表达式由逻辑运算符和操作数组成。操作数为布尔值或者布尔表达式,运算结果是布尔值。
①计算机中的成立和不成立:非零值表示成立,只有NULL, 0, \0 表示不成立。
bool类型:头文件:stdbool.h; bool类型成立打印1,否则打印0;
注意:
“&&”和“||”运算符又分别称“短路与”和“短路或”。如果“&&(短路与)”左边表达式的值为false,则整个逻辑表达式的值为false,编译器不会执行运算右边的表达式。同理如果“||(短路或)”左边表达式的值为true,则整个逻辑表达式的值为true,编译器不会执行运算右边的表达式。
(4)位运算符:>>,<<,>>>,&,|,^,~
③移位:>> 右移 << 左移 记忆:看箭头方向
④按位取反~:对一个数的二进制按位取反
⑤ 按位异或∧ : 参加运算的两个数,按二进制位进行“异或”运算。
运算规则:参加运算的两个数,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。(同零异一)
⑥按位或 |: 参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。当参与运算的是负数时,参与两个数均以补码出现.(有1则1)
⑦按位与&:参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。(有0则0)
举个例子:
(5)赋值运算符:=,+=,-=,*=,/=,%=等
赋值表达式是由赋值运算符和操作数组成, 赋值运算符用于将其右侧表达式的值赋给左侧变量。在Java中,'='不等于数学中的等号,等号应该是'=='。
在赋值运算符两侧操作数的数据类型不一致时,如果左侧操作数的数据类型优先级高,则右侧操作数的数据类型将默认转换成与左侧操作数的数据类型相同的数据类型。否则将使用强制类型转换。
①左值和右值:按字面意思,通俗地说。以赋值符号 = 为界,= 左边的就是左值,= 右边就是右值。 比如:(1) int b = 3;(2) int a = b;第(2)行代码,a为左值,b为右值。--->百度百科
复合赋值运算符:+=、/=、*=等
例子:int num=8;num+=2;等价于num=num+2=8+2;以此类推
运算符的优先级:
(二)条件与逻辑运算符
①计算机中的成立和不成立:非零值表示成立,只有NULL 0 \0 表示不成立。
bool类型:头文件:stdbool.h; bool类型成立打印1,否则打印0;
②条件运算符:
③逻辑运算符:
特殊运算符
①逗号运算符,:有效值是最右边,执行过程从左往右
②sizeof运算符:作用:统计类型所占用的字节数;工作期:编译期完成。
③三目运算符 表达式1?表达式2:表达式3
用法:先求表达式1的值,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。
可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为条件是否成立,条件成立为结果1,否则为结果2。
注意:在C语言中,结果1 和 结果2的类型必须一致。
④自增/自减 ++ --: 使操作数的值加1(或-1),其操作数必须为可变左值。
前置/后置:前置:先加1,后参与运算 后置 :先参与运算,再加1;