玖叶教程网

前端编程开发入门

Java运算符(java运算符优先级别)

编者按

何为运算符?加减乘除吗?这些只是Java运算符中的一种,Java提供了丰富了运算符,有数学运算方面,有逻辑关系方面;今天我们就来聊聊Java运算符,小伙伴们,一起来学习吧!

容提要

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

算数运算符

顾名思义,算数运算符表达的是数学中的算数运算;Java中的算数运算符详见表1:

表1 算数运算符

运算符

含义

数学表达公式

+

两数相加

X + Y

-

两数相减

X - Y

*

两数相乘

X * Y

/

两数相除,被除数不能为零

X / Y

%

两数求模,也称为两数取余

X % Y

++

整数自增,也就是将当前整数加1

++X或者X++,相当于X = X + 1

--

整数自减,也就是将当前整数减1

--X或者X--, 相当于X = X - 1

结合算数运算符表,我们敲一段具体的代码:

public class MathOperator{
	public static void main(String[] args){
		int X = 100;
		int Y = 50;
		
		// 算数运算符 + 
		System.out.println("两数求和 X + Y = " + (X + Y));
		
		// 算数运算符 -
		System.out.println("两数相减 X - Y = " + (X - Y));
		
		// 算数运算符 *
		System.out.println("两数相乘 X * Y =" + (X * Y));
		
		// 算数运算符 /
		System.out.println("两数相除 X / Y =" + (X / Y));
		
		// 算数匀速符 ++
		X++;
		System.out.println("整数自增 X++ = " + X);
		
		// 算数运算符 ++
		++Y;
		System.out.println("整数自增 ++Y = " + Y);
		
		// 算数运算符 --
		X--;
		System.out.println("整数自减 X-- = " + X);
		
		// 算数运算符 --
		--Y;
		System.out.println("整数自减 --Y = " + Y);
	}
}

位运算符

介绍位运算之前,我们先介绍一下计算机存储计量一些基本概念:

  • bit,比特,简称b,0或1两种形式
  • Byte,字节,简称B,1B等于8b,计算机存储中基本计量单位
  • Kilotyte,千字节,简称KB,1KB等于1024B
  • Megabyte,兆字节,简称MB,1M等于1024KB
  • Gigabyte,吉子节,简称GB,1GB等于1024MB
  • Trillionbyte,太字节,简称TB,1TB等于1024GB

前期课程已经介绍了Java的内置数据类型,如short类型,bit位数为16位,也就是两字节。例如,short x=1153,其二进制对应为10010000001

位运算符作用于按位计算,JAVA中能够应用位运算符的类型有整数、长整数、短整数、字符类和字节型。JAVA位运算符有七种,详见表2:

表2 位运算符

操作符

含义

&

与操作:相同位均为1,则结果为1;否则,结果为0

|

或操作:相同位均为0,则结果为0;否则,结果为1

^

异或操作:相同位值均相同,则结果为0;否则,结果为1

~

非操作:按位取反,0变为1,1变为0

<<

左移操作符:按位左移指定的位数,高位舍弃,低位补零

>>

右移操作符:按位右移指定位数,其中,正数高位补零,低位舍弃;负数高位补一,低位舍弃

>>>

无符号右移操作符:按位右移指定位数,高位补零,低位舍弃

我们来看一段具体的代码示例:

public class MathBitOperator {
	public static void main(String []args) {
		// x为60的二进制形式0011 1100
		int x = 60;
		// y为13的二进制形式0000 1101
		int y = 13;
		// z为位运算结果
		int z = 0;
		
		// 与运算&,z为12,二进制数0000 1100
		z = x & y;
		System.out.println("与运算:x&y = " + z);
		
		// 或运算|,z为61,二进制数0011 1101
		z = x | y;
		System.out.println("或运算:x|y = " + z);
		
		// 异或操作^,z为49,二进制数0011 0001
		z = x ^ y;
		System.out.println("异或操作:x^y = " + z);
		
		// 非操作~,z为-61,二进制数1100 0011
		z = ~x;
		System.out.println("非操作:~x = " + z);
		
		// 左移操作<<,z为120,0111 1000
		z = x << 1;
		System.out.println("左移操作:x<<1 = " + z);
		
		// 右移操作>>,z为30,0001 1110
		z = x >> 1;
		System.out.println("右移操作:x>>1 = " + z);
		
		// 无符号右移>>>,z为30,0001 1110
		z = x >>> 1;
		System.out.println("无符号右移操作:x>>>1 = " + z);
	}
}

