‘/’和‘%’在编程中有非常重要的作用,使用它们可以说是在使用一种简单算法,不仅易于理解,而且会极大的减少你的代码量,让你的程序看起来高级一点点🤪!
/ 除
我们通常都是除10的倍数,比如‘10’只有一个0,那么 ‘/10’的含义就是除去后面1位
‘/100’有两个0,那么‘/100’就是除去后面2位
‘/1000’有三个0,那么‘/1000’就是除去后面3位
10086 / 10 = 1008 10086 / 100 = 100 10086 / 1000 = 10 10086 / 10000 = 1
% 取余
%10的 倍数
取余和除刚好相反,除是除去后面几位(通常除10的倍数),而取余则是保留后面几位数(通常对10取余)
同样,比如‘%10’,10只有一个0,‘%10’的含义就是保留最后1位
‘%100’,100有两个0,那么‘%100’的含义就是保留最后2位
‘%1000’,1000有三个0,那么‘%100’的含义就是保留最后3位
12345 % 10 = 5 12345 % 100 = 45 12345 % 1000 = 345 12345 % 10000 = 2345
%非10的倍数的数
这个也十分重要了,通常我们会在循环中遇到:
比如,我们有1个Task[] 数组,它有3个Task对象,我们需要在接下来的10次循环中每次调用一个Task任务。也就是说写一个for循环,循环10次,每一次循环轮流执行这三个中的一个任务(调用它的run方法)
Task[] tasks = new Task[3]; //创建三个任务 for (int i=0;i<10;i++){ tasks[i] = new Task();//实例化对象才能调用它的方法 tasks[i].run();//执行任务 }
但是我们会发现,当循环到第4次的时候,tasks[3] 它根本不存在,这个时候,就需要我们使用 % 了!!!
Task[] tasks = new Task[3]; //创建三个任务 int nums = i%tasks.length();//任务的数量 for (int i=0;i<10;i++){ tasks[i%nums] = new Task();//实例化对象才能调用它的方法 tasks[i%nums].run();//执行任务 }
我们模拟一下这10次循环
//我们有3个任务:tasks[0],tasks[1],tasks[2] tasks[0%3] //这次执行的是tasks[0] tasks[1%3] //这次执行的是tasks[1] tasks[2%3] //这次执行的是tasks[2] tasks[3%3] //这次执行的是tasks[0] tasks[4%3] //这次执行的是tasks[1] tasks[5%3] //这次执行的是tasks[2] tasks[6%3] //这次执行的是tasks[0] tasks[7%3] //这次执行的是tasks[1] tasks[8%3] //这次执行的是tasks[2] tasks[9%3] //这次执行的是tasks[0]
显然这样比使用比如队列(不断出队、入队)要简单多了吧😎😎😎!