java中的运算符
1、 + - * / %
[+当+遇到String类型的时候 表示追加链接 不在表示算数加法]
[*当心数值超出int类型最大的边界 -》 注意使用long类型]
System.out.println(365L* 24 * 60 * 60 * 1000);
[/整数除以整数 结果一定是整数]
拓展:
5 / 0.0 = Infinity = 无穷大。
0.0 / 0.0 = Nan = not a number = 不是一个数。
* [% 取模运算符求余数最终结果的符号位取决于参与运算的第一个数的符号]
public class ExecOperation4{ public static void main(String[] args){ //浪潮的笔试题 int num = 998; // / % //592的个位数是2 //592的十位数是9 //592的百位数是5
int bai = num / 100;//592 / 100 = 5 System.out.println(bai); int shi = num / 10 % 10; System.out.println(shi); int ge = num % 10; System.out.println(ge); } } |
+=-= *= /= %=...
*[他们能够保证运算符左侧的数据类型不发生改变 -》隐式的强转]
如果左侧的数据类型根右侧的数据类型不一样,则自动强制转换为左侧的数据类型。
++--[自增自减运算符]
[a:取值 b:运算 x++ -> ab ++x -> ba]
注意:x++:x在++ 的前面的时候,先取值,后运算。取值只是针对本语句有效。出了这语句,取值就没有用了。X--一样。++x,--x则是相反。先运算后取值。 |
>< >= <= ! = != ==
!:非 !boolean
!true= false !false = true
!=:判断左右两边的值是否不相等
System.out.println(34!= 34);//false
面试题:=和==之间的区别?
=:赋值运算符 将右侧的值交给左侧的变量进行保管
intx = 55;
==:判断左右两边的值是否相等
System.out.println('a'== 'b'); //false
2、&& || & |[逻辑运算符]
面试题:&&和&之间的区别?
相同点:&&和&都是逻辑的与 相当于汉文中并且的意思
需要前后两个条件都成立才行,
&&的运算效率要比较高一些。
不同点:
1: &&叫做逻辑的短路与 有短路特性
如果通过前面的条件可以得出最终结果的话 后面的条件直接舍弃,不在判断。
2:&可以作为逻辑运算符还可以作为按位运算符 && 只能作为逻辑运算符
例子:今天晚上如果我有空的话 而且你们愿意 我请大家唱歌
if(我有空 && 你们愿意){
我请大家唱歌
}
boolean && boolean
true 判断
false 短路
||和|之间的区别?
相同点:||和|都是逻辑的或 相当于汉文中或者的意思
需要前后只要有一个条件成立就可以
不同点:||叫做逻辑的短路或 有短路特性
如果通过前面的条件可以得出最终结果的话 后面的条件直接
舍弃 不在判断
例子:QQ注册的时候 如果用户名长度>6 或者是密码长度<12位
显示注册失败
if(用户名长度>6 || 密码长度<12){
显示注册失败
}
boolean || boolean
true 短路
false 判断
3、& | ^ ~[按位(二进制)运算符]
&| 可以作为逻辑运算符 可以作为按位运算符 怎么区分?
看运算符两边是什么类型:
如果运算符两边是数字 -》 按位运算符
如果运算符两边是boolean -> 逻辑运算符
基本用法(了解)
&:按位的与 上下都为1的时候才写1。
System.out.println(9& 5);//1
9:8+1=00001001
5:4+1=00000101
00001001
& 00000101
00000001
|:按位的或 上下只要有1就写1
System.out.println(9| 5);//13
00001001
| 00000101
00001101-> 8+4+1=13
^:按位的异或 上下不一样的时候就写1(上下一样,才写0)
System.out.println(9^ 5);//12
00001001
^ 00000101
00001100-> 8 + 4 = 12
~:按位的取反 0-》1 1-》0 ;
bytex = 5;
~x;
5= 4 + 1 = 00000101 -> 11111010