【Java入门】运算符


前言

对常量和变量进行操作的符号称为运算符
常用运算符:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 三元运算符

一、算数运算符

在这里插入图片描述
用来四则运算的符号,和小学学习的加减乘除无异,所以就不多说加减乘除的运算。

注意:一定要注意运算符的优先级

自增和自减

自增:++,递增操作符,使变量值增加1,有前置和后置之分,只能操作变量。
自减:-- ,递减操作符,使变量值减去1,有前置和后置之分,只能操作变量。

自增和自减具体操作是一样的,仅仅是一个是加1,一个是减1而已,现在单讲++。
如:
代码 result ++和 ++result,结果都是result变量的值加1。
唯一的区别就是:

  • 前置(++result): 表示对result加1之后的结果进行运算

  • 后置(result++): 表示对result变量加1之前的值(原始值)进行运算。

比较权威的解释:

  • ++a表示取a的地址,增加它的内容,然后把值放在寄存器中;

  • a++表示取a的地址,把它的值装入寄存器,然后增加内存中的a的值;

如果不理解什么是寄存器,简单记住,都可以表示当前变量自身加1,区别是:

  • 前置++:先增加后使用

  • 后置++:先使用后增加

二、赋值运算符

在这里插入图片描述

public class AssigningOperatorDemo {
	public static void main(String[] args) {
		// 把常量17赋值给int类型的变量a
		int a = 17;
		System.out.println("a=" + a);
		// += 把左边和右边的数据进行运算,最后赋值左边变量
		a += 10;// 相当于a = a + 10
		System.out.println("a=" + a);
        
		short s = 5;
		s += 2; //底层相当于 s = (short) (s + 2)
		System.out.println("s=" + s);
	}
}

三、比较运算符

用于比较变量或常量、表达式之间的大小关系,其结果是boolean类型(要么为true,要么为false)。

其操作格式为 :

boolean  result  = 表达式A  比较运算符  表达式B;

在这里插入图片描述
注意:>=符号,表示大于或者等于。

public class ComparisonOperatorDemo {
	public static void main(String[] args) {
		//直接操作常量
		System.out.println(10 > 5);//true
		System.out.println(10 >= 5);//true
		System.out.println(10 >= 10);//true
		System.out.println(10 < 5);//false
		System.out.println(10 <= 5);//false
		System.out.println(10 <= 10);//true
		System.out.println(10 == 10);//true
		System.out.println(10 != 10);//false
		
        //使用变量操作
		int a = 10;
		int b = 5;
		boolean result = a > b;
		System.out.println(result);//true
	}
}

四、三元运算符

三元运算符,表示有三个元素参与的表达式,所以又称为三目运算符,其语义表示if-else(如果什么情况就做什么,否则做什么)。 如果…那么…否则…

语法格式:

数据类型 变量 = boolean表达式 ?  结果A : 结果B;

boolean表达式结果:

  • 为true,则三元运算符的结果是结果A;

  • 为false,则三元运算符的结果是结果B;

  • 三元运算符必须定义变量接受运算的结果,否则报错

  • 三元运算符结果的类型由结果A和结果B来决定的,结果A和结果B的类型是相同的。(因为三云运算的结果需要一个变量来接受,如果两个结果的类型不一样,就没法定义这个变量的类型)

// 判断一个数99是不是偶数
public class TernaryOperatorDemo1{
	public static void main(String[] args) {
		int a = 99;
		String result = a % 2 == 0 ? "偶数" : "奇数";
		System.out.println(result); // 奇数
	}
}
// 求99和20两个数中的最大值
public class TernaryOperatorDemo2{
	public static void main(String[] args) {
		int a = 99;
		int b = 20;
		int result = a > b ? a : b;
		System.out.println("最大值:"+result); // 99
	}
}

五、逻辑运算符

逻辑运算符用于连接两个boolean表达式,结果也是boolean类型的。

语法格式为:

boolean  result = boolean表达式A  逻辑运算符  boolean表达式B;

运算规则如下:
在这里插入图片描述
规律:

  • 非:取反,!true则false,!false则true
  • 与:有false则false
  • 或:有true则true
  • 异或:^ 相同则false,不同则true
& 与运算,可以理解为 "并,并且"
true  & true  => true
true  & false => false
false & true  => false
false & false => false
总结 : & 运算,只要两边的表达式有一个为false,结果就为false

&& 短路与
&& 运算,只要两边的表达式有一个为false,结果就为false,如果第一个表达式为false,后续表达式不再运算;

| 或运算,可以理解为 "或,或者"
true  | true  => true
true  | false => true
false | true  => true
false | false => false
总结 : | 运算,只要两边的表达式有一个为true,结果就为true

|| 短路或
|| 短路或运算,只要两边的表达式有一个为true,结果就为true,如果第一个表达式为true,后续表达式不再运算;

! 非运算,可以理解为 取反
!true = false
!false = true

基本使用

public class LogicalOperatorDemo1 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int c = 30;
		//与操作
		System.out.println((a > b) & (a > c));// false	&	false
		System.out.println((a > b) & (a < c)); // false	&	true
		System.out.println((a < b) & (a > c)); // true	&	false
		System.out.println((a < b) & (a < c)); // true	&	true
        
		//或操作
		System.out.println((a > b) | (a > c));// false	|	false
		System.out.println((a > b) | (a < c)); // false |	true
		System.out.println((a < b) | (a > c)); // true	|	false
		System.out.println((a < b) | (a < c)); // true	|	true
		
        //相反操作
		System.out.println((a > b)); // false
		System.out.println(!(a > b)); // !false
		System.out.println(!!(a > b)); // !!false
	}
}

&和&&的区别(掌握)
& :&左边表达式无论真假,&右边表达式都进行运算;

&& :如果&&左边表达式为真,&&右边表达式参与运算,否则&&右边表达式不参与运算,故称短路与。

| 和 || 的区别同理,||,左边为真,右边不参与运算。

public class Test05LogicOperator2 {
    public static void main(String[] args) {
        // 逻辑运算符
        // 短路运算 && ||
        int m = 10;
        int n = 20;
        // boolean r1 = false && false;
        boolean r1 = (m > n) && (++m > 1);
        System.out.println("r1 = " + r1);
        System.out.println("m = " + m);


        boolean r2 = (m > n) | (m < 1);
        System.out.println("r2 = " + r2);
    }
}

运算优先级

表达式的运算都是有优先级的,基本上和数学中的优先级类似,这里需要注意的是,赋值符号。

注意:赋值符号最后运算的,并且是从右向左运算的。
在这里插入图片描述() 的优先级最高,赋值运算符优先级最低

赋值运算符的运算方向从右向左


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值