Java100天编程指南---第5天: 运算符与表达式(下)

7cf03a82b57c4b139f3a15fa463eab12.gif


目录

一、前言

二、逻辑运算符

1.与

2.或

3.非

三、三元运算符

四、基本位运算

1.与

2.或

3.非

4.同或

5.异或

五、移位运算

1.左移

2.右移

六、优先级


一、前言

  • 学习目标 1:熟悉基本的逻辑运算符、三元运算符计算
  • 学习目标 2:对于位运算与、或、非、同或、异或、移位运算会熟练应用,位运算在很多面试题会出现,最后优先级的表格要了解一下

二、逻辑运算符

  • 定义:用于对逻辑数据进行运算,即与、或、非。

1.与

public static void main(String[] args)
	{
		int i,j,k;//与运算
		i=10;
		j=20;
		k=30;
		//有false则false
		System.out.println((i>j)&&(i>k));//false&&false   false
		System.out.println((i>j)&&(i<k));//false&&true    false   
		System.out.println((i<j)&&(i>k));//true&&false    false
		System.out.println((i<j)&&(i<k));//true&&true     true
	}
  • 假如前一个为false,后一个不执行,直接输出false 

2.或

	public static void main(String[] args)
	{
		int i,j,k;//或运算
		i=10;
		j=20;
		k=30;
		//有true则true
		System.out.println((i>j)||(i>k));//false||false   false
		System.out.println((i>j)||(i<k));//false||true    true   
		System.out.println((i<j)||(i>k));//true||false    true
		System.out.println((i<j)||(i<k));//true||true     true
	}
  •  假如前一个为true,后一个不执行,直接输出true 

3.非

public static void main(String[] args)
	{
		int i,j,k;//非运算
		i=10;
		j=20;
		k=30;
		System.out.println((i>j));//false
		System.out.println(!(i>j));//true
		System.out.println(!!(i>j));//false
	}

总结

符号 介绍 说明
&& true&&true=true
|| true||false=true
! 取反操作,!false=true   !true=false

三、三元运算符

  • 格式:条件表达式 ? 值1 : 值2
  • 执行流程:首先计算表达式的值 如果值为 true,返回 值1,如果为 false,返回 值2

例题 :

  • 给定a,b的值,求出当中的最大值,赋给max
public static void main(String[] args)
	{
		int a,b,max;//初始化数据变量
		a=20;//赋值
		b=10;//赋值
		max=a>b?a:b;//max等于a b两者中间较大的一个
		System.out.println(max);//输出结果
	}
//输出20

四、基本位运算

1.与

  • 符号:&
  • 运算规则:两个二进制位都为1时才为1,否则为0
  • 示例:1001&1111=1001

2.或

  • 符号:|
  • 运算规则:两个二进制位都为0时才为0,否则为1
  • 示例:1001&1100=1101

3.非

  • 符号:~
  • 运算规则:首位符号位不变,0变成1,1变成0,在最后一位+1
  • 示例:~1001 = 0110

4.同或

  • 符号:~
  • 运算规则:数字相同时为1,相反为0
  • 示例:1001~1100=1010

5.异或

  • 符号:^
  • 运算规则:两个二进制位相反为1,相同为0
  • 示例:1001^0111=1110

五、移位运算

1.左移

  • 符号:<<
  • 运算规则:符号位不变,低位补0

示例

a<<b 代表十进制数字a向左移动b个进位
/* 左移:
 * 左移1位,相当于原数值 * 2
 * 左移2位,相当于原数值 * 4
 * 左移n位,相当于原数值 * 2^n
 */
计算 10 << 1
10的补码:0000 1010
-----------------------
结果补码:0001 0100 ==> 正数,即 10*2=20

计算 10 << 2
10的补码:0000 1010
-----------------------
结果补码:0010 1000 ==> 正数,即 10*2^2=40

计算 10 << 3
10的补码:0000 1010
-----------------------
结果补码:0101 0000 ==> 正数,即 10*2^3=80

计算 12 << 1
12的补码:0000 1100
-----------------------
结果补码:0001 1000 ==> 正数,即 12*2=24

2.右移

  • 符号:>>
  • 运算规则:低位溢出,符号位不变,并用符号位补溢出的高位

示例

a>>b 代表十进制数字a向右移动b个进位
/* 右移:
 * 右移1位,相当于原数值 / 2
 * 右移2位,相当于原数值 / 4
 * 右移3位,相当于原数值 / 2^n
 * 结果没有小数(向下取整)
 */
计算 80 >> 1
80的补码:0101 0000
-----------------------
结果补码:0010 1000 ==> 正数,即 80/2=40

计算 80 >> 2
80的补码:0101 0000
-----------------------
结果补码:0001 01000 ==> 正数,即 80/2^2=20

计算 80 >> 3
80的补码:0101 0000
-----------------------
结果补码:0000 1010 ==> 正数,即 80/2^3=10

计算 24 >> 1
12的补码:0001 1000
-----------------------
结果补码:0000 1100 ==> 正数,即 24/2=12

六、优先级

运算符 描述 优先级
[]、() 数组、括号 1
++ -- ! ~ 自增、自减 2
* / % 乘除、取余 3
+ - 加、减 4
<< 、 >>  、>>> 移位运算 5
<  、<=、  > 、>= 关系运算 6
==、 != 关系运算 7
& 位与 8
^ 异或 9
| 位或 10
&& 逻辑与 11
|| 逻辑或 12
?: 三元运算符 13
= 、*=、 /=、 +=、 -=、 ^= 赋值运算 14
&=、 |=、 <<=、 >>= 、>>>= 赋值运算 15

猜你喜欢

转载自blog.csdn.net/qq_53673551/article/details/123954091
今日推荐