学习任务:

视频学习Java算术运算符

动手测试案例

Java中取模与求余的不同

在数学中可以进行加减乘除等相关运算,在计算机中自然也是可以的,看下边的例子:

int a = 1+2;
double b = 3.1/4;

第一行代码表示:对1和2进行加法运算,运算结果赋值给变量a,1和2都叫操作数,加号(+)叫运算符。

操作数和运算符组成表达式,int a = 1+2;是将1+2表达式的值赋值给变量a。

第二行代码表示:对3.1和4进行除法运算,将3.1/4表达式的值赋值给变量b,3.1和4都叫操作数,除号(/) 叫运算符。

Java运算符包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符。

算术运算符包括加、减、乘、除、求余等 。

下表是java中的算术运算符:

image-20200731093659613

有一个操作数的叫单目运算符,有两个操作数的叫双目运算符,正号属于单目运算符,加、减、乘、除都属于双目运算符。

例子:

/**
 * 	算术运算符测试 
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class OperatorDemo1 {
	public static void main(String[] args) {
		//定义变量x、y分别赋值4、2
		int x = 4;  
		int y = 2;
		//加法运算
		System.out.println(x+y);
		//减去运算
		System.out.println(x-y);
		//乘法运算
		System.out.println(x*y);
		//除法运算
		System.out.println(x/y); 
		//求余
		int z = 3;
		System.out.println(x%z); 
		//%的操作数可以是小数(两个或一个都可以是小数)
		System.out.println(4%3.0); 
		//%的操作可以是负数,结果和被除数的符号一致
		System.out.println(4%-3); 
		System.out.println(-4%-3); 

	}
}

注意:/和%运算符右边操作数不能为0。

在Java中%为求余运算符,可以使用Math.floorMod()实现取模,实际开发中用的最多的是求余,一些文章常将取模和求余混为一谈,下面讲解Java中取模与求余的不同。

说明:Math.floorMod()方法可通过查询jdk Api获取详细说明,本节不作详细讲解,本节主要讲取模与求余算法上的不同。

在java中求余和取模的计算步骤相同,如下:

设:被除数为a,除数为b,c为商,r为余数或模数
1.求整数商: c = a/b;
2.取模或求余: r = a - c*b;

求余和取模的区别主要在第一步求整数商,如下:

求余:当a和b都为正数或都为负数时商为正数,当一正一负时商为负数,且商向0方向舍入。

取模:当a和b都为正数或都为负数时商为正数,当一正一负时商为负数,且商向负无穷大方向舍入。

求余的例子如下:

int h = 6;
int i = 4;
System.out.println(h%i);
System.out.println(-h%i);

结果:

2
-2

h%i:

​ 先求整数商:6/4=1,再求余数(套公式r = a - c*b)得:2

-h%i:

​ -h表示h为负数即-6,先求整数商:-6/4等于-1.5,商向0方向舍入,得-1。

​ 再求余数(套公式r = a - c*b)得:-2

取模的例子如下:

//取模(了解)
int r = 6;
int s = 4;
System.out.println(Math.floorMod(r,s));
System.out.println(Math.floorMod(-r,s));

结果:

2
2

6和4取模:

​ 先求整数商:6/4=1,再求模数(套公式r = a - c*b)得:2

-6和4取模:

​ 先求整数商:-6/4等于-1.5 ,商向负无穷大方向舍入,得-2。

​ 根据上边公式(r = a - c*b;)求模数得:2

总结:

从结果可以看出:

设:求余表达式 a % b,取模表达 Math.floorMod(a,b)

当a和b两个操作数符号相同时求余和取模得出的结果相同。

当a和b为一正一负时,求余的结果和a的符号一样,取模的结果和b的符号一样。

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题