Java中运算符的使用


运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

1. 算术运算符

  • 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
  • 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
  • “+”除字符串相加功能外,还能把非字符串转换成字符串。
/*
 * 	运算符之一:算术运算符
 * + - + - * / % (前)++ (后)++ (前)-- (后)--
 */
public class AriTest {
	public static void main(String[] args) {
		// 除号:/
		int num1 = 12;
		int num2 = 5;
		int result1 = num1 / num2;
		System.out.println(result1);// 2

		int result2 = num1 / num2 * num2;
		System.out.println(result2);// 10

		double result3 = num1 / num2;
		System.out.println(result3);// 2.0

		double result4 = num1 / num2 + 0.0;
		double result5 = num1 / (num2 + 0.0);
		double result6 = (double) num1 / num2;
		double result7 = (double) (num1 / num2);
		System.out.println(result4);// 2.0
		System.out.println(result5);// 2.4
		System.out.println(result6);// 2.4
		System.out.println(result7);// 2.0

		// %:取余运算
		// 结果的符号与被模数的符号相同
		// 开发中,经常使用%来判断能否被除尽的情况
		int m1 = 12;
		int n1 = 5;
		System.out.println("m1 % n1 = " + m1 % n1);// m1 % n1 = 2

		int m2 = -12;
		int n2 = 5;
		System.out.println("m2 % n2 = " + m2 % n2);// m2 % n2 = -2

		int m3 = 12;
		int n3 = -5;
		System.out.println("m3 % n3 = " + m3 % n3);// m3 % n3 = 2

		int m4 = -12;
		int n4 = -5;
		System.out.println("m4 % n4 = " + m4 % n4);// m4 % n4 = -2

		// (前)++:先自增1,后运算
		// (后)++:先运算,后自增1
		int a1 = 10;
		int b1 = ++a1;
		System.out.println("a1 = " + a1 + ",b1 = " + b1);// a1 = 11,b1 = 11

		int a2 = 10;
		int b2 = a2++;
		System.out.println("a2 = " + a2 + ",b2 = " + b2);// a2 = 11,b2 = 10

		int a3 = 10;
		++a3;// a3++
		int b3 = a3;

		// 注意点:
		short s1 = 10;
//		s1 = s1 + 1;//编译失败
//		s1 = (short)(s1 + 1);//正确的
		s1++;// 自增1不会改变本身变量的数据类型
		System.out.println(s1);// 11

		// 问题:
		byte bb1 = 127;
		bb1++;
		System.out.println("bb1 = " + bb1);// bb1 = -128

		// (前)--:先自减1,后运算
		// (后)--:先运算,后自减1
		int a4 = 10;
		int b4 = --a4;
		System.out.println("a4 = " + a4 + ",b4 = " + b4);// a4 = 9,b4 = 9
		int b5 = a4--;
		System.out.println("a4 = " + a4 + ",b5 = " + b4);// a4 = 8,b5 = 9
	}
}

2. 赋值运算符

  • 符号:=
    当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
    支持连续赋值。
  • 扩展赋值运算符: +=, -=, *=, /=, %=
/*
 * 	运算符之二:赋值运算符
 * = += -= *= /= %=
 */
public class SetValueTest {
	public static void main(String[] args) {
		// 赋值符号:=
		int i1 = 10;
		int j1 = 10;

		int i2, j2;
		// 连续赋值
		i2 = j2 = 10;

		int i3 = 10, j3 = 20;

		// ------------------
		int num1 = 10;
		num1 += 2;// num1 = num1 + 2;
		System.out.println(num1);// 12

		int num2 = 12;
		num2 %= 5;// num2 = num2 % 5;
		System.out.println(num2);// 2

		short s1 = 10;
//		s1 = s1 + 2;//编译失败
		s1 += 2;// 结论:不会改变变量本身的数据类型
		System.out.println(s1);//12

		// 开发中,如何希望变量实现+2的操作,有几种方法?(前提:int num = 10;)
		// 方式一:num = num + 2;
		// 方式二:num += 2;(推荐)

		// 开发中,如何希望变量实现+1的操作,有几种方法?(前提:int num = 10;)
		// 方式一:num = num + 1;
		// 方式二:num += 1;
		// 方式三:num++;(推荐)
	}
}

3. 比较(关系)运算符

  • 比较运算符的结果都是boolean型,也就是要么是true,要么是false。
  • 比较运算符“==”不能误写成“=” 。
/*
 * 	运算符之三:比较运算符
 * == != > < >= <= instanceof
 * 
 * 	结论:
 *  1.比较运算符的结果是boolean类型
 *  2.区分 == 和 =
 */
