zlbingo

Java初学之运算符

  • 使用+,-,*,/表示加减乘除, %为取余

  • 当参与/运算的两个操作数都是整数时,表示整数除法,否则为浮点除法

    int paperWidth = 5;
    int paperHeight = 2;
    System.out.println(paperWidth / paperHeight);  // 2
    
    double paperWidth = 5;
    int paperHeight = 2;
    System.out.println(paperWidth / paperHeight);  // 2.5
    
    double paperWidth = 5.0;
    int paperHeight = 2;
    System.out.println(paperWidth / paperHeight);  // 2.5
    
  • 整数除以0会产生异常,浮点数除以0会得到无穷大或者NaN

    public class FirstSample
    {
    
        public static void main(String[] args)
        {
            double paperWidth = 1.0;
            int paperHeight = 0;
            System.out.println(paperWidth / paperHeight);
        }
    }
    

    Infinity

    public class FirstSample
    {
    
        public static void main(String[] args)
        {
            int paperWidth = 1;
            int paperHeight = 0;
            System.out.println(paperWidth / paperHeight);
        }
    }
    
    

    Exception in thread "main" java.lang.ArithmeticException: / by zero
    at FirstSample.main(FirstSample.java:8)

数学函数与常量

函数 方法
平方根 Math.sqrt(x);
幂运算 Math.pow(x, a);
以10为底的指数 Math
以10为底的对数

数值类型之间的转换

image-20220214201549753

  • 实心箭头表示无信息丢失的转换

  • 虚箭头表示可能有精度损失的转换

    public class FirstSample
    
    {
    
        public static void main(String[] args)
        {
            int n = 123456789;
            float f = n;
            System.out.println(f);
        }
    }
    // 1.23456792E8
    

二元操作的数据自动转换

  • 如果两个操作数中有一个是double 类型, 另一个操作数就会转换为double类型。
  • 否则, 如果其中一个操作数是float 类型, 另一个操作数将会转换为float类型。
  • 否则, 如果其中一个操作数是long 类型, 另一个操作数将会转换为long类型。
  • 否则, 两个操作数都将被转换为int 类型。

强制类型转换(cast)

double x = 9.997;
int nx = (int) x; // 9
  • Math.round对浮点数进行舍人运算, 以便得到最接近的整数

    double x = 9.997;
    int nx = (int) Math.round(x); // 10
    
    • 由于round方法返回的结果为long 类型,由于存在信息丢失的可能性, 所以只有使用显式的强制类型转换才能够将long 类型转换成int 类型。

结合赋值和运算符

  • 使用方法

x += 4 // 等价于 x = x + 4
```

  • 如果运算符得到的值类型与左侧操作数的类型不同,就会发生强制类型转换

    int x = 1;
    x += 1.5; // 2,相当于x = (int)(x+ 3.5)
    

自增与自减运算符

  • 基本使用

    int n = 12;
    n++ //13
    
  • 自增与自减会有前缀和后缀形式

    • 前缀形式会先完成加1

    • 后缀形式会使用变量原来的值

      int m = 7;
      int n = 7;
      int a = 2 * ++m; // now a is 16, m is 8
      int b = 2 * n++; // now b is 14, n is 8
      

分类:

技术点:

相关文章: