Java基础——基本语法---运算符

一、算术运算符算术运算符
【典型的代码】

	//除法
	int i1 = 12;
	int i2 = 5;
	int i3 = i1 / i2;
	System.out.println(i3);
	int i4 = i1 / i2 * i2;
	System.out.println(i4);
	
	double d1 = i1 / i2 ;
	System.out.println(d1);
	
	double d2 = i1;
	
	double d3 = (double)i1 / i2;
	System.out.println(d3);
	
	double d4 = i1 / (i2 +0.0);
	System.out.println(d4);
	
	//取模:%
	//结果的符号与被模数相同
	//应用:用来判断是否可以除尽某个数
	int m1 = 12;
	int n1 = 5;
	System.out.println(m1 % n1);//2
	
	int m2 = -12;
	int n2 = 5;
	System.out.println(m2 % n2);//-2
	
	int m3 = 12;
	int n3 = -5;
	System.out.println(m3 % n3);//
	
	int m4 = -12;
	int n4 = -5;
	System.out.println(m4 % n4);//-2
	
	//i++:先运算,后+1
	//++i:先+1后运算
	int z1 = 10;
	//z1++;//自增1
	++z1;//自增1
	System.out.println(z1);
	
	int a1 = 10;
	int b1 = a1++;
	System.out.println("a1:" + a1);//a1:11
	System.out.println("b1:" + b1);//b1:10
	
	int a2 = 10;
	int b2 = ++a2;
	System.out.println("a2:" + a2);//a2:10
	System.out.println("b2:" + b2);//b2:11
	
	//特别的使用:++或--不会改变变量本身的数据类型
	short s1 = 11;
	//s1 = s1 + 1;//编译不通过
	//s1 = (short)(s1 + 1);//编译通过
	s1++;
	
	//i--:先运算,后自减1
	//--i:先自减1,后运算
	int a3 = 14;
	int b3 = --a3;
	System.out.println("a3:" + a3);//13
	System.out.println("b3:" + b3);//13
	
	int a4 = 14;
	int b4 = a4--;
	System.out.println("a4:" + a4);//13
	System.out.println("b4:" + b4);//14

【特别说明】
1.除法中整型的计算结果仍为整型,涉及取整问题
2.取模:% 结果的符号与被模数相同
经常用于判断是否可以除尽某个数
3.自增、自减
i++:先运算,后加1;
++i:先加1,后yunsua
i–:先运算,后减1
–i:先减1,后运算

二、赋值运算符

  1. 符号:=
    ※ 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
    ※ 支持连续赋值。
    ※ 扩展赋值运算符: +=, -=, *=, /=, %=
    ※ +=、-= 等运算结果不会改变变量本身的数据类型
    1. 总结
      情况1:定义一个整型变量,自增1
      写法1:num = num + 1;
      写法2:num += 1;
      写法3:num++;(推荐)
      情况2:定义一个整型变量,自增3
      写法1:num = num + 3;
      写法2:num += 3;(推荐)

【典型代码】

	//= :赋值符号
	int n1 = 10;
	int n2,n3;
	n2 = n3 = 20;
	System.out.println(n2);
	System.out.println(n3);
	int n4 = 11,n5 = 21;
	System.out.println(n4);
	System.out.println(n5);
	
	int m = 5;
	m += 3;//m = m + 3;
	System.out.println(m);//8
	
	m %= 5;//m = m % 5;
	System.out.println(m);//3
	//特别的
	short s1 = 3;
	//s1 =s1 + 3;//编译不通过
	//s1 = (short)(s1 + 3);
	s1 += 3;//将s1增加3,同时数据类型不变
	System.out.println("s1:" + s1);//s1:6

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

【典型代码】

int num1 = 11;
int num2 = 22;
System.out.println(num1 == num2);//false
System.out.println(num1 = num2);//22

【特别说明】

(1)比较运算符的结果都是boolean型,也就是要么是true,要么是false。
(2)区分 == 和 =
比如:
boolean b = false;
if(b = true){
//执行语句
}

