Java运算符知识点

运算符

算术运算符

算术运算符含义
+加法运算、字符串拼接运算、正数
-减法运算、负数
*乘法运算、通配符
/除法运算(求商数)
%除法运算(取余数、取模运算)
++自加一运算
自减一运算
package com.zhiyou100.yunsuan;

public class Demo1 {
	
	public static void main(String[] args) {
		/*
		 * 算术运算符: --> 数学运算
		 * 加 +
		 * 	  两个作用:
		 * 		1) 做加法: 当操作符两边数据类型不一致时,结果的数据类型与范围较大一致
		 * 		   char型数据可以做加法,结果是数字
		 * 		2) 加号前或后有字符串时 做拼接,一旦前面是字符串相加,后续所有加法都是拼接
		 * 减 -
		 * 	 两个作用:
		 * 		1) 减法,特点与加法类似,但是不能拼接字符串
		 * 		2) 负号
		 * 乘 *
		 * 	  乘法,特点与加法类似
		 * 除 /
		 * 	除法,整数相除,如果除不尽,直接舍弃小数点后的数字,不是四舍五入
		 *  如果想保留小数部分,需要将操作数任意一个变为浮点型即可
		 * 取余 %
		 *   除不尽取余. 余数有正负
		 *   正负与%前的被取余数有关系,前为正结果为正,...
		 */
		System.out.println(1 + 1);
		System.out.println("1" + 1);
		System.out.println(1 + "1");
		System.out.println(1 + 1 + "1"+ 1+ 1);
		System.out.println(1 + 1.0);
		System.out.println('\u4e00'+'A');
		System.out.println(1 - 1);
		System.out.println(1 - 1.0);
		// 减法 - 做负号
		int a = 1;
		System.out.println(-a + 1);
		System.out.println(1 * 2);
		System.out.println(1 * 2.0);
		System.out.println(9 / 3);
		System.out.println(10 / 4);
		System.out.println(10 / 3.0);
		System.out.println("-------------");
		System.out.println(9 % 3);
		System.out.println(10 % 3); // 1
		System.out.println(-10 % 3);// -1
		System.out.println(10 % -3);// 1
		System.out.println(-10 % -3);// -1
	}
	
}

赋值运算符

赋值运算符含义
=赋值
+=加等于
-=减等于
*=乘等于
/=商等于
%=模等于
  1. 重点掌握【=】基本赋值运算符
  2. 剩下的都是复合赋值运算符
  3. 只有变量才可以使用赋值运算符,常量不能进行赋值
  4. 复合赋值运算符其中隐含了一个强制类型转换。
	public static void main(String[] args) {
		/*
		 * 赋值运算符
		 * =  : 
		 * 	数据类型 变量 = 值; 将右侧的值赋值给左侧变量
		 * +=
		 * 	a += b ==> a = a + b
		 * -=
		 * 
		 * *=
		 * 	a *= b  ==> a = a * b;
		 * /=
		 * 
		 * 
		 * 
		 */
		int a = 1;
		int b = 0;
		b += a;
		System.out.println(b);
		int c = 2;
		int d = 3;
		d *= c;
		System.out.println(d);
		
	}

关系运算符

关系运算符含义
==相等比较
<小于比较
>大于比较
>=大于等于比较
<=小于等于比较
!=不等于比较
	public static void main(String[] args) {
		/*
		 * 关系运算符: 运算后的结果是布尔类型>:true / false
		 * 	> < >= <= 
		 * 	!= 判断是否不等
		 * 	== 判断是否相等
		 */
		int a = 1;
		int b = 2;
		System.out.println(1 > 0);
		System.out.println(a > b);
		System.out.println(1 >= 1);
		System.out.println(1 <= 1);
		System.out.println(1 != 1);
		System.out.println(1 == 1);
		
	}

位运算的基本用法

运算符含义示例
<<左移5 << 2 = 20 —> 5 * 2^2 = 5 * 4 = 20
>>右移5 >> 1 = 2 —> 5 / 2^1 = 5 / 2 = 2
>>>无符号右移5 >>> 1 = 2—> 5 / 2^1 = 5 / 2 = 2
&与运算(只要有一个为0,运算结果则为0,否则为1)5 & 3 = 1
|或运算(只要有一个为1,运算结果就为1,否则为0)5 | 3 = 7
^异或运算(如果两个数值一样,运算结果就为0,否则为1)5 ^ 3 = 6
~取反运算(了解)~6—>0110 = -7

1_Java语言基础(位运算符的基本用法1)(了解)

A:位运算符有哪些:
&, |, ^, ~ , >>, >>>, <<
B:案例演示
位运算符的基本用法1
&,|,^,~ 的用法
&:有0则0
|:有1则1
^:相同则0,不同则1
~:按位取反

2_Java语言基础(位异或运算符的特点及面试题)(掌握)

A:案例演示:
位异或运算符的特点
^的特点:一个数据对另一个数据位异或两次,该数本身不变。
B:面试题:
请自己实现两个变量的交换
注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型.

3_Java语言基础(位运算符的基本用法)

A:案例演示 >>,>>>,<<的用法:
<<:左移 左边最高位丢弃,右边补齐0
·>>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
· >>>:无符号右移 无论最高位是0还是1,左边补齐0
最有效率的算出2 * 8的结果

class Demo1_Operator {
	public static void main(String[] args) {
		/*
		* &,|,^,~ 的用法
		* &:有0则0
		* |:有1则1
		* ^:相同则0,不同则1
		* ~:按位取反
		*/

		System.out.println(6 & 3);				//2
		System.out.println(6 | 3);				//7
		System.out.println(6 ^ 3);				//5	
		System.out.println(~6);					//-7?					
	}
}
/*
	110
&	011
-----------
    010

	110
|	011
-----------
    111

	110
^	011
-----------
    101

	00000000 00000000 00000000 00000110		6的原码反码补码都是本身
	11111111 11111111 11111111 11111001		对6取反
-	00000000 00000000 00000000 00000001
---------------------------------------
	11111111 11111111 11111111 11111000		反码
	10000000 00000000 00000000 00000111		原码(-7)
*/
-------------------------------------------------------
class Demo2_Operator {
	public static void main(String[] args) {
		/*
		* 位异或运算符的特点

		* ^的特点:一个数据对另一个数据位异或两次,该数本身不变。
		*/

		//System.out.println(5 ^ 10 ^ 10);
		//System.out.println(5 ^ 10 ^ 5);

		/*
		* 请自己实现两个整数变量的交换(不需要定义第三方变量)
		* 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。
		*/

		int x = 10;
		int y = 5;

		//需要第三方变量,开发推荐用这种
		/*int temp;
		temp = x;
		x = y;
		y = temp;*/

		//不需要定义第三方变量,有弊端,有可能会超出int的取值范围
		/*x = x + y;				//10 + 5 = 15
		y = x - y;				//15 - 5 = 10
		x = x - y;				//15 - 10 = 5*/

		//不需要第三方变量,通过^来做
		x = x ^ y;				// 10 ^ 5 
		y = x ^ y;				// 10 ^ 5 ^ 5	y = 10
		x = x ^ y;				// 10 ^ 5 ^ 10  x = 5

		System.out.println("x = " + x + ",y = " + y);
	}
}
-------------------------------------------------------
class Demo3_Operator {
	public static void main(String[] args) {
		/*
		*  <<:左移	左边最高位丢弃,右边补齐0
		*  >>:右移	最高位是0,左边补齐0;最高为是1,左边补齐1
		*  >>>:无符号右移 无论最高位是0还是1,左边补齐0
		*  最有效率的算出2 * 8的结果
		*/

		//左移,向左移动几位就是乘以2的几次幂
		//System.out.println(12 << 1);		//24
		//System.out.println(12 << 2);		//48

		/*
		00000000 00000000 00000000 00001100		12的补码
	 (0)0000000 00000000 00000000 000011000		24的补码
	(00)000000 00000000 00000000 0000110000		48的补码
		*/

		//右移,向右移动几位就是除以2的几次幂
		//System.out.println(12 >> 1);
		//System.out.println(12 >> 2);

		/*
		00000000 00000000 00000000 00001100		12的补码
		000000000 00000000 00000000 0000110(0)	6
		0000000000 00000000 00000000 000011(00) 3
		*/

		//最有效率的算出2 * 8的结果
		System.out.println(2 << 3);
	}
}

逻辑运算符

