Skip to content

运算符

Java运算符:Java语言中的表达式是由运算符与操作数组合而成的,所谓的运算符就是用来做运算的符号。         在Java中的运算符,基本上可分为算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、转型运算符等。

算术运算符:

所谓算术运算符,也就是我们数学中学到的加、减、乘、除等运算。这些操作可以对几个不同类型的数字进行混合运算,为了保证操作的精度,系统在运算的过程中会做相应的转换。

数字精度

所谓数字精度,也就是系统在做数字之间的算术运算时,为了尽最大可能地保持计算机的准确性,而自动进行相应的转换,将不同的数据类型转变为精度最高的数据类型。

规则如下:      1. 当使用运算符把两个操作数结合到一起时,在进行运算前两个操作数会转化成相同的类型。            2. 两个操作数中有一个是double类型的,则另一个将转换成double型。      3. 两个操作数中有一个是float类型的,则另一个将也转换成float型。      4. 两个操作数中有一个是long类型的,则另一个将也转换成long型。        5. 任何其它类型的操作,两个操作数都要转换成int类型

整数型运算

是指对于int型的相关操作,加、减、乘的结果都是非常容易理解的。           包括:+、-、*、/、%、++、--,其中:

  • +
    • 表示一个正数 ,这时候+可以省略不写
    • 表示连接符  主要用于和字符串拼接使用
    • 主要表示两个数或者多个数字进行相加运算 求和
  • -
    • 表示一个负数
    • 表示算术运算符中求差运算
  • /
    • 两个整数相除的结果是整数,这一点与数学中是不同的,在Java中,两个整数相除的结果类似于数学中的求模运算。整除的余数是用%表示,例如15 / 2 = 7,而不是7.5,15 % 2 = 1。
  • %
    • 求余数 求模
    • 在java中进行求余数的时候结果的正负取决于被除数和除数无关 代码验证:
java
/*两个整数相除及求余数*/
public class Divide
	public static void main(String[] args) {    
	   int a = 15;   
	   int b = 2;     
	   double c = 2;     

	   System.out.println(a + "/" + b + "=" + (a / b));         
	   System.out.println(a + "%"+ b + "=" + (a % b));         
	   System.out.println(a + "/" + c + "=" + (a / c));         
	   System.out.println(a + "%" + c + "=" + (a % c));

       }

  }

//输出结果:                 
//15 / 2 = 7                  
//15 % 2 = 1                 
//15 / 2.0  =  7.5        
//15 % 2.0 = 1.0
  • ++、--   单目运算符,只有一个操作数
    • ++:相当于每次加上1
    • ++在前:先计算 后使用
    • ++在后:先使用后计算,下次使用发生变化
    • ---:相当于每次操作数减去1,类似++

自增和自减运算符

在循环与控制中,我们经常会用到类似于计数器的运算,它们的特征是每次的操作都是加1或减1。在Java中提供了自增、自减运算符,X++使变量X的当前值每次增加1,而X--是自减运算符,每次操作使当前X的值减1。

程序示例:

java
`/*测试自增、自减操作*/`

public class SelfAction {

	public static void main(String[] args)    {      

		int x = 10;      
		int a = x+ x++;
		System.out.println("a =" + a);    
		System.out.println("x =" + x);   
		 
		int b = x + ++x;
		System.out.println("b =" + b);    
		System.out.println("x =" + x);     

		int c = x + x--;
		System.out.println("c =" + c);
		System.out.println("x =" + x);
		
		int d = x + --x;     
		System.out.println("d =" + d);    
		System.out.println("x =" + x);

	}
}  

//输出结果:                 
a = 20                 
x = 11                 
b = 23                 
x = 12                 
c = 24                 
x = 11                 
d = 21                 
x = 10

赋值运算符:

=、+=、-+、*=、/=、%=

  • =:赋值
  • +=:运算的时候赋值 a+=b 等同于 a=a+b
  • -=:a-=b 等同于a=a-b

关系运算符(比较运算符)

Java具有完美的关系运算符。这些关系运算符基本上同数学中的关系运算符是一致的。>大于、<小于、>=大于等于、<=小于等于、==等于、!=不等于。

主要用在判断语句中,结果只能为boolean类型,值 只能为true或者false

  • ===
    • =:赋值运算符 值信息
    • ==:比较运算符  boolean
  • !=:不等于

