首页 > 编程语言 >3.3 Java算术运算符

3.3 Java算术运算符

时间:2023-09-15 13:00:25浏览次数:39  
标签:Java 运算 算术 System 运算符 3.3 printf out

运算符丰富是 Java 语言的主要特点之一,它提供的运算符数量之多,在高级语言中是少见的。

Java 语言中的运算符除了具有优先级之外,还有一个结合性的特点。当一个表达式中出现多种运算符时,执行的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的约束,以便确定是自左向右进行运算还是自右向左进行运算。这些运算符按照操作数的数量可以分为单目运算符、双目运算符和三目运算符。

最基本的运算符包括算术运算符、赋值运算符、逻辑运算符和关系运算符等,本文将详细介绍算术运算符。

Java 中的算术运算符主要用来组织数值类型数据的算术运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。

一元运算符

算术一元运算一共有 3 个,分别是 -、++ 和 --。具体说明参见表 1。

表 1 一元算术运算
运 算 符名 称说 明例 子
取反符号 取反运算 b=-a
++ 自加一 先取值再加一,或先加一再取值 a++ 或 ++a
-- 自减一 先取值再减一,或先减一再取值 a-- 或 --a

表 1 中,-a 是对 a 取反运算,a++ 或 a-- 是在表达式运算完后,再给 a 加一或减一。而 ++a 或 --a 是先给 a 加一或减一,然后再进行表达式运算。
  1. int a = 12;
  2. System.out.println(-a);
  3. int b = a++;
  4. System.out.println(b);
  5. b = ++a;
  6. System.out.println(b);
上述代码第 2 行是 -a,是把 a 变量取反,结果输出是 -12。第 4 行代码是先把 a 赋值给 b 变量再加一,即先赋值后 ++,因此输出结果是 12。第 6 行代码是把 a 加一,然后把 a 赋值给 b 变量,即先 ++ 后赋值,因此输出结果是 14。

输出结果如下图所示: 输出结果
图 1  输出结果 关于 ++ 和 --,可直接参考《Java自增和自减运算符(++和--)》一节。

二元运算符

Java 语言中算术运算符的功能是进行算术运算,除了经常使用的加(+)、减(-)、乘(*)和除(\)外,还有取模运算(%)。加(+)、减(-)、乘(*)、除(\)和我们平常接触的数学运算具有相同的含义。具体说明参见表 2。

表 2 二元算术运算
运 算 符名 称说 明例 子
+ 求 a 加 b 的和,还可用于 String 类型,进行字符串连接操作 a + b
- 求 a 减 b 的差 a - b
* 求 a 乘以 b 的积 a * b
求 a 除以 b 的商 a / b
% 取余 求 a 除以 b 的余数  a % b


算术运算符都是双目运算符,即连接两个操作数的运算符。优先级上,*、/、% 具有相同运算级别,并高于 +、-(+、- 具有相同级别)。例如:
  1. int a = 4, b = 2, c = 3;
  2. 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】编写一个程序,输出不同类型的两个数,执行相加、相减、相乘、相除和求余后输入结果。

实现代码如下:
  1. public static void main(String[] args) {
  2.     float f1 = 9 % 4;// 保存取余后浮点类型的结果
  3.     double da = 9 + 4.5; // 双精度加法
  4.     double db = 9 - 3.0; // 双精度减法
  5.     double dc = 9 * 2.5; // 双精度乘法
  6.     double dd = 9 / 3.0; // 双精度除法
  7.     double de = 9 % 4; // 双精度取余
  8.     System.out.println("整数的算术运算"); // 整数的加、减、乘、除和取余
  9.     System.out.printf("9+4=%d \n", 9 + 4);
  10.     System.out.printf("9-4=%d \n", 9 - 4);
  11.     System.out.printf("9*4=%d \n", 9 * 4);
  12.     System.out.printf("9/4=%d \n", 9 / 4);
  13.     System.out.printf("9%%4=%d \n", 9 % 4);
  14.     System.out.println("\n浮点数的算术运算"); // 浮点数的加、减、乘、除和取余
  15.     System.out.printf("9+4.5f=%f \n", 9 + 4.5f);
  16.     System.out.printf("9-3.0f=%f \n", 9 - 3.0f);
  17.     System.out.printf("9*2.5f=%f \n", 9 * 2.5f);
  18.     System.out.printf("9/3.0f=%f \n", 9 / 3.0f);
  19.     System.out.printf("9%%4=%f \n", f1);
  20.     System.out.println("\n双精度数的算术运算"); // 双精度数的加、减、乘、除和取余
  21.     System.out.printf("9+4.5=%4.16f \n", da);
  22.     System.out.printf("9-3.0=%4.16f \n", db);
  23.     System.out.printf("9*2.5=%4.16f \n", dc);
  24.     System.out.printf("9/3.0=%4.16f \n", dd);
  25.     System.out.printf("9%%4=%4.16f \n", de);
  26.     System.out.println("\n字符的算术运算"); // 对字符的加法和减法
  27.     System.out.printf("'A'+32=%d \n", 'A' + 32);
  28.     System.out.printf("'A'+32=%c \n", 'A' + 32);
  29.     System.out.printf("'a'-'B'=%d \n", 'a' - 'B');
  30. }
保存文件并运行,输出的结果如下所示。
整数的算术运算
9+4=13
9-4=5
9*4=36
9/4=2
9%4=1

