广州百度推广优化排名wordpress文章主题适合seo
java中的运算符
- 1、java中的运算符
 - 1.1 、+ 、-、 * 、/ 、 %
 - 1.2 、+=、-=、 *=、/=、%=
 - 1.3 、++、--【自增\自减运算符】
 - 1.4、`>、 <、 >= 、<= 、== 、!= 、! =`
 - 1.5、&&、||、|、&
 - 1.6、&、|、~、^
 - 1.7、>> 、 <<、>>>位运算
 - 1.8、`?:`三目运算符
 
1、java中的运算符
- 最小单位是int
 
1.1 、+ 、-、 * 、/ 、 %
-  
+运算
- 算数加法 
- 在基本数据类型使用时做加法
 - 运算结果如果赋值给取值范围小于int的数据类型时,注意强转
 
 
int x = 10;char c1 = 'c'+x; //注意此时需要强转,因为此时已经声明变量x为int- 追加连接 
- String + String
 
 
 - 算数加法 
 -  
-运算
 -  
- 算数减法
 
 -  
*运算
- 防止计算过程越界=>及时更换取值范围大的类型 -  
/运算
- 除法运算过程中不要出现0
 
 -  
%【模运算】
- 运算结果的符号取决于参与运算的第一个数字的符号【%运算符左侧的数字】
 
 
	System.out.println(5%2);//1System.out.println(-5%2);//-1System.out.println(5%-2);//1System.out.println(-5%-2);//-1
 
1.2 、+=、-=、 *=、/=、%=
- 这一组运算符保证左侧类型不变 ----- 底层可能隐式强转
 
	short x = 45;x = x + 10;// 报错 int => short// 解决:x = (short)(x+10);short y = 45;y += 10; // 底层隐式强转int x = 45;// 【*】 类似// x = x + 10; x+=10;// x = 10 + x;// 变成x=x+10x+=10;int y = 55;// 【/类似】y = y - 10;y -= 10;/**y = 10-y;不能改写 y-=10;*/
 
1.3 、++、–【自增\自减运算符】
	x++:先取值 再运算++x:先运算 再取值x--:先取值 在运算--x:先运算 再取值
 
1.4、>、 <、 >= 、<= 、== 、!= 、! =
 
- 成立/不成立
 - != 
- 判断左右两侧的数据是否不相等
 
 - = 和 == 有什么区别 
- =:赋值运算符,将符号右侧的内容交给左侧变量保存
 - == :条件判断 判断左右两侧的内容是否一致 
- 在进行基本数据类型的比较时比较的是内容
 - 引用数据类型的比较时比较的是地址
 
 
 - !取反运算符【用在boolean】 
- !true => false
 - !false => true
 
 
1.5、&&、||、|、&
面试题:&&和&的区别
相同点:都是逻辑与
不同点:&&又叫“短路与”,具有短路特性,当&&左侧运行结果为false时,右侧不在执行;&不具备短路特性,当左侧为false时,右侧依然执行
||和|的区别
相同点:都是逻辑或
不同点:||又叫短路或,具有短路特性,当||左侧的结果为true时,右侧不在执行;|不具备短路特性,左侧为true右侧仍然执行
1.6、&、|、~、^
&按位与【逢0取0】9&50000100100000101 &00000000 => 1|按位或【逢1取1】9|50000100100000101 |00001101
~按位取反 【1->0 0->1】~9~0000100111110110
^按位异或【想通为0 不同为1】0000100100000101^00001100 => 12 
- 在某种情况下&可以取代%运算
 
%2 %4 %8 %16 ... %2(n)
&1 &3 &7 &15 ... &2(n)-1
如果(num&num-1) == 0 就表示num是2的n次方
 
- 交换两个变量的内容 
- 开辟第三块空间
 
 
int x = 10;
int y = 1;
int temp = x;
x = y;
y = temp;
 
- 不开辟第三块空间
 
//使用三次异或
int x = 10;
int y = 1;
x = x ^ y;
y = x ^ y;
x = x ^ y;
 
1.7、>> 、 <<、>>>位运算
byte x = 10;
x >> 2
00001010 >> 2
00000010byte y = 7;
y << 2
00000111 << 2
00011100** 效率取代[* /]<< 取代 **2 *4 *8 ... *2(n)<<1 <<2 <<3 .. <n00001010 << 100010100 => 4+16 = 20>> 取代 //2 /4 /8 ... /2(n)>>1 >>2 >>3 ... >>n10/2=500001010 >> 100000101 => 5
 
- 效率取代
 
num%2(n) => num&2(n)-1
num*2(n) => num<<2(n)-1
num/2(n) => num>>2(n)-1
 
1.8、?:三目运算符
 
- boolean?2:3 
- 第一部分肯定为boolean类型
 - 如果第一部分为true执行2
 - 如果第一部分为false执行3
 
 
boolean?2:32/3有数字有char检验数字有没有在char范围内在char范围内 2/3往char类型转不在char分为内 将数字直接理解为int 2/3往int转【char类型变成对应的ASCII】