ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaSE(5)——运算符

2021-12-18 21:31:07  阅读:121  来源: 互联网

标签:num1 num2 int System 运算符 println JavaSE out


运算符


1. 算数运算符:
image

代码示例:

package exercise.aritest;

public class AriTest {
	public static void main(String[] args) {
		//除号
		int num1 = 12;
		int num2 = 5;
		int result1 = num1 / num2;
		System.out.println(result1);
		
		int result2 = num1 / num2 * num2;
		System.out.println(result2);
		
		double result3 = num1 / num2;	//此结果是讲整型运算结果赋值给double型变量
		System.out.println(result3);
		
		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);
		System.out.println(result5);
		System.out.println(result6);
		System.out.println(result7);
		
		
		//取余运算
		//结果的符号与被模数的符号相同
		//开发中,经常使用%来判断能否被除尽的情况
		int m1 = 12;
		int n1 = 5;
		System.out.println("m1 % n1 = " + m1 % n1);
		
		int m2 = -12;
		int n2 = 5;
		System.out.println("m2 % n2 = " + m2 % n2);
		
		int m3 = 12;
		int n3 = -5;
		System.out.println("m3 % n3 = " + m3 % n3);
		
		int m4 = -12;
		int n4 = -5;
		System.out.println("m4 % n4 = " + m4 % n4);
		
		//(前)++:先自增一,然后再运算。
		//(后)++:先运算,然后再自增一。
		int a1 = 10;
		int b1 = ++a1;
		System.out.println("a1 = " + a1 + ",b1 = " + b1);
		
		int a2 = 10;
		int b2 = a2++;
		System.out.println("a2 = " + a2 + ",b2 = " + b2);
		
		int a3 = 10;
		++a3;	//a3++
		int b3 = a3;
		
		//注意点:
		short s1 = 10;
		//s1 = s1 + 1;	//编译失败,这里不满足变量提升规则
		s1 = (short)(s1 + 1);//正确的
		System.out.println(s1);
		s1++;	//自增一不会改变本身变量的数据类型,效率更高
		System.out.println(s1);
		
		//如果是byte
		byte bb1 = 127;
		bb1++;
		System.out.println("bb1 = " + bb1);
		
		//(前)--:先自减一,后运算。
		//(后)--:先运算,后自减一。
		int a4 = 10;
		int b4 = --a4;
		System.out.println("a4 = " + a4 + ",b4 = " + b4);
		
		
	}
}

2. 赋值运算符:

  • 符号: =+=-=*=/=%= (两侧数据类型不一致的时候,可以使用自动类型转换或使用强制类型转换原则进行处理)
  • 支持连续赋值

如果开发中,希望变量实现+2操作,有几种方法?

方式一、num = num + 2;

方式二、num += 2;(推荐)

(同样如果实现+1(-1)操作可以使用自增(自减)运算符,这种方式更为推荐,但是不能使用连续自增(自减)运算去实现+2(-2)操作。)eg:num++++这种就是编译不通过的情况

编程实例:

package exercise.aritest;

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类型
		
		//***********************
		int num1 = 10;
		num1 += 2;		//num1 = num1 + 2;
		System.out.println(num1);
		
		int num2 = 12;
		num2 %= 5;	//num2 = num2 % 5;
		System.out.println(num2);
		
		short s1= 10;
		//s1 = s1 + 2;//编译不通过
		s1 += 2;		//这种写法不会改变变量本身的数据类型
		System.out.println(s1);
		
	}
}

3. 比较运算符(关系运算符):
image

  • 比较运算符的结果都是布尔型,要么是true,要没事false
  • 注意比较运算符当中的==和赋值运算符中的=之间的区别。
  • 经常用于条件判断当中。

代码实例:

package exercise.aritest;

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//先将j赋值给i,然后再输出i
		
		boolean b1 = true;
		boolean b2 = false;
		System.out.println(b2 == b1);//false
		System.out.println(b2 = b1);//true
		
	}
}

4. 逻辑运算符:

  • 逻辑运算符: &(逻辑与)、|(逻辑或)、!(逻辑非)、&&(短路与)、||(短路或)、^(逻辑异或)
  • 操作的都是boolean类型的变量。
    image

代码示例:

package exercise.aritest;

public class LogicTest {
	public static void main(String[] args) {
		//区分 & 和 &&
		//相同点:& 和 && 的运算结果相同;当符号左边是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 = " + num1);
		
		boolean b2 = true;
		b2 = false;
		int num2 = 10;
		if(b2 && (num2++ > 0)) {//短路与和逻辑与之间的区别就在于如果第一个判断为false,后面就不在判断,因为只有前后两个命题都为true的时候才会判断为true。
			System.out.println("我现在在北京");
		}else {
			System.out.println("我现在在南京");
		}
		System.out.println("num2 = " + num2);
		
		//区分:| 和 ||
		//相同点:| 和 || 的运算结果相同;当符号左边是false时,二者都会执行符号右边的运算
		//不同点:当符号左边时true时,| 继续执行符号右边的运算,|| 不再执行符号右边的运算
		boolean b3 = false;
		int num3 = 10;
		if(b3 | (num3++ > 0)) {
			System.out.println("我现在在北京");
		}else {
			System.out.println("我现在在南京");
		}
		System.out.println("num3 = " + num3);
		
		boolean b4 = false;
		int num4 = 10;
		if(b4 || (num4++ > 0)) {
			System.out.println("我现在在北京");
		}else {
			System.out.println("我现在在南京");
		}
		System.out.println("num4 = " + num4);
	}
}

5. 位运算符: 位运算是直接对整数的二进制进行的运算。(这里的移位运算请见计算机组成原理)
image
image

注意:只有>>>,没有<<<

  • 移位运算符,可以让底数(2)倍乘法更为简单,效率更高
  • 使用移位运算符还可以进行变量值的交换:
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;

6. 三元运算符:

  • 格式: (条件表达式)?表达式1:表达式2;如果条件表达式的值(结果为boolean型变量)为true,运算后的结果是表达式1;反之为表达式2。
  • 表达式1和表达式2为同种类型。

代码示例:

package exercise.aritest;

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);
		
		double num = (m > n) ? 2 : 1.0;
		//(m > n) ? 2 : "n大";//编译不通过
		System.out.println(num);
		
		// *********************************
		String maxStr = (m > n) ? "m大" : "n大";
		String maxStr1 = (m > n) ? "m大" : ((m == n) ? "m和n相等" : "n大");
		System.out.println(maxStr);
		System.out.println(maxStr1);
		
		//*************************************
		//获取三个数的最大值
		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);
		
		int max3 = (((n1 > n2) ? n1 : n2) > n3) ? ((n1 > n2) ? n1 : n2) : n3;
		System.out.println("三个数中的最大值为:" + max3);
		
	}
}

凡是可以使用三元运算符的地方都可以改写为if-else;反过来不一定可行
如果既可以使用三元运算符,又可以使用if-else,优先使用if-else

7. 运算符的优先级:(自上而下,由高变低)

image

标签:num1,num2,int,System,运算符,println,JavaSE,out
来源: https://www.cnblogs.com/thiswei/p/15705926.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有