一、运算符
在java当中,使用运算符+、-、*、/ 表示加减乘除,当参与 / 运算的两个操作数都是整数的时候,表示整数除法;否则表示浮点数。整数的求余操作用 % 表示。
System.out.println(5 / 2); 2
System.out.println(8/0); 的结果是什么? / by zero 错误
System.out.println(浮点数/0);的结果什么? INFINITY
System.out.println(5%2);的结果什么? 1
System.out.println(5.0/2);的结果什么? 2.5
System.out.println(3+9*8.0/2%2); 3.0
System.out.println((3+9)*8.0/2%2); 0.0
二、数值之间的转化
在程序运行的时候,我们经常需要将一种数值类型转化为另一种数值类型。下图给出了数值类型之间的合法转化。
浮点类型不能精确运算,运算要使用BigDecimal类。
三、强制类型转换
在上面我们可以看到,在必要的时候,int类型的值将会自动的转化为double类型。但另一方面,有时候也需要将double转化为int.。在java当中允许这种数值之间的类型转化。当然也会有以一些数据丢失。在这样情况之下,需要通过强制类型转换实现这个操作,强制类型的语法格式是通过()当中给出的想要转化的目标类型。
代码如下(示例):
public static void main(String[] args) {
double dou_num = 10.15;
int numn = (int) dou_num;
}
四、结合赋值和运算符
可以在赋值当中使用二元运算,这是一种很简单的简写形式,例如:
x += 4;
等价于
x = x + 4
一般的,要把运算符放在=号的左边,如 *=或%=
五、自增和自减运算符
public static void main(String[] args) {
int m = 10;
int n = 10;
int a = ++m;
int b = n++;
System.out.println(a);
System.out.println(b);
}
输出:
11
10
++m:先加再赋值,m++;先赋值再加
int arr[] = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = i++;
}
System.out.println(Arrays.toString(arr));
结果是[0, 0, 2, 0, 4]
int arr[] = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = ++i;
}
System.out.println(Arrays.toString(arr));
结果是[1, 0, 3, 0, 5]
六、关系和boolean运算符
①:检测相等性: ==
②:检测不等:!=
③:最后,还有经常使用的<、>(、<=和>=
比较两个基础数据类型,返回值为true或者flase
④:java使用&&表示逻辑”与“运算符,使用||表示”或“运算符,
⑤:三目运算符:condition?expression1:expression2
System.out.println(10<9?1:2);
输出结果会是2
六、位运算
有以下四种位运算符
&(“and”) |(“or”) ~(“not”) ^("xor”)
①:按位与操作&
两个操作数,如果同为1则为1,否则为0
②:按位或操作|
只有两个操作数对应位同为0时,结果为0,其余全为1.
③:~:按位取反
顾名思义:按位取反即可。
④:按位亦或操作
两个操作数对应位,相同则结果为0,不同则结果为1
移位运算
①:左移(<<)
右边空出来的位用0填补高位左移溢出则舍弃该高位
左移几位其实就是这个数 *2 的几次幂
②:右移(>>)
左边空出来的位用0或1填补,正数用0负数用1填补。
右移几位其实就是这个数/2的几次幂
主要是运算速度快,相较于一般的乘除法运算