public class CompareTest {
	public static void main(String[] args) {
		int i = 10;
		int j = 20;
		System.out.println(i == j);// false
		System.out.println(i = j);// 20

		boolean b1 = true;
		boolean b2 = false;
		System.out.println(b2 == b1);// false
		System.out.println(b2 = b1);// true
	}
}

4. 逻辑运算符

①& 逻辑与 ②| 逻辑或 ③! 逻辑非 ④&& 短路与 ⑤|| 短路或 ⑥^ 逻辑异或

  • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
  • “&”和“&&”的区别:
    单&时,左边无论真假,右边都进行运算;
    双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
  • “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
  • 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
/*
 * 	运算符之四:逻辑运算符
 * & && | || ! ^
 * 
 * 	说明:
 * 1.逻辑运算符操作的都是boolean类型的变量
 */
public class LogicTest {
	public static void main(String[] args) {
		// 区分:& 与 &&
		// 相同点1:& 与 && 的运算结果相同
		// 相同点2:当符号左边是true时,二者都会执行符号右边的运算
		// 不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
		// 开发中,推荐使用&&
		boolean b1 = true;
		b1 = false;
		int num1 = 10;
		if (b1 & (num1++ > 0)) {
			System.out.println("我现在在北京");
		} else {
			System.out.println("我现在在南京");
		}

		System.out.println(num1);

		boolean b2 = true;
		b2 = false;
		int num2 = 10;
		if (b2 && (num2++ > 0)) {
			System.out.println("我现在在北京");
		} else {
			System.out.println("我现在在南京");
		}

		System.out.println(num2);

		// 区分:| 与 ||
		// 相同点1:| 与 || 的运算结果相同
		// 相同点2:当符号左边是false时,二者都会执行符号右边的运算
		// 不同点:当符号左右是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
		// 开发中,推荐使用 ||
		boolean b3 = false;
		b3 = true;
		int num3 = 10;
		if (b3 | (num3++ > 0)) {
			System.out.println("我现在在北京");
		} else {
			System.out.println("我现在在南京");
		}

		System.out.println(num3);

		boolean b4 = false;
		b4 = true;
		int num4 = 10;
		if (b4 || (num4++ > 0)) {
			System.out.println("我现在在北京");
		} else {
			System.out.println("我现在在南京");
		}

		System.out.println(num4);
	}
}
我现在在南京
11
我现在在南京
10
我现在在北京
11
我现在在北京
10

5. 位运算符

  • 位运算是直接对整数的二进制进行的运算
  • 注意:无<<<

6. 三元运算符

  • (条件表达式)?表达式1:表达式2;
    ①条件表达式为true,运算后的结果是表达式1;
    ②条件表达式为false,运算后的结果是表达式2;
  • 表达式1和表达式2为同种类型
  • 三元运算符与if-else的联系与区别:
    ①三元运算符可简化if-else语句
    ②三元运算符要求必须返回一个结果。
    ③if后的代码块可有多个语句
/*
 * 	运算符之六:三元运算符
 * 1.结构:(条件表达式) ? 表达式1 : 表达式2
 * 2.说明
 * ①条件表达式的结果为boolean类型
 * ②根据条件表达式真或假,决定执行表达式1,还是表达式2
 * 	如果表达式为true,则执行表达式1。
 * 	如果表达式为false,则执行表达式2。
 * ③表达式1和表达式2要求是一致的。
 * ④三元运算符可以嵌套使用。
 * 3.凡是可以使用三元运算符的地方,都可以改写为if-else
 * 	反之,不成立。
 * 4.如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁,执行效率高。
 */
public class SanYuanTest {
	public static void main(String[] args) {
		// 获取两个整数的较大值
		int m = 12;
		int n = 5;

		int max = (m > n) ? m : n;
		System.out.println(max);// 12

		double num = (m > n) ? 2 : 1.0;
		System.out.println(num);// 2.0

		// --------------------------
		n = 12;
		String maxStr = (m > n) ? "m大" : ((m == n) ? "m和n相等" : "n大");
		System.out.println(maxStr);

		// --------------------------
		// 获取三个数的最大值
		int n1 = 12;
		int n2 = 30;
		int n3 = -43;

		int max1 = (n1 > n2) ? n1 : n2;
		int max2 = (max1 > n3) ? max1 : n3;
		System.out.println("三个数中的最大值为:" + max2);

		// 改写成if-else
		if (m > n) {
			System.out.println(m);
		} else {
			System.out.println(n);
		}
	}
}

7. 运算符的优先级

  • 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行。
  • 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值