运 算 符-算术运算符

算术运算符包括:+-*/%++--

+

当左右两边都是数值型时,则做加法运算。

当左右两边有一方为字符串,则做拼接运算。任何一个 Java 对象都可以转换为字符串。

如果 + 作用于字符,就将字符转为整数进行计算。

程序示例:

public static void main(String[] args) {
    System.out.println(100 + 86);                // 186
    System.out.println("100" + 86);              // 10086
    System.out.println(100 + 3 + "Hello");       // 103Hello
    System.out.println("Hello" + 100 + 3);       // Hello1003
    System.out.println(3.7 + "hello");           // 3.7hello
    System.out.println("abc" + true);            // abctrue
    System.out.println('中' + "abc" + true);     // 中abctrue
    System.out.println('a' + 'b');               // 195
    System.out.println('a' + "b");               // ab
}

代码 System.out.println(100 + 3 + "Hello"); 中,加法从右到左依次进行。

程序示例:

public static void main(String[] args) {
    String s1 = "天龙八部";
    String s2 = "笑傲江湖";
    String s3 = s1 + s2;
    System.out.println(s3); // 天龙八部笑傲江湖

    char ch1 = '男';
    char ch2 = '女';
    // char ch3 = ch1 + ch2; // Type mismatch: cannot convert from int to char
    System.out.println(ch1 + ch2); // 52906

    double num1 = 123.56;
    double num2 = 100.11;
    double num3 = num1 + num2;
    System.out.println(num3); // 223.67000000000002
}

/

除法分为整数除法和浮点数除法。当两个操作数都是整数时,执行整数除法,否则执行浮点数除法。

两个整数相除,即便除不尽,小数部分也会直接丢弃而不是四舍五入。浮点数参与除法运算,即便数学上能除得尽,结果也是浮点数。

程序示例:

public static void main(String[] args) {
    // 两个整数相除,即便除不尽,小数部分也会直接丢弃而不是四舍五入
    System.out.println(10 / 4);         // 2
    double num1 = 10 / 4;
    int num2 = 10 / 4;
    System.out.println(num1);           // 2.0
    System.out.println(num2);           // 2
    // 浮点数参与除法运算,即便数学上能除得尽,结果也是浮点数
    System.out.println(8.0 / 4);        // 2.0
    double num3 = 8.0;
    int num4 = 4;
    double num5 = num3 / num4;
    System.out.println(num5);           // 2.0
    // int num6 = num3 / num4; // Type mismatch: cannot convert from double to int
}

整数被 0 除将产生一个异常,而浮点数被 0 除将会得到一个无穷大或 NaN 结果。

程序示例:

// 整数被 0 除将产生一个异常,而浮点数被 0 除将会得到一个无穷大或 NaN 结果
public class DivideDemo {
    public static void main(String[] args) {
        // System.out.println(10 / 0);  // Exception in thread "main" java.lang.ArithmeticException: / by zero
        System.out.println(10.0 / 0);   // Infinity
        System.out.println(-10.0 / 0);  // -Infinity
        System.out.println(0.0 / 0);    // NaN
        System.out.println(-0.0 / 0);   // NaN
        System.out.println(0.0 / 0.0);  // NaN
        System.out.println(0 / 0.0);    // NaN
    }
}

%

% 作用于整数时,取模的结果的正负号和第一个运算数相同。

% 作用于整数时的结果根据公式计算:a % b = a - a / b * b

程序示例:

public static void main(String[] args) {
    System.out.println(10 % 3);         // 1
    System.out.println(-10 % 3);        // -1
    System.out.println(10 % (-3));      // 1 , -3 可以不要括号
    System.out.println(-10 % (-3));     // -1 , -3 可以不要括号
}

程序示例:

public static void main(String[] args) {
    int all_days = 59;
    int weeks = 59 / 7;
    int days = 59 % 7;
    System.out.println(all_days + " 天等于 " + weeks + " 星期 " + days + " 天.");  // 59 天等于 8 星期 3 天.
}

% 可以作用于浮点数。

如果 a % b 中的 a 是浮点数,那么 a % b = a - (int)a / b * b

程序示例:

System.out.println(-10.5 % 3); // -1.5
System.out.println(10.5 % -3); // 1.5
System.out.println(-10.4 % 3); // -1.4000000000000004 , 说明结果可能是一个近似值

++

语句 ++i;i++; 独立使用时,效果和 i = i + 1; 完全一致。

程序示例:

public class ArithmeticOperatorExcercise01 {
    public static void main(String[] args) {
        int i = 1;
        i = i++; // temp = i; i = i + 1; i = temp;
        System.out.println(i); // 1
        int j = 1;
        j = ++j; // j = j + 1; temp = j; j = temp;
        System.out.println(j); // 2
    }
}

很多程序员认为前缀和后缀这种行为容易让人困惑。在 Java 中,很少在表达式中使用 ++--

上一篇:智能电网与微电网:引领电力未来的创新力量


下一篇:Qt Creator常用的快捷键和常用功能