Java运算符

一、基本运算符

在之前使用过这样的语法:

int num = 10;

此类的方式称为赋值运算符,“=”是实现赋值运算使用的。

那么进行数学计算时所使用的四则运算也属于运算符的定义范畴。

运算符的优先级

优先级

运算符

综合性

1

()

括号

由左至右

1

[ ]

方括号

由左至右

2

! 、+(正) 、-(负)

一元

由右至左

2

-

位逻辑

由右至左

2

++、--

递增、递减

由右至左

3

*、/、%

算术

由左至右

4

+、-

算术

由左至右

5

<<、>>

位左移、右移

由左至右

6

>、>=、<、<=

关系

由左至右

7

==、!=

关系

由左至右

8

&(AND)

位逻辑

由左至右

9

^(XOR)

位逻辑

由左至右

10

|(OR)

位逻辑

由左至右

11

&&

逻辑

由左至右

12

||

逻辑

由左至右

13

?

三目

由右至左

14

=

赋值

由右至左

但是对于所有的运算符,千万要记住,不要编写过于复杂的操作。

范例:观察一种神奇的代码

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		int numB = 20;
		int result = numA + numB - --numB + numA;
		System.out.println(result);
	}
}

编写代码应使用简单的代码,如果真的是复杂的代码,建议使用“()”改变优先级。

在开发之中常用的运算符:四则运算、逻辑运算、三目运算、位运算。

对于四则运算基本的组成:+、-、*、/、%

范例:四则运算

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		int numB = 20;
		System.out.println("加法计算:" + (numA + numB));
		System.out.println("减法计算:" + (numA - numB));
		System.out.println("乘法计算:" + (numA * numB));
		System.out.println("除法计算:" + (numA / (double) numB));
	}
}

范例:求模计算

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		int numB = 3;
		System.out.println(numA % numB);
	}
}

可利用求模运算判断数字的奇偶性。

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		int numB = 3;
		System.out.println(numA % 2);
		System.out.println(numB % 2);
	}
}

运算符中又提供了一些简化运算符:*=、/=、+=、-=、%=。

public class TestDemo {
	public static void main(String args[]) {
		int num = 10;
		num *= 2;// 等价:num = num*2;
		System.out.println(num);
	}
}

自增运算符“++”,自减运算符“--”:根据位置不同,执行的顺序也不同。

  • ++变量、--变量:先改变,后计算;
  • 变量++、变量--:先计算,后改变。

范例:观察自增(写在前面)

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		int numB = 20;
		int result = ++numA + numB;
		System.out.println("numA=" + numA);
		System.out.println("result=" + result);
	}
}

numA=11
result=31

范例:观察自增(写在后面)

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		int numB = 20;
		int result = numA++ + numB;
		System.out.println("numA=" + numA);
		System.out.println("result=" + result);
	}
}

numA=11
result=30

建议只操作其实现自增或自减的操作,可以有效的避免计算的复杂度。

以后如果使用此类操作,往往也只会使用“numA++”。

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		numA++;
		System.out.println("numA=" + numA);
	}
}

二、三目运算符

三目是一种赋值运算的形式,执行三目的时候可以以一个布尔表达式的结果进行赋值,基本的语法结构如下:

数据类型 变量 = 布尔表达式 ? 满足此表达式时设置的内容 : 不满足此表达式时设置的内容

范例:实现赋值

public class TestDemo {
	public static void main(String args[]) {
		int numA = 10;
		int numB = 20;
		int max = numA > numB ? numA : numB;
		System.out.println(max);
	}
}

利用三目可以节约一些判断代码。


三、逻辑运算符

对于逻辑运算主要就是:与(&、&&)、或(|、||)、非(!)三种计算。

范例:非就是针对一个布尔结果进行求反

public class TestDemo {
	public static void main(String args[]) {
		boolean flag = true;
		System.out.println(!flag);
	}
}

如果现在是多个布尔表达式要想进行连接,只能使用与和或两个操作。

1、与操作:

当多个条件进行连接的使用,那么只有这多个条件都满足了, 最终结果才是true。

范例:观察普通与(&)

public class TestDemo {
	public static void main(String args[]) {
		if ((2 == 1) & (10 / 1 == 0)) {
			System.out.println("Hello World!");
		}
	}
}

第一个执行完之后结果是false,后面的判断代码依旧会执行。

范例:使用短路与(&&)

public class TestDemo {
	public static void main(String args[]) {
		if ((2 == 1) && (10 / 0 == 0)) {
			System.out.println("Hello World!");
		}
	}
}

如果前面的条件返回false,后面的判断代码不会再执行。

2、或操作:

或的操作要求所有的判断条件只要有一个满足即可。

范例:观察普通或(|)

public class TestDemo {
	public static void main(String args[]) {
		if ((1 == 1) |(10 / 0 == 0)) {
			System.out.println("Hello World!");
		}
	}
}

使用普通或所有的判断条件都执行了。即使遇见一个判断条件结果为true,依旧会继续执行。

范例:观察短路或(||)

public class TestDemo {
	public static void main(String args[]) {
		if ((1 == 1) ||(10 / 0 == 0)) {
			System.out.println("Hello World!");
		}
	}
}

只要遇见一个判断条件结果为true,后面的判断条件将不再执行。


四、位运算符

数学计算都使用的是十进制,而Java本身的运算支持二进制、八进制和十六进制。本节重点观察二进制。

如果想把十进制变为二进制,采用的方式是:除二、取余、倒序。

 

  25                      二进制:11001

/  2    

  12······ 1

/   2    

    6 ······ 0

/   2    

    3······ 0

/   2    

    1······ 1

/   2    

    0······ 1

位运算主要是进行二进制数据操作的,可以使用:&、|、>>、<<、^、~。

范例:实现位与操作

public class TestDemo {
	public static void main(String args[]) {
		int numA = 9;
		int numB = 11;
		System.out.println(numA & numB);
	}
}

9的二进制:00000000 00000000 00000000 00001001

11的二进制:00000000 00000000 00000000 00001011

&的结果:00000000 00000000 00000000 00001001         即:9

范例:实现位或操作

public class TestDemo {
	public static void main(String args[]) {
		int numA = 9;
		int numB = 11;
		System.out.println(numA | numB);
	}
}

9的二进制:00000000 00000000 00000000 00001001

11的二进制:00000000 00000000 00000000 00001011

| 的结果:00000000 00000000 00000000 00001011        即:11

范例:移位操作

public class TestDemo {
	public static void main(String args[]) {
		int num = 2;
		int result = num << 2;// 向左移位
		System.out.println(num);// 原始数据不变
		System.out.println(result);// 相当于2*2*2
	}
}

2的二进制:00000000 00000000 00000000 00000010

左移位之后:00000000 00000000 00000000 00001000

扩展题目:请解释“&”和“&&”的区别?“|”和“||”的区别?

逻辑运算:

  • &:所有的判断条件都要判断
  • &&:如果前面的结果返回了false,后面不再判断,最终结果为false;
  • |:所有的判断条件都要判断
  • ||:如果前面的结果返回了true,后面不再判断,最终结果为true;

位运算:

位与运算(&)、位或运算(|)

其中“&&”和“||”不能应用在位运算上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值