首頁 > 常見問題 > 主體

Java中的%是什麼意思

青灯夜游
發布: 2023-03-06 16:48:48
原創
14362 人瀏覽過

在Java中,「%」是取餘的意思,是一個二元算術運算符,可進行除法運算並取得餘數,語法「操作數1 % 運算元2」。取餘運算子「%」的運算元通常是正整數也可以是負數甚至是浮點數,如果負數參與此運算,則結果的正負取決於前面一個數是正數還是負數。

Java中的%是什麼意思

本教學操作環境:windows7系統、java8版、DELL G3電腦。

Java中的%是取餘的意思,是一個算術運算符,可實現求餘運算,進行除法運算並取得餘數。

取餘運算子是%是一個雙目運算符,它的運算元通常是正整數也可以是負數甚至是浮點數,如果負數參與此運算,則結果的正負取決於前面一個數是正數還是負數。

對於整數,java的取餘運算規則如下

a%b=a-(a/b)*b 
5%3=5-(5/3)*3=2 
5%-3=5-(5/-3)*-3=2 
-5%3=-5-(-5/3)*3=-2 
-5%-3=-5-(-5/-3)*-3=-2
登入後複製

如果運算元中有浮點數則採用的規則為

a%b=a- (b*q),這裡q=int(a/b)

5.2%3.1=5.2-1*3.1=2.1 
5.2%-3.1=5.2-(-1)*(-3.1)=2.1 
-5.2%3.1=-5.1-(-1)*3.1=-2.1 
-5.2%-3.1=-5.1-(-1)*(-3.1)=-2.1
登入後複製

擴展知識:

Java 中的算術運算子主要用來組織數值類型資料的算術運算,依照參加運算的運算元的差異可以分為一元運算子和二元運算子。

一元運算子

算術一元運算一共有 3 個,分別是 -、 和 --。具體說明請參見表 1。

##說明範例- 取反符號取反運算b=-a
表1 一元算術運算
運算子名稱

#自加一

先取值再加一,或先加一再取值

Java中的%是什麼意思a 或a

- -

自減一

先取值再減一,或先減去一再取值a-- 或--a
int a = 12;
System.out.println(-a);
int b = a++;
System.out.println(b);
b = ++a;
System.out.println(b);
登入後複製
上述程式碼第 2 行是 -a,是把 a 變數取反,結果輸出是 -12。第 4 行程式碼是先把 a 賦值給 b 變數再加一,也就是先賦值後 ,因此輸出結果是 12。第 6 行程式碼是把 a 加一,然後把 a 賦值給 b 變量,也就是先 後賦值,因此輸出結果是 14。 Java 語言中算術運算符的功能是進行算術運算,除了經常使用的加( )、減(-)、乘(*)和除(\)外,還有取模運算(%)。加( )、減(-)、乘(*)、除(\)和我們平常接觸的數學運算具有相同的意義。具體說明請參見表 2。 ##說明例子加上求a 加b 的和,還可用於String 型,進行字串連線運算a b
#表1 中,-a 是對a 取反運算,a 或a-- 是在表達式運算完後,再給a 加一或減一。而 a 或 --a 是先將 a 加一或減一,然後再進行表達式運算。
輸出結果如下圖所示:二元運算子
表2 二元算術運算
運算子name
###-######減######求a 減b 的差######a - b########## ##*######乘######求a 乘以b 的積######a * b###############/ ### ######除######求a 除以b 的商數######a / b##############%###### ###取餘######求a 除以b 的餘數 ######a % b############

算术运算符都是双目运算符,即连接两个操作数的运算符。优先级上,*、/、% 具有相同运算级别,并高于 +、-(+、- 具有相同级别)。例如:

int a = 4, b = 2, c = 3;
int d = a * (b + c) % c;
登入後複製

这种运算规则与数学运算中的规则是相同的。首先计算赋值符号(=)右边配对的括号内的值,其次按从左向右的结合方向计算乘法,最后做求余运算,表达式的结果为 2, 然后把 2 赋值给 d。

例如:

  • int x=2,y=1;表达式 y/x 的结果是 0。

  • float x=2.0f; int y=1; 表达式 y/x 的结果是 0.5。

在 ① 中整型变量 x 和 y 相除,其结果仍为整型数据 0;在 ② 中由于两个不同类型的数据进行运算,此时首先要进行类型转换,会把 int 型的 y 转换成与 x 一样的 float 型,然后相除,最终结果为 float 类型的数字 0.5。

【例1】编写一个程序,输出不同类型的两个数,执行相加、相减、相乘、相除和求余后输入结果。

public static void main(String[] args) {
    float f1 = 9 % 4;// 保存取余后浮点类型的结果
    double da = 9 + 4.5; // 双精度加法
    double db = 9 - 3.0; // 双精度减法
    double dc = 9 * 2.5; // 双精度乘法
    double dd = 9 / 3.0; // 双精度除法
    double de = 9 % 4; // 双精度取余
    System.out.println("整数的算术运算"); // 整数的加、减、乘、除和取余
    System.out.printf("9+4=%d \n", 9 + 4);
    System.out.printf("9-4=%d \n", 9 - 4);
    System.out.printf("9*4=%d \n", 9 * 4);
    System.out.printf("9/4=%d \n", 9 / 4);
    System.out.printf("9%%4=%d \n", 9 % 4);
    System.out.println("\n浮点数的算术运算"); // 浮点数的加、减、乘、除和取余
    System.out.printf("9+4.5f=%f \n", 9 + 4.5f);
    System.out.printf("9-3.0f=%f \n", 9 - 3.0f);
    System.out.printf("9*2.5f=%f \n", 9 * 2.5f);
    System.out.printf("9/3.0f=%f \n", 9 / 3.0f);
    System.out.printf("9%%4=%f \n", f1);
    System.out.println("\n双精度数的算术运算"); // 双精度数的加、减、乘、除和取余
    System.out.printf("9+4.5=%4.16f \n", da);
    System.out.printf("9-3.0=%4.16f \n", db);
    System.out.printf("9*2.5=%4.16f \n", dc);
    System.out.printf("9/3.0=%4.16f \n", dd);
    System.out.printf("9%%4=%4.16f \n", de);
    System.out.println("\n字符的算术运算"); // 对字符的加法和减法
    System.out.printf("'A'+32=%d \n", 'A' + 32);
    System.out.printf("'A'+32=%c \n", 'A' + 32);
    System.out.printf("'a'-'B'=%d \n", 'a' - 'B');
}
登入後複製

保存文件并运行,输出的结果如下所示。

Java中的%是什麼意思

本示例中使用了 4 种类型来执行算术运算。其中,整数类型的结果最容易理解,浮点型和双精度型返回的结果都带有小数,字符型将会把字符转换为 ASCII 码再运算。

从输出结果中可以看到,整数之间的运算结果只保留整数部分,浮点型运算时保留 6 位小数部分,双精度运算时则保留 16 位小数部分。

注意:Java 语言算术运算符的优先级是先乘除后加减。例如在表达式“a-b*c”中,b 的左侧为减号,右侧为乘号,而乘号优先级高于减号,因此该表达式可以转换为“a-(b*c)”。

如果在一个表达式中的多个算术运算符的优先级别相同,例如“a-b+c”,此时将按照运算符的结合方向决定顺序。算术运算符的结合方向都是“从左至右”,即先左后右。因此 b 先与减号结合,执行“a-b”的运算,再执行加 c 的运算。

更多编程相关知识,请访问:编程教学!!

以上是Java中的%是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板