逻辑运算符含义
&& 短路与1.如果两边都是true,结果为true;2.如果一边为false,结果就是false
|| 短路或1.如果两边任意一边是true,结果则为true,否则为false
! 取反(取非)如果为false,结果为true;反之则为false。
^ 异或如果两边有且只有一个为true,结果则为true,否则为false。
package com.zhiyou100.yunsuan;

public class Demo4 {

	public static void main(String[] args) {
		// 这是算法异常,执行报错,程序停止
		// System.out.println(1 / 0);
		/*
		 * 逻辑元素符: 
		 * 	语法格式:
		 * 		boolean r = 布尔表达式1 & 布尔表达式2
		 * 		1) 逻辑元素符运算结果是布尔类型
		 * 		2) 布尔表达式:是指运算结果是布尔值的式子
		 * & 与/和(and)
		 * 		只有&两边的表达式的值都是true 整体结果才是true,其他都是false
		 *      全真才真,一假就假
		 * | 或
		 * 		只有|两边的表达式的值都是false 整体结果才是false,其他都是true
		 *       全假才假,一真就真
		 * ! 非/取反
		 * 		非错即对
		 * && 短路与
		 * 		因为&是一错就错,所以当&&前已经是false时,那么就可以确定整体表达式的结果是false
		 *      后续的表达式就不再执行了
		 * || 短路或
		 * 	与上类似
		 * ===>
		 * 	  只要第一个表达式的结果能确定整体表达式的结果,后面表达式就短路不执行.
		 * 
		 */
		boolean r1 = 1 > 0 & 2 < 0;
		System.out.println(r1);
		System.out.println("-----");
		System.out.println(1 > 0 & 2 > 0);// T & T = T
		System.out.println(1 > 0 & 2 < 0);// T & F = F
		System.out.println(1 < 0 & 2 > 0);// F & T = F
		System.out.println(1 < 0 & 2 < 0);// F & F = F
		System.out.println("-----");
		System.out.println(1 > 0 | 2 > 0);// T | T = T
		System.out.println(1 > 0 | 2 < 0);// T | F = T
		System.out.println(1 < 0 | 2 > 0);// F | T = T
		System.out.println(1 < 0 | 2 < 0);// F | F = F
		System.out.println("-----");
		System.out.println(!true);
		System.out.println(!(1 < 0 )| 2 < 0);
		System.out.println(!(1 < 0 | 2 < 0));
		System.out.println("-----");
		//System.out.println(1 > 0 && 1 / 0 == 1);// T & F = F
		//System.out.println(1 < 0 && 1 / 0 == 1);// F & T = F
		
		
		System.out.println("-----");
		//System.out.println(1 > 0 || 1 / 0 == 1);// T || F = T
		//System.out.println(1 < 0 || 1 / 0 == 1);// F || T = F
		System.out.println((1 < 0 || 1 / 1 == 1)&&(1 > 0 || 1 / 0 == 1));
	}
}

三目运算

package com.zhiyou100.yunsuan;

public class Demo5 {

	public static void main(String[] args) {
		/*
		 * 三目/三元运算:
		 * 数据类型 变量 = 布尔表达式 ?当前面结果是true时执行此处:当前面结果是false时执行此处;
		 * 数据类型 变量 = A ? B : C;
		 * 	1) 先执行A处的布尔运算,得到一个布尔值
		 * 	2) 当布尔值是true时,执行B处的代码
		 *  3) 当布尔值是false时,执行C处的代码
		 *  4) 整体结果的数据类型根据 执行B处或者C处的代码的结果而定
		 *  5) B处和C处的结果数据类型一致
		 */
		int a = 1;
		int b = 2;
		int s = a < b ? 1 : 0; 
		System.out.println(s);
		
		int r1 = a < b ?(a > b ? a:b) : (a < b ? a : b);
		int r2 = a < b ? (a+b*4): (a < b ? a : b);
		System.out.println(r1);
		System.out.println(r2);
		/*
		 * 假设变量整型c,d,e. 使用三目运算比较大小,输出最大值
		 */
		int c = 110;
		int d = 180;
		int e = 1100;
		int r3 = c > d ? c : d;
		System.out.println(r3);
		
		int r4 = c > d ?(c > e ? c: e):(d > e ? d : e);
		System.out.println(r4);
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值