赋值运算符

赋值运算符顾名思义,将数值、字符等赋值给变量,Java支持丰富的赋值运算符,详见表3:

表3 赋值运算符表

操作符

含义

=

简单赋值运算符,符号右边的赋值给符号左边的

+=

加和赋值运算符,符号右边的和符号左边的相加,结果赋值给符号左边的

-=

减和赋值运算符,符号左边的减去符号右边的,结果赋值给符号左边的

*=

乘和赋值运算符,符号右边的和符号左边的相乘,结果赋值符号左边的

/=

除和赋值运算符,符号左边的除以符号右边的,结果赋值给符号左边的

%=

取模和赋值运算符,符号左边的取模符号右边的,结果赋值给符号左边的

<<=

左移赋值运算符,符号左边的按位左移,结果赋值给符号左边的

>>=

右移赋值运算符,符号左边的按位右移,结果赋值给符号左边的

&=

按位与赋值运算符,符号左边的和符号右边的按位与,结果赋值给符号左边的

^=

按位异或赋值运算符,符号左边的和符号右边的按位异或,结果赋值给符号左边的

|=

按位或赋值运算符,符号左边的和符号右边的按位或,结果赋值给符号左边的

我们来看一段具体的代码示例:

public class AssignOperator {
	public static void main(String []args) {
		int x = 10;
		int y = 20;
		int z = 0;
		
		// 简单赋值运算符
		z = x + y;
		System.out.println("简单赋值运算符:z = x + y,z的结果是" + z);
		
		// 加和赋值运算符
		z = 0;
		z += x;
		System.out.println("加和赋值运算符:z += x, z的结果是" + z);
		
		// 减和赋值运算符
		z = 0;
		z -= x;
		System.out.println("减和赋值运算符:z -= x,z的结果是" + z);
		
		// 乘和赋值运算符
		z = 0;
		z *= x;
		System.out.println("乘和赋值运算符:z *= x,z的结果是" + z);
		
		// 除和赋值运算符
		z = 0;
		z /= x;
		System.out.println("除和赋值运算符:z /= x,z的结果是" + z);
		
		// 取模和赋值运算符
		z = 15;
		z %= x;
		System.out.println("取模和赋值运算符:z %= x,z的结果是" + z);
		
		// 左移赋值运算符
		z = 15;
		z <<= 2;
		System.out.println("左移赋值运算符:z <<= 2,z的结果是" + z);
		
		// 右移赋值运算符
		z = 15;
		z >>= 2;
		System.out.println("左移赋值运算符:z >>= 2,z的结果是" + z);		
		
		// 按位与赋值运算符
		z = x & y;
		System.out.println("按位与赋值运算符:z = x & y,z的结果是" + z);		
		
		// 按位异或赋值运算符
		z = x ^ y;
		System.out.println("按位异或赋值运算符:z = x ^ y,z的结果是" + z);
		
		// 按位或赋值运算符
		z = x | y;
		System.out.println("按位异或赋值运算符:z = x | y,z的结果是" + z);		
	}
}

关系运算符

关系运算符表示真或假,Java支持6种关系运算符,详见表4:

表4 关系运算符?

操作符

含义

==

符号两边相等即为真,否则为假

!=

符号两边不相等即为真,否则为假

>

符号左边大于右边即为真,否则为假

<

符号左边小于右边即为真,否则为假

>=

符号左边大于或者等于右边即为真,否则为假

<=

符号左边小于或者等于右边即为真,否则为假

我们来看一段具体的代码示例:

