一、java中的运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
分为以下几种运算符:
算数运算符
赋值运算符
比较运算符(关系运算符)
逻辑运算符
位运算符
三元运算符
二、算数运算符
2.1 算数运算符有哪些
2.2 算数运算符注意的地方
1、如果对负数取模,可以把模数负号忽略不计,如 5 % -2 = 1。但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
2、对于除号 “/”,它的整数除与小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
三、赋值运算符
符号:=
1、当 “=” 两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
2、支持连续赋值
3、扩展赋值运算符:+=、-=、*=、/=、%=
四、比较运算符
五、逻辑运算符
5.1 逻辑运算符有哪些
5.2 逻辑运算符注意事项
1、逻辑运算符用于连接布尔型表达式,在 java 中不可以写成 1< x< 2,应该写出 x > 1 & x < 2。
2、"&" 和 “&&” 的区别
“&” :左边无论真假,右边都进行运算。
“&&”:如果左边为真,右边参与运算,如果左边为假,那么右边不参加运算。
3、"|" 和 “||” 的区别同理,"||" 表示:当左边为真,右边不参与运算
4、异或(^) 与 或(|) 的不同之处是:当左右都为 true 时,结果为false。
六、位运算符
七、三元运算符
八、运算符的优先级
九、运算符的一些题
题1:
short s = 3;
s = s + 2; (1)
s += 2; (2)
问:(1) 和 (2)有什么区别?
答:(1) 不会通过编译,但是 (2) 可以。(1)中当 short 类型运算时会自动转换为 int,int 转为 short 要强制转变,所以编译不通过。(2) 中运算符 += 自动强转,相当于: s = short(s + 2)。
题2:
int i = 1;
i *= 0.1;
System.out.println(i);
问:打印出来的值是什么?
答:结果为0,和上题思路一样,i *= 0.1 相当于是 i = int(i * 0.1),故结果为0。
题3:
int m = 2;
int n = 3;
n *= m++;
System.out.println(“m=” + m);
System.out.println(“n=” + n);
///
int m = 2;
int n = 3;
n *= ++m;
System.out.println(“m=” + m);
System.out.println(“n=” + n);
问:上面两段代码各自打印出来的值是什么?
答:第一段代码 m 的值为3,n 的值为6。第二段代码 m 的值为3,n 的值为9。这里主要注意自加符号,如果为 ++m 那就先自加再运算赋值,如果为 m++ 那就先运算赋值再自加。
题4:
int n = 10;
n += (n++) + (++n);
System.out.println(n);
问:n的值为多少?
答:n 的值为32,上述式子可以化为:n = n + (n++) + (++n),这里和上面一样,n++ 那就先参与运算,再加1,++n 就是先自加再参与运算。