程序示例:

java
`/*关系运算符测试*/`

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

		boolean x, y, z;     
		int a = 15;      
		int b = 2;     
		double c =15;      
		x = a > b;  //true;     
		y = a < b;  //false;    
		z = a != b;  //true;  
		
		System.out.println("x =" + x);    
		System.out.println("y =" + y);      
		System.out.println("z =" + z);

	}

}

//输出结果:                 
//x = true                 
//y = false                  
//z =true

逻辑运算符

在Java语言中有三种逻辑运算符,它们是NOT(非,以符号“!”表示)、AND(与,以符号“&&”表示、)OR(或,以符号“||”表示)。 运算结果为boolean类型。

NOT运算符

NOT运算符是用来表示相反的意思,NOT逻辑关系值表

A!A
truefalse
falsetrue

AND运算符

AND运算符表示“与”的意思,也就是和的意思,AND逻辑关系值表

ABA&&B
falsefalsefalse
truefalsefalse
falsetruefalse
truetruetrue

OR运算符

OR运算符是用来表示“或”就像我们日常生活中理解的一样,两者只要有一个为“真”,结果就为“真”。

ABA|B
falsefalsefalse
truefalsetrue
falsetruetrue
truetruetrue
java
/*逻辑运算符测试*/
public class LogicSign {
	public static void main(String[] args) {    
		boolean x, y, z, a, b;      
		a = 'a' > 'b';      
		b = 'R' != 'r';    
		x = !a;      
		y = a && b;      
		z = a || b;      

		System.out.println("x =" + x);
		System.out.println("y =" + y);     
		System.out.println("z =" + z);    
	} 
}

//输出结果:                 
x = true                 
y = false                  
z = true

“短路”现象

在运用逻辑运算符进行相关的操作时,我们会遇到一种很有趣的现象;短路现象。

对于true && false根据我们的讲述,处理的结果已经是false了,也就是说无论后面是结果是“真”还是“假”,整个语句的结果肯定是false了,所以系统就认为已经没有必要再进行比较下去了。也就不会再执行了,这种理象就是我们所说的短路现象。

位运算符

所有的数据、信息在计算机中都是以二进制形式存在的。我们可以对整数的二进制位进行相关的操作。这就是按位运算符,它主要包括:位的“与”、位的“或”、位的“非”、位的“异或”。

位的“与”,用符号“&”表示,它属于二元运算符。 与位运算值表:

ABA&B
111
100
010
000

位的“或”用符号“|”表示,它属于二元运算符。或位运算值表:

ABA|B
111
011
101
000

位的“非”,用符号“~”表示,它是一元运算符,只对单个自变量起作用。它的作用是使二进制按位“取反”。 非位运算值表:

A~A
10
01

位的“异或”,用符号“^”表示,它属于二元运算符。异或位运算值表:

ABA^B
110
011
101
000

代码示例:

java
/*测试位的四种运算*/
public class BitOperation {
 public static void main(String[] args) {
	int a = 15;
	int b = 2;
	int x = a & b;
	int y = a | b;
	int z = a ^ b;
	
	System.out.println(a + "&" + b + "=" + x);
	System.out.println(a + "|" + b + "=" + y);
	System.out.println(a + "^" + b + "=" + z);
 }

}

//输出结果:

15 & 2 = 2
15 | 2 = 15
15 ^ 2 = 13

移位运算符

主要用在二进制运算上

<<>>>>>

  • <<: 左移  左移1位相当于乘以2  左移n位 相当于 乘以2的n次方
  • >>: 右移 右移一位相当于除以2  右移n位相当于除以2的n次方
  • >>>:无符号右移
    • 当时正数的时候结果一样
    • 当是负数的时候,符号位统一补0

三元运算符

格式: 表达式1? 表达式2 : 表达式3

解析:

  • 表达式1:代表的是一个boolean类型的值或者表达式
  • 表达式2:表达式1为true显示的结果信息
  • 表达式3:表达式1位false时候显示的结果信息
java
boolean b1 = true;
boolean b2 = false;
int i = b1 = false ? 1 : 2;   
//解析:先判断b1是否等于false,如果等于i取1,否则取2。

注意点: 三元表达式可以嵌套使用 缺点:嵌套结构复杂,不建议使用

在所有运算符中,括号的优先级最高