public class RelationOperator {
	public static void main(String []args) {
		int x = 10;
		int y = 20;
		
		System.out.println("变量x = " + x);
		System.out.println("变量y = " + y);
		
		// ==关系运算符
		if (x == y) {
			System.out.println("x == y,结果为真!");
		} else {
			System.out.println("x == y,结果为假");
		}
		
		// !=关系运算符
		if (x != y) {
			System.out.println("x != y,结果为真!");
		} else {
			System.out.println("x != y,结果为假");
		}
		
		// >关系运算符
		if (x > y) {
			System.out.println("x > y,结果为真!");
		} else {
			System.out.println("x > y,结果为假");
		}	
		
		// <关系运算符
		if (x < y) {
			System.out.println("x < y,结果为真!");
		} else {
			System.out.println("x < y,结果为假");
		}
		
	  // >=关系运算符
		if (x >= y)
		{
			System.out.println("x >= y,结果为真!");
		} else {
			System.out.println("x >= y,结果为假");
		}
		
		// <=关系运算符
		if (x <= y) {
			System.out.println("x <= y,结果为真!");
		} else {
			System.out.println("x <= y,结果为假");
		}		
	}
}

逻辑运算符

逻辑运算符用来表示真或者假,Java支持3种逻辑运算符,具体详见表5:

表5 逻辑运算符?

操作符

含义

&&

逻辑与,符号两边操作数都为真,结果真;否则,结果假

||

逻辑或,符号两边操作数任何一个为真,结果真;否则,结果假

!

逻辑非,符号操作数为真,结果为假;符号操作数为假,结果为真

我们来看一段具体的代码示例:

public class LogicOperator {
	public static void main(String []args) {
		boolean x = true;
		boolean y = false;
		
		System.out.println("变量x=" + x);
		System.out.println("变量y=" + y);
		
		// &&逻辑运算符
		if (x && y) {
			System.out.println("x && y,结果为真");
		} else {
			System.out.println("x && y,结果为假");
		}
		
		// ||逻辑运算符
		if (x || y) {
			System.out.println("x || y,结果为真");
		} else {
			System.out.println("x || y,结果为假");
		}
		
		// !逻辑运算符
		if (!x) {
			System.out.println("!x,结果为真");
		} else {
			System.out.println("!x,结果为假");
		}		
	}
}

其他运算符

除了上述运算符之外,Java中还有两个重要的运算符,条件运算符和instanceof运算符。

1、条件运算符

又称为三元运算符或者三元表达式,该表示的语法形式为:

变量 r = 表达式 ?  变量 x : 变量 y;

表达式一般采用逻辑运算、关系运算,运算的结果为真,冒号左边的变量x赋值给变量r;运算结果为假时,冒号右边的变量y复制给变量r。我们看一段具体的代码示例:

public class TernaryExpression {
	public static void main(String []args) {
		int r = 0;
		int x = 10;
		int y = 20;
		
		System.out.println("变量r的初始值是" + r);
		
		// ?: 三元表达式
		r = (x >= y) ? x : y;
		
		System.out.println("三元表达式:r = (x >= y) ? x : y,r的结果是" + r);
	}
}

2、instanceof算符

检查对象是否为特定类型,用于类类型和接口类型,其语法形式为:

变量r = 变量 x instanceof (class or interface) type

语法中的,type只能为class(类)或者interface(接口);x的类型和type类型一致时,运算的结果为真;否则,为假。我们来看一段具体的代码示例:

public class InstanceOfExpression {
	public static void main(String []args) {
		String msg = "Hello world!";
		boolean r = msg instanceof String;
		
		if (r) {
			System.out.println("变量msg类型是String");
		} else {
			System.out.println("变量msg类型不是String");
		}
	}
}

总结

本讲我们介绍了Java语言中各种运算符,其中,逻辑运算符、关系运算符等是重点需要掌握的;后续章节我们将重点介绍关于循环控制等知识,这部分知识依赖于本讲的运算符知识。

话说千遍,不如同学们练习一遍!赶紧操练起来吧,小伙伴们!

往期回顾

  • 第1讲 Java前世今生

https://www.toutiao.com/article/7306394115615294006/?log_from=70c615ccdd79d_1701223389682

  • 第2讲 Java开发环境配置

https://www.toutiao.com/article/7306698955294196287/?log_from=73070f7d6bc4e_1701410469896

  • 第3讲 Java基本数据类型

https://www.toutiao.com/article/7307468491400233508/?log_from=dc37fba24a013_1701659931185

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言