加号(+):在操作数值、字符、字符串时其结果各有不同;
除号(/):整数在使用除号操作时,得到的结果仍为整数,小数部分会被直接忽略,而不是四舍五入,但是当整数除以0的时候,会引发算术异常(ArithmeticException)。
Exception in thread "main" java.lang.ArithmeticException: / by zero
需要注意的是:正负无穷大和NaN都属于double浮点类型,并且所有的正无穷大都是相等的,所有的负无穷大也是相等的,但是NaN永远不相等,也不等于自己。
取模(求余数:%):模数的符号忽略不计,结果的正负取决于被取模的数。
++ 和 -- :表示所操作的变量自增1和自减1,都只能操作变量,不能操作常量;
自增和自减具体操作是一样的,增量和减量都是1;比如:代码 result ++和 ++result,都是将result变量的值在原始值的基础上增加1,然后赋值给result;代码 result --和 --result,都是将result变量的值在原始值的基础上减去1,然后赋值给result。唯一的区别是:
无论是前置还是后置,最后都会对result增加1;如果仅仅执行简单的递增操作(只写result++或++result)比如单行操作,那么选用任意一个都可以,比如下边这样的:
代码块
result++;
代码块
注意:Java支持同时给多个变量赋值,好比支持同时声明多个变量一样,但因影响代码可读性,故也不推荐。
加等于:如:x += 5; 相当于 x = x + 5,但还包括隐式类型转换。
public static void main(String[] args){
int a, b, c; // 不推荐
a = b = c = 5; // 不推荐
short s = 5;
// s = s + 3; // 编译出错,需要强转 s = (short)(s + 3);
s += 3; // 编译OK,隐式类型转换
}
用于比较两个变量或常量之间的关系,其结果是boolean类型,其操作格式为:
boolean result = 表达式A 比较运算符 表达式B;
==:等于,若比较的两个变量都是数值类型,即使类型不同,只要值相同就OK,就会返回true。另外,== 也可以比较引用数据类型,表示的是操作符两边的对象是否是同一对象,比较的是JVM中的内存地址;
instanceof:用于判断右边的对象是否是左边类型的实例;
三元运算符,表示有三个元素参与的表达式,所以又称为三目运算符,其语义表示if-else,语法格式如下:
X ? Y :Z;
其中X为boolean类型表达式,先计算X的值,若X结果为true,则返回Y,整个三目运算表达式的结果是Y,否则就是Z。三目运算符结果的类型由Y和Z决定。
可以通过以下的实例验证:
1. 两个数求最大值/最小值;
int a = 13;int b = 14;int maxValue = (a > b) ? a : b ;
2. 判断一个数的是奇数还是偶数;
int i = 13;
String result = (i % 2) == 0 ? "偶数" : "奇数" ;
用于操作两个boolean类型的变量或常量,结果类型也是boolean。语法格式为:
boolean result = 表达式A 逻辑运算符 表达式B;
位操作是程序设计中按位对二进制数数据的一元和二元操作。详情如下:
<<:将操作数的二进制码整体左移指定位数,左移之后的空使用“0”来补充。
>>:将操作数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充:
>>>:将操作数的二进制码整体右移指定位数,右移之后的空位使用“0”来补充。
若要交换两个变量的值,如int a = 3,int b = 5,交换后a 等于5,b等于3,我们可以定义第三方的变量来完成。现在要求使用最快的方式完成,怎么做?
在程序设计中有众多运算符,运算符之间的操作会有先后之分,也称优先级,详情如下:
表中的优先级1 -- 14,优先级依次从高到低,同一级按表中从右到左,或者从左到右的顺序执行。
JAVA 中算术运算符使用注意:
完结。老夫虽不正经,但老夫一身的才华