运算符

算术运算符:+,-,*,/,%,++(单目),--(单目)

[%] 除法后取余数运算,也叫 模 运算符

[/] 一点要注意作用范围,int 类 要得到小数一定要强转,或改定义为浮点数,不然结果一定是有问题的

[结果数据类型] 有 Long 的默认为Long,替他的整数都默认结果为int 型

[++,--] 自加,自减,a++ —> a = a+1 (同理a--)

[++,--] 可以通过加号的位置来给他等效理解一下:b=a++,可以理解为 先执行b=a, 后执行 a=a+1; 同理b=++a,可以理解为 先执行a=a+1,后执行b=a

[+] 可用作字符串连接符:如果 + 的操作数中有一个为 String类型,则他会把 其他类型的操作数 全部 转化为 String类型,再把他们连接起来

//对应面试题

int a=10,b=20;

System.out.println(""+a+b);

System.out.println(a+b+"");

//这两个输出的结果有什么区别?

//1020 ( + 号从左往右进行,先执行转换String后连接)

//30 ( +号同样从左往右进行,同时先进行数字加和,再转成String类型)

赋值运算符:=

[=] 把右边的值赋给左边关系运算符:<,>,>=,<=,==,!=instanceof(均二元)

[==] Java 中用 == 表示两个值相等

[关系运算符的结果] 一定是一个布尔值

逻辑运算符:&&,||,!(均二元)

[与,或,非] and(∩),or(∪),取反

[&&] 在判断两个变量是否都为对的过程中,如发现一个 false 便会终止运算,例如:a&&b,若a为 False,则不会判断 b 的正误

可用如下方法验证:

int c=4;

boolean d =(c>5)&&(c++<4);

//(C>5)显然是false,如果还会 继续 往后执行 那么得到的c=5;

//如果 不往后执行 ,那么得到的c = 4;

//结果为 4;位操作符(跟二进制有关的):&,|,^,~,>>,<<,>>> ( 了解即可)

A = 0011 1100;

B = 0000 1101;

|| //就这两位是都为1的,其他都是全0,或01混合

A&B=0000 1100;

//两个相应位置的二进制数进行比较,如果都为1则该位为1,否则为0

A|B =0011 1101;

//对应位全0则结果就是0,只要有一个1就能得1

A^B =0011 0001;

//同位相同为0,不同为1;(totally)同同0

~B =1111 0010;

//取反,让它的0变成1,1变成0

<<;

//操作意义就是:*2 (左乘)

>>;

//操作意义就是:/2

对应面试题:2*8 怎么样运算最快?

答:2* 2* 2 *2

0000 0000 "0"

0000 0001 "1"

0000 0010 "2"

0000 0100 "4"

0000 1000 "8"

0001 0000 "16"

规律为:每把数字1往左移一个位置都要乘以2

[位运算优点] 效率极高,直接接触底层

条件运算符:?,:(先真后假)(三元运算符)(必须掌握)

x ? y : z;

//?为判断左侧 是否为真 是真 则输出右值 否则输出:右侧的值

int score =80;

String type = score<60 ? "不及格" :"及格";(先真后假)

//String 是两个结果“不及格” “及格”的 数据类型

//type 为变量名

//score<60 是一个逻辑运算,结果为 true 或 false

//“不及格” 真结果

//“及格” 假结果扩展赋值运算符:+= ,-=, *=,/=(偷懒用的)

a+=b; //其实就是a = a + b;

//直接理解为 a 成了 a+b 的和,同理可理解 -=,/*=,/=

幂运算

Java是没有 ^ (幂)运算的,即2^3是不能被理解为2的3次方的

[^] 这里的 ^ 是位操作符(同位相同为0,不同为1)

要表示幂运算得通过函数来表达:

数据类型 变量名 =Math.pow(2,3);double pow = Math.pow(2,3);

很多运算,我们会使用一些 工具类 来操作

优先级 (待补充)

用()是最容易看懂的,但是刚开始学不用括号更好理解优先级

最高的是一元运算符(++,--)!
分类: 源码分享 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录