Java基础——运算符

时间:2023-02-15 16:49:48


组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符赋值运算符关系运算符逻辑运算符位运算符和其他运算符。


算术

单目:+(取正)-(取负) ++(自增1) - -(自减1) 双目:+ - * / %(取余) 三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。

关系

等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= 。

位与逻辑

运算符 与(&)、非(~)、或(|)、异或(^) &:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:10001001101&1111110010比较结果为:1000000转为十进制: 64所以1010&1101=64; | :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110 ~:0变1,1变0 ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110
逻辑运算符 与(&&)、非(!)、或(||)

赋值

= += -= *= /= %= &= ^= |= <<= >>=

instanceof

运算符双目运算符,左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。

运算符综述

Java 的表达式就是用运算符连接起来的符合Java 规则的式子.运算符的优先级决定了表达式中运算执行的先后顺序.例如,x<y&&!z相当于(x<y)&&(!z),没有必要去记忆运算符号的优先级别,在编写程序时可尽量的使用括号来实现你想要的运算次序,以免产生难以阅读或含糊不清的计算顺序.运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,加减的结合性是从左到右,8-5+3 相当于(8-5)+3.逻辑否运算符 的结合性是右到左, x 相当于!(!x).表3.4是Java所有运算符的优先级和结合性。

位移

<< 带符号左移 >>带符号右移 >>> 无号右移

运算符优先级

优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。

个人的感想:

运算符是编程语言中很关键的,熟悉C++的应该知道,运算符也是一种运算的方法。

>>复杂的运算,要建立在简单运算的基础上,也就是复杂的功能也要建立在简单的功能基础上一样。

>>运算是建立在数据基础上,数据类型的不同,对于运算符的操作也不同,在世界上,算上的主体并不都是简单的整形,从对象角度说,可能是任何东西。

>>不同类型数据对象,无论是简单的数据类型,还是复杂的数据类型,都是一定的运算处理规则,不同的数据类型放在一起运算,是要改变的,改变不了的,就是错误。

>>转型问题,无论是强转,还是弱转,类似于函数的异常处理一样,我就不说了。