算术运算符主要用于整型或浮点型数据的运算
运算符 | 用法 | 含义 | 结合性 | |
---|---|---|---|---|
二元运算符 | + | op1+op2 | 加法 | 左 |
二元运算符 | – | op1 – op2 | 减法 | 左 |
二元运算符 | ∗ | op1∗op2 | 乘法 | 左 |
二元运算符 | / | op1/op2 | 除法 | 左 |
二元运算符 | % | op1%op2 | 模运算(求余) | 左 |
一元 运算符 | + | +op1 | 正数 | 右 |
一元 运算符 | – | – op1 | 负数 | 右 |
一元 运算符 | ++ | ++op1,op1++ | 自增 | 右,左 |
一元 运算符 | – – | – – op1,op1++ | 自减 | 右,左 |
(1)对 于 二 元 运 算 符 ,运 算 结 果 的 数 据 类 型 一 般 为 两 个 操 作 数 中 表 达 范 围 较 大 的 类 型 .
例如,一个整数和浮点数运算的结果为浮点数.
(2)对 于 一 元 运 算 符 ,运 算 结 果 的 类 型 与 操 作 数 的 类 型 相 同 .
(3)自 增 、自 减 运 算 符 有 前 缀 和 后 缀 两 种 形 式 ,当 是 前 缀 形 式(即 + + 、- - 符 号 出 现 在 变 量 的 左 侧)时 ,对 变 量 实 施 的 运 算 规 则 是“先 运 算 后 使 用”;当 是 后 缀 形 式 (即 + + 、- - 符 号 出 现 在 变 量 的 右 侧)时,对 变 量 实 施 的 运 算 规 则 是“先 使 用 后 运 算”.
(1)在Java中 ,%(求 模 运 算 符)的 操 作 数 可 为 浮 点 数 ,如 52.3%10=2.3.
(2)Java对 + 运 算 进 行 了 扩 展 ,可 作 字 符 串 连 接 运 算 符 ,如"ab"+"efd"得"abefd".
(3)做 + 运 算 时,如 果 一 个 操 作 数 是 字 符 串,其 他 操 作 数 自 动 转 换 成 字 符 串,例 如 :
String s; s="s:"+6∗5;//结果是s="s:30"
(4)byte、short和 char等 类 型 进 行 混 合 运 算 时 ,会 先 自 动 转 换 为int类 型 再 运 算
package code 02;
public class TestOperator{
public static void main(String[]args){
int i=29;
int j=3;
float a=23.5f;
double b=4.0;
System.out.println("i+a="+(i+a)); //整数与浮点数相加
System.out.println("i∗j="+(i*j)); //两个整数相乘
System.out.println("i/j="+(i/j)); //对于整数,运算结果为整数
System.out.println("i%j="+(i%j)); //求余数
System.out.println("a∗b="+(a*b)); //两个浮点数相乘
System.out.println("a/b="+(a/b)); //对于浮点数,运算结果为浮点数
System.out.println("a%b="+(a%b)); //浮点数求余,结果为浮点数
System.out.println("i++="+(i++)); //先使用,后自增
System.out.println("++i="+(++i)); //先自增,后使用
}
}
程序的输出结果如下:
i+a=52.5
i∗j=87
i/j=9
i%j=2
a∗b=94.0
a/b=5.875
a%b=3.5
i++=29
++i=31
在打印输出语句中,+除了可以进行整型或浮点数的加法运算外,还可以进行字
符串的连接,可以把字符串和数值类型在一起进行运算,最后转换为字符串
int i,j;
i=10;
j=i+20
在赋值运算符=前面加上其他运算符,即构成扩展赋值运算符
a+=5; 等价于 a=a+5;
a*=b+5; 等价于 a=a*(b+5);
常见的扩展赋值运算符:
运算符 | 示例 | 含义 |
---|---|---|
+ = | a+=3 | a=a+3 |
– = | a–=3 | a=a–3 |
* = | a*=3 | a=a*3 |
/ = | a/=3 | a=a/3 |
% = | a%=3 | a=a%3 |
如果变量的类型和表达式的类型是相同的就可以赋值,称为类型相同;如果两者类型不 同,并且变量类型比表达式类型长时,系统会自动将表达式的结果转换为较长的类型。如 int 转 换 为long,这 时 也 可 以 赋 值,称 为 赋 值 相 容。例 如 :
long value=98L;//类型相同
long value2=4;//int向long自动转换,赋值相容
如 果 变 量 类 型 比 表 达 式 类 型 短 ,则 赋 值 不 兼 容 ,编 译 时 产 生“可 能 存 在 的 精 度 丢 失”的 错 误。例如:
int i=99L;//不能把long数据赋值给int型变量
赋值不兼容时,可以使用强制类型转换
int i=(int)123123123123L;//强制类型转换
注:强制类型转换可能会发生精度丢失
(boolean_expr)?true_statement:false_statement;
其 含 义 为 :若 boolean_expr 为 真 ,则 执 行 语 句true_satatement;若 boolean_expr为 假 ,则 执 行语句false_statement,而且两条语句需要返回相同(相容)的数据类型.true_statement 和false_statement都 需 要 有 返 回 值
int result=sum==0?100:2∗ num;//如果sum等于0,则result赋值为100,否则赋值为2∗num.
条 件 运 算 符 可 以 替 代 简 单 的 if-else语 句
Java提供位操作运算符。所 有 的 数 在Java虚 拟 机 中 都 会 转 换 为 补 码 二 进 制 表 示
如:整数1表 示 为 补 码 二 进 制 为 00000000 00000000 00000000 00000001(4个字节)
整 数-1 表 示 为 补 码 二 进 制 为11111111 11111111 11111111 11111111(4个字节)
位运算不是对整个数进行运算,而是对该数的二进制位上的0或1进行运算