算术运算符

Java中的算术运算符主要有+(加号)、—(减号)、*(乘号)、/(除号)、%(求余),它们都是二元运算符。Java中算术运算符的功能及使用方式如表1所示。

1        Java算术运算符

运算符

说明

实例

结果

+

12.45f+15

27.45

-

4.56-0.16

4.4

*

5*12

60

/

7/2

3

%

取余数

12%10

2

其中“+”和“-”运算符还可以作为数据的正负符号,例如+5-7

下面通过一个小程序来介绍使用算术运算符的方法。

  项目中创建类Arith,在主方法中定义变量,使用算术运算符将变量的计算结果输出。

public class Arith {                                                                      //创建类

      public static void main(String[] args) {                                    //主方法

            float number1 = 45.56f;                                                   //声明float型变量并赋值

            int number2 = 152;                                                          //声明int型变量并赋值

            System.out.println("和为:" + number1 + number2);           //将变量相加之和输出

            System.out.println("差为:" + (number2 - number1));         //将变量相减之差输出

            System.out.println("积为:" + number1 * number2);          //将变量相乘的积输出

            System.out.println("商为:" + number1 / number2);            //将变量相除的商输出

      }

}

运行结果如图1所示。

       1  运行结果

 

在应用算术运算符时,可以分为对整型数据的运算和对浮点型数据的运算,下面进行详细介绍。

1.整型数据的算术运算

整型数据的“+”、“-”、“*”、的运算与数学中的运算相同,这里不再介绍,下面介绍整型数据间的“/”和“%”运算。

l         整数的除法(运算符“/”)运算

当整数间进行除法运算时,其结果将舍弃小数部分,并且忽略四舍五入,最终的结果为商的整数部分,所以通过计算机来计算“5/3*3与“5*3/3”的结果是不同的,前者为3,而后者为5

  项目中创建类Arith1,在主方法中定义变量,使用“/”运算符进行除法运算,并输出计算结果。

public class Arith1 {

 

      public static void main(String[] args) {       // 主方法

            int i1 = 7 / 3;                                      // 在数学计算中其结果约为2.33

            int i2 = 11 / 3;                                    // 在数学计算中其结果约为3.67

            int i3 = -7 / 2;                                     // 在数学计算中其结果为-3.5

            int i4 = 0 / 9;

            System.out.println("7/3=" + i1);            // 输出结果为:2

            System.out.println("11/3=" + i2);           // 输出结果为:3

            System.out.println("-7/2=" + i3);            // 输出结果为:-3

            System.out.println("0/9=" + i4);            // 输出结果为:0

      }

}

运行结果如图2所示。

       2  运行结果

l         整数的求余(运算符“%”)运算

当整数间进行求余运算时,其运算结果为整数除法运算后的余数。

  项目中创建类Arith2,在主方法中定义变量,使用“%”运算符进行求余运算,并输出计算结果。

public class Arith2 {

 

      public static void main(String[] args) {                     // 主方法

            int i1=11%4;                                                    //结果为:3

            int i2=8%4;                                                      //结果为:0

            int i3=9%10;                                                    //结果为:9

            int i4=-7%3;                                                     //结果为:-1

            int i5=0%9;                                                      //结果为:0

            System.out.println("11%4="+i1);

            System.out.println("8%4="+i2);

            System.out.println("9%10="+i3);

            System.out.println("-7%3="+i4);

            System.out.println("0%9="+i5);

      }

}

运行结果如图3所示。

       3  运行结果

l         将一个整数除以0或除以0求余的运算

当进行一个整数除以0或除以0求余运算时,虽然可通过编译,但在运行时会抛出java.lang.ArithmeticException异常,例如:

public static void main(String[] args) {      // 主方法

      int i1=11/0;                                        //编译成功,但运行时抛出异常

      int i2=9%0;                                        //编译成功,但运行时抛出异常

      System.out.println(i1);

      System.out.println(i2);

}

以上代码运行时抛出如图4所示的异常。

       4  抛出的异常信息

 

2.浮点型数据的算术运算

浮点型数据同样可以应用算术运算符进行算术操作,同整型数据运算一样,运算结果的类型和参与计算中取值范围最大的数据的类型一致。如若存在double型的数据进行运算,则运算的结果为double型,否则若存在float型数据,那么结果就为float型。

当浮点型数据进行运算时,计算机计算出的小数点后的n位,与实际的数值会有一定的误差,它只能尽量地去接近实际值。

例如,计算float型数据4.0减去浮点型数据2.9的结果,在数学计算中该结果为1.1,但计算机计算出的结果只能尽量地去接近1.1

float f=4.0f-2.9f;

System.out.println(f);                         //输出结果为:1.0999999

注意在浮点型数据的算术运算中,若进行一个浮点型数据除以0或除以0求余的运算,在运行时并不会抛出异常,而会得到表示无穷大、无穷小或为NaN的特殊值:正浮点数除以0,结果为Infinity,表示无穷大;负浮点数除以0,结果为-Infinity表示无穷小;浮点数除以0求余,结果为NaN

  项目中创建类Arith3,在主方法中进行浮点型数据除以0或除以0求余的运算,并输出计算结果。

public class Arith3 {

 

      public static void main(String[] args) { // 主方法

            float f1=1.234f/0;                         //计算正浮点数除以0

            float f2=-5.678f/0;                        //计算负浮点数除以0

            float f3=1.234f%0;                       //计算正浮点数除以0求余

            float f4=-5.678f%0;                      //计算负浮点数除以0求余

            System.out.println(f1);                   //输出结果为:Infinity

            System.out.println(f2);                  //输出结果为:-Infinity

            System.out.println(f3);                  //输出结果为:NaN

            System.out.println(f4);                  //输出结果为:NaN

      }

}

运行结果如图5所示。

       5  运行结果