JAVA是建立在C++的基础之上的,所以大多数运算符都和C、C++相同,在此基础上,做出了自己的一些改进和简化。
java包括如下运算符:
算术运算符: +(正号、加),-(负号,减),*(乘),/(除),%(取模,其运算结果的正负号,仅取决于被模数的正负号),++(自增,包括前(先运算后取值)、后(先取值后运算)),--(自减,包括前(先运算后取值)、后(先取值后运算))
关系运算符: >,<,>=,<=,==,!=(运算结果是一个布尔值)
布尔逻辑运算符: !(NOT(逻辑非)) &(AND(逻辑与)) | (OR(逻辑或)) ^(XOR(逻辑异或)) &&(AND(短路与)) ||(OR(短路或))
位运算符: &(按位与,符号两边都为1,结果才是1) |(按位或,符号两边都为0,结果才是0) ^(按位异或,符号两边都是0或都是1,结果为0,否则为1) ~(按位非,即按位取反) <<(左移,被移除的高位丢弃,低位补0) >>(右移,被移出的低位丢弃,并用0或1补充左边的高位(被操作数是正数时全部用0补充,负数时全部用1补充)) >>>(无符号右移,被操作数无论是正数还是负数,高位全部用0补充)
位运算符用来操作整数基本数据类型中的单个"比特"(bit),即二进制位。
下面例子说明移位运算符的特性:
注意:
(1)<< ,该操作符的左移操作也是无符号的!即,如果为负数,则左移操作时,符号位也将丢弃,操作结束后,可能得到一个正数。下面举2个极端的例子:
a) System.out.println(-2147483647<<1); //该数值为int型能表示的最小值+1:输出正数2
b) System.out.println(2147483647<<1); //该数值为int型能表示的最大值,输出负数-2
(2)~ ,该操作符也是无符号的,针对一个数的取反操作,是将其每一位取反,包括符号位。它容易和一个数的反码搞混,一个数的反码,正数是本身,负数,是将其除了符号位外的每一位取反而得到的,是有符号的。
赋值运算符: =
扩展赋值运算符: +=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=
字符串连接运算符: +
三元运算符(又称条件运算符): ?:
(条件表达式)?表达式1:表达式2;如果条件为true,运算后的结果是表达式1;如果条件为false,运算后的结果是表达式2.
其他运算符:括号:() 优先级最高,可改变表达式运算顺序。
方括号:[] 数组运算符。
对象运算符:instanceof :用来判断一个对象是否属于某一个指定类或其子类的实例,如果是则返回true,否则返回false。注意只能判断对象,无法判断基本数据类型,比如:new Integer(123) instanceof Integer合法;123 instanceof int非法。
new 运算符:用于创建对象。