02-java
Posted fzl-python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02-java相关的知识,希望对你有一定的参考价值。
java运算符
运算符:
就是对常量和变量进行操作的符号
分类:
算术运算符,赋值运算符,逻辑运算符,位运算符,三目运算符
算术运算符:
+ - * / % ++ --
% 取余运算符
a++ 用了之后在自增
++a 自增之后在使用
+:
1:加法
2:正号
3:字符串连接符
赋值运算符:
基本的赋值运算符:=
拓展的赋值运算符:+= -= *= /= %=
拓展的赋值运算符其实隐含了一个强制类型转换
比较运算符:
== != > >= < <=
特点:
无论操作简单还是复杂,结果是Boolean
逻辑运算符:连接布尔型表达式
&与 |或 ^异或 !非 && ||
^:相同为false 不同为true
false ^ false = false
false ^ true = true
trur ^ true = false
&& 和 & 的区别:
1:最终结果一样
2:&&具有短路效果,左边是false,右边不执行
开发中常用:
&& || !
位运算符:
& | ^ ~
<< >> >>>
注意:要做位运算,首先要把数据转换为二进制
^的特点:
一个数据对另一个数据位异或两次,该数本身不变
a ^ b ^ b = a
a ^ b ^ a = b
用位异或交换两个整数:
左边:a b a
右边: a ^ b
a = a ^ b;
b = a ^ b; //a ^ b ^ b = a
a = a ^ b; // a ^ b ^ a =b
开发中:
c = a;
a = b;
b = c;
用变量相加:
a = a + b;
b = a - b;
a = a - b;
一句话搞定:
b = (a + b) - (a = b);
int a = 3;
int b = 4;
3的二进制:11
32位操作系统:00000000 00000000 00000000 00000011
4的二进制:100
32位操作系统:00000000 00000000 00000000 00000100
&位与运算:有0则0
3 & 4
00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000000
结果是:0
|位或运算:有1则1
3 | 4
00000000 00000000 00000000 00000011
|00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
结果是:7
^位异或运算:相同则0,不同则1
3 ^ 4
00000000 00000000 00000000 00000011
^00000000 00000000 00000000 00000100
00000000 00000000 00000000 00000111
结果是:7
~按位取反运算:0变1, 1变0
~3
00000000 00000000 00000000 00000011
~11111111 11111111 11111111 11111100(补码)
补码:11111111 11111111 11111111 11111100
反码:11111111 11111111 11111111 11111011
原码:10000000 00000000 00000000 00000100
结果是:-4
<< 左移:左边最高位丢弃,右边补齐0
<< 把<<左边的数据*2的移动次幂
System.out.println(3 << 2);//3 * 2^2
3二进制:00000000 00000000 00000000 00000011
(00)000000 00000000 00000000 0000001100
>> 右移: 最高位是0,左边补齐0;最高位是1,左边补齐1。
把>>左边的数据/2的移动次幂
System.out.println(24 >> 2);//24 / 2^2 = 6
>>> 无符号位移:无论最高位是0还是1,左边补齐0。
System.out.println(24 >>> 2);// 6
System.out.println(-24 >> 2);// -6
24的二进制:11000
原码:10000000 00000000 00000000 00011000
反码:11111111 11111111 11111111 11100111
补码:11111111 11111111 11111111 11101000
右移两位左边补1:
1111111111 11111111 11111111 111010(00) 补码
补码:1111111111 11111111 11111111 111010
反码:1111111111 11111111 11111111 111001
原码:1000000000 00000000 00000000 000110
结果:-6
System.out.println(-24 >>> 2);//
24的二进制:11000
原码:10000000 00000000 00000000 00011000
反码:11111111 11111111 11111111 11100111
补码:11111111 11111111 11111111 11101000
无论最高位是0还是1,左边补齐0:
0011111111 11111111 11111111 111010(00)
结果:73741818
最有效率的方式计算2 * 8的结果?
2 << 3
三目运算符:
格式:比较表达式?表达式1:表达式2
true return
false return
以上是关于02-java的主要内容,如果未能解决你的问题,请参考以下文章