介绍
算术运算符是对数值类型的变量进行运算的, 在 Java 程序中使用的非常多。
算术运算符一览:
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +7 | 7 |
- | 负号 | n1=11;-b | -11 |
+ | 加 | 2+2 | 4 |
- | 减 | 5-3 | 2 |
* | 乘 | 2*3 | 6 |
/ | 除 | 3/3 | 1 |
% | 取模(取余) | 11%9 | 2 |
++ | 自增(前):先运算后取值 | a=2;b=++a; | a=3;b=3 |
++ | 自增(后):先取值后运算 | a=2;b=a++; | a=3;b=2 |
– | 自减(前):先运算后取值 | a=2;b=--a; | a=1;b=1 |
– | 自减(后):先取值后运算 | a=2;b=a--; | a=1;b=2 |
+ | 字符串拼接 | “你”+“好” | 你好 |
说明
-
java中
%
的运算规则:
a为整数:a % b = a - a / b * b
a为小数:a % b = a - (int)a / b * b
-
小数参与运算,得到的结果是一个近似值。
代码演示
public static void main (String[] args) {
// 演示 /
System.out.println(10 / 4);// 2
System.out.println(10.0 / 4); // 2.5
double d1 = 10 / 4;
System.out.println(d1); // 2.0
System.out.println("========================");
// 演示 %
// java中 % 的运算规则:a % b = a - a / b * b
System.out.println(10 % 3); // 1
System.out.println(-10 % 3); // -1 -10 - (-10)/3 *3 =-10+9=-1
System.out.println(10 % -3); // 1 10 - 10/(-3) * (-3) = 10 - (-3)*(-3) = 10-9=1
System.out.println(-10 % -3); // -1 -10 - (-10)/(-3) * (-3) = -10 - 3*(-3) = -10 + 9 = -1
System.out.println("========================");
// 演示 ++
// ++ 独立运行,前++和后++没有区别
// 前++,先自增1,后赋值
int i = 10;
i++;
System.out.println(i); // 11
// 后++,先赋值,再自增1
int j = 10;
++j;
System.out.println(j); // 11
System.out.println("========================");
// ++ 连续运行,前++和后++有区别
int k = 10;
int m = k++; // 等价于 m = k; k = k + 1;
System.out.println("k=" + k + ", m=" + m); // k=11, m=10
int n = 10;
int p = ++n; // 等价于 n = n + 1; p = n;
System.out.println("n=" + n + ", p=" + p); // n=11, p=11
}
面试题,考察 前++ 和 后++
public static void main (String[] args) {
/**
* 经典面试题
* 前++ 和 后++
*/
System.out.println("==========1==============");
int i = 1;
i = i++; // 规则:使用临时变量 (1)temp = i; (2) i = i + 1; (3) i = temp
System.out.println(i); //1
int j = 1;
j = ++j; // 规则:使用临时变量 (1)j = j + 1;(2)temp = j; (3) j = temp
System.out.println(j); // 2
System.out.println("==========2==============");
int i1 = 10;
int i2 = 20;
int i3 = i1++;
System.out.println("i3="+i3); // 10
System.out.println("i2="+i2); // 20
i3 = --i2;
System.out.println("i3="+i3); // 19
System.out.println("i2="+i2); // 19
}
测试
public static void main (String[] args) {
/**
* 1. 假如还有59天放寒假,问:合xx个星期零xx天
* 2. 定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100) ,请求出华氏温度对应的摄氏温度 [234.5]
*/
System.out.println("==========1==============");
// 分析:
// 使用int days 变量保存天数
// 一个星期7天, 星期数:weeks=days/7 零几天:leftDays = days % 7
int days = 259;
int weeks = days / 7;
int leftDays = days % 7;
System.out.println(days + "天合 "+ weeks +"个星期零" + leftDays +"天");
System.out.println("==========2==============");
// 5/9*(华氏温度-100) 华氏温度234.5
// 分析:
// 使用 double fahrenheit 表示华氏温度
// 使用 double celsius 表示设施温度 = 5/9*(fahrenheit-100)
// 考虑数学公式和java语言特性,需要先算后面再算前面的 5 / 不然就 5/9为0了
// 输出对应的设施温度
double fahrenheit = 284.5;
double celsius =5 / (9 * (fahrenheit-100));
System.out.println("华氏温度:"+ fahrenheit +" 对应的摄氏温度为:"+ celsius+"度");
}
// 小数参与运算得到的结果是近似值
double result = -10.4 % 3;
System.out.println("-10.4 % 3 = " + result04);
结果:
-10.4 % 3 = -1.4000000000000004