浮点数的算术运算
9+4.5f=13.500000
9-3.0f=6.000000
9*2.5f=22.500000
9/3.0f=3.000000
9%4=1.000000

双精度数的算术运算
9+4.5=13.5000000000000000
9-3.0=6.0000000000000000
9*2.5=22.5000000000000000
9/3.0=3.0000000000000000
9%4=1.0000000000000000

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

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

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

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

算术赋值运算符

算术赋值运算符只是一种简写,一般用于变量自身的变化,具体说明参见表 3。

表 3 算术赋值运算
运 算 符名 称例 子
+= 加赋值 a += b、a += b+3
-= 减赋值 a -= b
*= 乘赋值 a *= b
/= 除赋值 a /= b
%= 取余赋值 a %= b
示例代码如下:
  1. int a = 1;
  2. int b = 2;
  3. a += b; // 相当于 a = a + b
  4. System.out.println(a);
  5. a += b + 3; // 相当于 a = a + b + 3
  6. System.out.println(a);
  7. a -= b; // 相当于 a = a - b
  8. System.out.println(a);
  9. a *= b; // 相当于 a=a*b
  10. System.out.println(a);
  11. a /= b; // 相当于 a=a/b
  12. System.out.println(a);
  13. a %= b; // 相当于 a=a%b
  14. System.out.println(a);
运行结果如下图所示:
算术赋值运算符运行结果
图 2  运行结果
上述例子分别对整型进行了+=、-=、*=、/= 和 %= 运算,具体语句不再赘述。

标签:Java,运算,算术,System,运算符,3.3,printf,out
From: https://www.cnblogs.com/szmtjs10/p/17704795.html

相关文章

  • 无涯教程-JavaScript - XOR函数
    描述XOR函数返回所有参数的逻辑异或。如果所提供条件的奇数判断为TRUE,则XOR函数返回TRUE,否则返回FALSE。语法XOR(logical1,[logical2],…)争论Argument描述Required/Optionallogical1logical1isrequiredandsubsequentlogicalvaluesareoptional.1to254c......
  • java 发行
    oracle17版本:JavaDownloads|OracleAdoptOpenJDK:https://adoptium.net/zh-CN/download/华为JDK:https://www.hikunpeng.com/developer/devkit/compiler/jdkAlibabaDragonwell,阿里巴巴版jdk......
  • 无涯教程-JavaScript - TRUE函数
    描述TRUE函数返回逻辑值TRUE。YoucanusethisfunctionwhenyouwanttoreturnthevalueTRUEbasedonacondition.Example=IF(A1=1,TRUE()).YoucanalsoenterthevalueTRUEdirectlyintocellsandformulaswithoutusingthisfunction.Example=IF(A1=1,T......
  • 基于java的在线考试系统的设计-计算机毕业设计源码+LW文档
    摘要随着信息技术的发展,管理系统越来越成熟,各种企事业单位使用各种类型的管理系统来提高工作效率,从而降低手工操作的弊端。我国政府一直以来都非常重视高校教育的发展,近几年来高校学生人数逐渐增加,对在线考试的需求越来越多。因此,通过开发基于java的在线考试系统来提高学习效率,增......
  • java分布式特点_java分布式架构是什么?分布式架构的优缺点有哪些?
    作为目前互联网最流行的技术之一,分布式是当仁不让的,小伙伴们都了解什么是分布式架构吗?它的优缺点又有哪些呢?快听小编为你介绍介绍吧。一、什么是分布式架构?分布式概念要想理解什么是分布式,我们一定要知道以下这些性质:1)、首先,一个分布式系统它一定是由多个节点组成的系......
  • JavaWeb
    JavaWebB/S架构说明![韩顺平Java工程师课程-JavaWeb](img/韩顺平Java工程师课程-JavaWeb.jpg)html字符实体<:&lt大于号:&gt空格&nbsp可以去查常用字符一览表超链接标签<!--target:重新开一个页面--><ahref=""target="_blank"></a>表格<tableborder......
  • java基础
    java基础常量缓存池Integerinteger=newInteger(18);Integerinteger1=newInteger(18);Integerinteger2=Integer.valueOf(18);Integerinteger3=Integer.valueOf(18);//falseSystem.out.println(integer==i......
  • Java_IO流
    基础知识文件在java程序中是以流的形式来操作的。文件获取文件信息file.getName()//文件名.getAbsolutePath()//绝对目录.getParent()//父目录.length()//大小(字节).exists()//存在.isFile()//是不是一个文件.isDirectory();//是不是一个目录......
  • JavaWeb综合案例(黑马程序员2023年JavaWeb课程总结,所有功能均实现,包含数据库sql文件)
    JavaWeb综合案例(黑马程序员2023年JavaWeb课程总结,所有功能均实现,包含数据库sql文件)1.案例介绍:1.前端:Vue.js+element-ui+ajax(axios)+html2.后端:maven+mybatis+servlet 2.项目结构: 3.BrandMapper接口类 packagecom.itheima.mapper;   impor......
  • JavaWeb专栏之(三):Eclipse创建JavaWeb项目
    JavaWeb专栏之(三):Eclipse创建JavaWeb项目前言:关注:《遇见小Du说》微信公众号,分享更多Java知识,不负每一次相遇。更多内容请访问:www.dushunchang.top在上一篇文章中,小Du猿带大家使用Idea创建JavaWeb项目,相比之下Idea作为当前非常主流的开发IDE,深受Java后端程序员使用。市面上约......