【Java数据类型】运算符及其优先级详解

运算符

运算符的核心用途就是执行数学运算。计算出其左右连接的数学数字作为结果返回。

类别:

算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符

算术运算符

  1. + - * / %:其中任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。
  2. +:字符串的连接符。
  3. ++, --:自增,自减
//程序功能:快速理解Java的算术运算符
public class OperatorDemo {
	public static void main(String[] args) {
		// 定义两个变量
		int a = 3;
		int b = 4;

		System.out.println(a++);
		System.out.println(b--); 
		
		System.out.println(a + b);
		System.out.println(a - b);
		System.out.println(a * b);
		System.out.println(a / b); //输出0

		// 整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算
		System.out.println(3 / 4.0);
		System.out.println(3.0 / 4);
	}
}

赋值运算符。

=, +=, -=, *=, /=, %=,

  1. a+=b: 含义是a=a+b;
  2. a-=b: 含义是a=a-b;
  3. a*=b: 含义是a=a*b;
  4. a/=b: 含义是a=a/b;
  5. a%=b: 含义是a=a%b;
//程序功能:字符串的“加法”
public class Main {
	public static void main(String[] args) {
		// 整数加法
		int a = 10;
		int b = 20;
		System.out.println(a + b);
		System.out.println("------------------");

		// 字符参与加法操作
		char c = '0';
		char c2 = 'a';
		System.out.println(c + a); //字符与数字运算,解析为ASCII,输出:75
		System.out.println(a + c2);
		System.out.println("------------------");

		// 字符串参与加法操作
		System.out.println("hello" + a);
		System.out.println("hello" + a + b); // "hello"+10,然后再和b进行拼接
		System.out.println(a + b + "hello");
	}
}

比较运算符

\> < >= <= == !=

该运算符的特点是: 运算完的结果,要么是true,要么是false。

class Main {
	public static void main(String[] args) {
		// 注意:千万不要把==写成=
		int x = 3;
		int y = 4;
		System.out.println(x == y); //输出:false
		System.out.println(x = y);// 把y赋值给x,把x的值输出;输出4
		
		boolean bb = (x == y);  //编译通过
		//boolean cc = (x = y); //编译出错
		int cc = (x = y); //编译通过
	}
}

逻辑运算符

& | ^ ! && ||
特点: 逻辑运算符除了“!”外都是用于连接两个boolean类型表达式。
a) &: 逻辑与,只有两边都为true结果是true。否则就是false。
b) |: 逻辑或,只要两边都为false结果是false,否则就是true 。
c) ^: 逻辑异或,两边结果一样,就为false。两边结果不一样,就为true。

& 和 &&区别:

  • & :无论左边结果是什么,右边都参与运算。
  • &&: 短路与,如果左边为false,那么右边不参与运算。【有假就终止】

| 和|| 区别:

  • |:两边都运算。
  • ||:短路或,如果左边为true,那么右边不参与运算。【有真就终止】
class Main {
	public static void main(String[] args) {
		int x = 10;
		int y = 20;
		System.out.println((x++ > 10) & (y++ > 20)); // false & false
		System.out.println("x:" + x);
		System.out.println("y:" + y);
//		false
//		x:11 
//		y:21
//		两个数都加了1,表明&两边都执行了
	
		x = 10;
		y = 20;
		System.out.println((x++ > 10) && (y++ > 20)); // false && false
		System.out.println("x:" + x);
		System.out.println("y:" + y);
//		false
//		x:11
//		y:20
//		x加了1,y没加1,表明&&的右边没有执行
	}
}

位运算符

功能: 用于操作二进制位的运算符。
& | ^ << >> >>>(无符号右移)

示例:对两个变量的数据进行互换。不需要第三方变量。
    int a  = 3,b = 5; -->b = 3,a = 5;
    a = a + b; a = 8;
    b = a - b; b = 3;
    a = a - b; a = 5;
    a = a ^ b; //
    b = a ^ b; //b = a ^ b ^ b = a
    a = a ^ b; //a = a ^ b ^ a = b;

三目运算符

格式: 关系表达式?表达式1:表达式2

//比较两个整数是否相同
public class OperatorTest {
	public static void main(String[] args) {
		// 定义两个int类型的变量
		int a = 10;
		int b = 20;

		boolean flag = (a == b) ? true : false;
		// boolean flag = (a == b); 简单写法
		System.out.println(flag);
	}
}

//获取三个整数中的最大值
public class OperatorTest2 {
	public static void main(String[] args) {
		// 定义三个int类型的变量
		int a = 10;
		int b = 30;
		int c = 20;

		// 先比较两个整数的大值
		int temp = ((a > b) ? a : b);
		int max = ((temp > c) ? temp : c);
		System.out.println("max:" + max);
	}
}

运算符优先级

由高至底:

  1. 后缀: () [] . (点操作符) 左到右
  2. 一元: + + - !〜 从右到左
  3. 乘性: * /% 左到右
  4. 加性: + - 左到右
  5. 移位: >> >>> << 左到右
  6. 关系: >> = << = 左到右
  7. 相等: == != 左到右
  8. 按位与: 左到右
  9. 按位异或: ^ 左到右
  10. 按位或: | 左到右
  11. 逻辑与: && 左到右
  12. 逻辑或: | 左到右
  13. 条件: ?: 从右到左
  14. 赋值: = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
  15. 逗号: 左到右

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值