java中的运算符简介

一、运算符

运算符的概念:对常量或变量进行操作的符号,通常用于数据的比较或运算。

运算符可以分为:算式运算符赋值运算符比较运算符逻辑运算符位移运算符三元运算符这几类。

二、算术运算符

算术运算符的符号有七种:+, -, *, /, %, ++, -- 如下图所示。

算术运算符的主要难点就是自增(+)和自减(-)的一些判断,下面举几个自增(+)和自减(-)代码案例:

public class test {

 public static void main(String[] args) 
 {
 //算数运算符 + - * / % ++ --
 int a = 5;
 //a ++ = a + 1;
 System.out.println(a++);//这里输出的值是5,a++这里就是先输出a的结果(5),然后结束这条语句后a的值                            //就加了一(6)
 System.out.println(a);//这里输出的值是6,从这条语句就可以看出a的值发生了改变
 System.out.println(++a);//这里输出的值是7,++a就是先让a+1,然后输出结果。
 //a -- = a - 1;
 System.out.println(a--);//这里输出的值是7,a--和a++同理,先输出值,然后执行a = a - 1;(6)
 System.out.println(--a);//这里输出的值是5,--a和++a同理,先赋值然后输出。
 //下面举两个稍微复杂的例子
 int fx = 10;
 fx++;//这里fx是10,结束这条语句后变成了11
 fx = fx++ + ++fx + fx--;//fx++ 这里的值11,后面加1,++fx这里的值为13,fx--这里的值还是13,后面减一
                         //所以原式为fx = 11 + 13 + 11 = 35
 int fo = 10;
 fo = ++fo + fo++ - fo++ + --fo;//这里就是 11 + 11 - 12 + 12 = 22
 fo--;//21
 System.out.println(fo);//最后输出的结果为21

总结:无论是++还是-- 如果符号放在变量前面,表示的就是先运算得结果后执行,如果放在变量后面,先执行后运算结果。

三、赋值运算符

不啰嗦,直接看图。

int bx = 10;
bx += 5;//这0里的值为15
bx *= 3;//这里的值为45
bx--;//这里的值为44
System.out.println(bx);

下面给一个面试题:

short s = 5; s = s + 1; //代码是否有错? 
short s = 5; s += 1; //代码是否有错?

第一问答:第一个是错误的,因为s = s + 1; 前面的s属于short类型(小类型),后面s + 1经过运算实际已经变成了int类型(大类型),所以这里是一个典型的大类型转换为小类型没有进行强制转换的错误,解决方法:s =(short)(s + 1) 这里加个强制转换即可。

第二问答:这里可能就有人问s += 1不也相当于s = s + 1嘛,那么第二个是不是也是错误的呢?

如果你也这样想,那么恭喜你距离一名合格的java工程师又远了一步。因为这里是正确的,虽然这里拆解出来确实相等,但是在jvm中,会默认+=类型可以在虚拟机中运行并且能够自己转换,相当于额外的功能。可以避免类型转换问题。

四、比较运算符

比较运算符的概述:用于比较是否相等和大小关系的符号,计算结果为boolean。常见符号如图所示

下面的案例可以看出比较运算符的具体作用。

 public class test {
 public static void main(String[] args) {
 
 // == != > < >= <=
 
 int a = 3;
 int b = 5;

 System.out.println(a == b); //false
 System.out.println(a != b); //true
 System.out.println(a > b); // F
 System.out.println(a < b); // T
 System.out.println(a >= b); // F
 System.out.println(a <= b); // T
 }
 }

五、逻辑运算符

直接如图所示

下面的案例可以看出逻辑运算符的具体作用。

/**
 * 逻辑运算符
 */
 public class D0505 {
 public static void main(String[] args) 
 {
 int a = 5;
 int b = 3;
 int c = 20;
 // &逻辑与 | 逻辑或 !非 ^异或 (&&短路与 ||短路或)
 
 //& 并且 表达式左右结果都为真,结果为真。
 System.out.println(true & true); //true
 System.out.println(false & true); //false
 System.out.println(true & false); //false
 System.out.println(false & false); //false

 System.out.println(a > b & b < c); //true
 System.out.println(a == b & b < c); //false
 System.out.println(a > b & b == c); //false

 //口诀: & 全真为真,一假则假。
 System.out.println("================================");

 // | 或者 表达式左右只要有一个结果是真的,结果为真
 System.out.println(true | true); // true
 System.out.println(false | true); // true
 System.out.println(true | false); // true
 System.out.println(false | false); //false

 System.out.println(a >= b | b <= c); //true
 System.out.println(a <= b | b <= c); //true
 System.out.println(a >= b | b >= c); //true
 System.out.println(a <= b | b >= c); //false

 //口诀:| 一真为真,全假则假。

 System.out.println("================================");

 //! 非 取反 注意事项:只能给boolean类型数据取反 
 System.out.println(!true);
 System.out.println(!false);

 System.out.println(!(a >= b));
 System.out.println(!(a <= b | b >= c));

 // 口诀:逻辑取反
 System.out.println("================================");

 // ^ 异或 表达式左右结果不同返回真,如果相同返回假(异类,认为不同的结果为真)
 System.out.println(true ^ true);
 System.out.println(false ^ false);

 
 System.out.println(true ^ false);
 System.out.println(false ^ true);
 //口诀:^相同为假 不同为真。


 //&& 短路与 || 短路或
 //说明:&& 和 & 运算结果是一样的, ||和|运算结果也是一样的。

 //& 问题:当表达式左边已经是假的情况,表达式右边无论真假结果都已经是假
 //所以第二个条件没必要判断的,但是逻辑与不关心这个代码优化问题。
 System.out.println(false & true); //false
 System.out.println(false & false); //false

 //| 问题:当表达式左边已经得到真的结果,表达右边无论是真假结果都已经为真
 //所以第二个条件没有必要再判断,但是逻辑或不关心这个代码优化问题。
 System.out.println(true | true); // true
 System.out.println(true | false); // true


 //最优的使用方式
 System.out.println(a > b && a > c);
 System.out.println(a > b || a > c);

 
 }
 }

口诀:

& 全真为真 一假为假

| 一真为真 全假为假

! 结果取反! 结果取反

^ 相同为假, 不同为真

六、三元运算符

概述:三元运算符又称三目运算符,同事可以操作三个数据或者表达式的运算符

格式:表达式?值:值,三元运算符可以看做if判断语句的简单版。

 public class test
 {
 public static void main(String[] args) 
 {

 double score = 100;
 //判断 -- 如果大于等于60 奖励一辆兰博基尼 如果小于60 男女混合双打
 if(score >= 60){
 System.out.println("奖励一辆兰博基尼");
 }
 if(score < 60) {
 System.out.println("奖励男女混合双打");
 }
 
 //三元运算 三目
 System.out.println( score >= 60 ? "奖励一辆兰博基尼":"奖励男女混合双打");
 //三元写法: 布尔表达式 ? 值1 : 值2
 //口诀:左真右假(如果表达式返回真,取左值,如果表达式返回假,取右值) 条件成立执行左边
 

 int i = 1; //正常 0 1
 //案例:将int类型的0和1,转化成boolean类型值并输出 如果值为0 打印 false 1 打印
 System.out.println(i == 0 ? false : true);
 System.out.println(i == 1 ? true : false);
 //案例:将int类型的0和1,如果是0 输出 今天考试0分。如果是1 今天考试100分
 System.out.println(i == 0 ? "今天考试0分" : "今天考试100分");
 }
 }

如果觉得我的文章对您有帮助的话,请点赞收藏加关注,后续我会继续在别的文章中提到关于JAVA的一些问题,和我的学习心得,感谢您的阅读。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值