四、逻辑运算符
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
逻辑运算符
【典型代码】

boolean b1 = true;
boolean b2 = false;
System.out.println("b1 & b2:" + (b1 & b2));
System.out.println("b1 && b2:" + (b1 && b2));
System.out.println("b1 | b2:" + (b1 | b2));
System.out.println("b1 || b2:" + (b1 || b2));
System.out.println("!b1:" + (!b1));
System.out.println("b1 ^ b2 :" + (b1 ^ b2));

【特别说明】
4.2 区分 &与 &&
(1)如果符号左端是true,二者没区别,都执行右边的运算
(2)如果符号左端是false,& 继续执行符号右边的运算;&& 不执行符号右端的运算
(3)开发中,通常使用&&
4.3 区分:| 与 ||
(1)如果符号左端是false,二者没区别,都执行右边的运算
(2)如果符号左端是true,| 继续执行符号右边的运算;|| 不执行符号右端的运算
(3)开发中,通常使用 ||
说明:逻辑运算符适用于boolean类型的变量,且运算结果也为boolean类型

五、位运算符
位运算符
【典型代码】

		int num = 12;
		System.out.println("num << 2 :" + (num << 2));//48
		System.out.println("num << 27 :" + (num << 27));//1610612736
		System.out.println("num << 28 :" + (num << 28));//-1073741824
		System.out.println("num >> 2 :" + (num >> 2));//3
		System.out.println("num >> 27 :" + (num >>27));//0
		System.out.println("num >> 28 :" + (num >> 28));//0
		System.out.println("num >>> 2 :" + (num >>> 2));//3
		
		int num1 = -12;
		System.out.println("num1 << 2 :" + (num1 << 2));//-48
		System.out.println("num1 << 27 :" + (num1 << 27));//-1610612736
		System.out.println("num1 << 28 :" + (num1 << 28));//1073741824
		System.out.println("num1 >> 2 :" + (num1 >> 2));//-3
		System.out.println("num1 >> 27 :" + (num1 >>27));//-1
		System.out.println("num1 >> 28 :" + (num1 >> 28));//-1
		System.out.println("num1 >>> 2 :" + (num1 >>> 2));//1073741824
		
		System.out.println("~6 :" + (~6));
		System.out.println("~-7 :" + (~-7));

【面试题】
高效实现28: 2<<3 或 8<<1
【特别说明】
(1)位运算符操作的都是整型数据
(2)<<:在一定范围内,每左移一位,相当于
2; >>:在一定范围内,每左移一位,相当于/2;正数,空出来的最高位拿0补;负数:>>右移以后,空出来的最高位拿1去补
(3)>>>:无符号右移,不管此数是正数还是负数,高位都拿0补

六、三元运算符

  1. 表达式:(条件表达式)?表达式1:表达式2;
    (1)条件表达式为true,运算后的结果是表达式1;为false,运算后的结果是表达式2;
    (2)表达式1和表达式2为同种类型
  2. 三元运算符和if-else的联系与区别
    (1)三元运算符可以简化if-else语句
    (2)三元运算符要求必须返回一个结果
    (3)if后的代码块可有多个语句
    【典型代码】
//获取两个数的较大值
		int m = 10;
		int n = 5;
		int max = (m > n) ? m : n;
		System.out.println("max:" + max);
		
		//String maxStr = (m > n) ? "m大" : "n大";
		String maxStr = (m > n) ? "m大" : ((m == n) ? "相等" : "n大");
		System.out.println("maxStr:" + maxStr);
		
		//使用if-else实现输出两个数的较大值
		if(m > n){
			System.out.println(m);
		}else{
			System.out.println(n);
		}

【特别说明】
(1)条件表达式的结果是boolean类型
(2)如果条件表达式为true,则执行表达式1;否则,执行表达式2;
(3)表达式1和表达式2必须类型是一致的
(4)三元运算符可以嵌套使用
(5)结论1:凡是使用三元运算符的都可以改写为if-else实现。反之,不成立。
结论2:既可以使用三元运算符也可以使用if-else时,选择三元运算符,因为执行效率高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值