算数运算符
+ 相加 字符串的连接 正数
- 相减 负数
* 相乘
/ 相除 10 / 3 ==》 3 两个操作数中精度最高的是int 结果也是int
% 取模(求余)
++ 自增
-- 自减
++ 和 -- 只能够用在变量上面,不能够用在常量
a = i++:先将i的值赋给a,再自增1 a = ++i;先自增1,再将i的值赋值给a
特殊:1/0 报异常(运行报错)
1/0.0 infinity(无限大)在java中0.0不为0,而是无限接近于0的数
0.0/0.0 NaN(不是一个数字)
a = NaN if(a==a)为false(java中唯一一个自己不等于自己的特例)
赋值运算符:
=,+=,-=, *=,/=, %=
byte a = 3; a = a+5 会出现错误:a+5是一个int了类型(byte,short,char在参与运算时会自动提升为int)
a += 5;正确
比较运算符
== 判断是否相等
>,<, >=, <=,!=
------> 运行结果都是布尔值
> < <= >= 只能够是数字之间才可以运用
== != 可以使任意的类型
逻辑运算
& 逻辑与 效果相当于 and 并且 同时为true 结果才是true
| 逻辑或 效果相当于 or 或者 只要有一个为true 结果true
&& 逻辑双与 效果相当于 and 并且
|| 逻辑双或 效果相当于 or 或者
^ 异或
! 逻辑非
① 逻辑运算的结果是一个布尔值
② 参与逻辑运算的都是布尔值(或者说结果为布尔值的表达式)
一元
int i = 1; i++
二元
3 + 4
表达式: 由一些常量 变量 运算符组成的一个算式
int a = 10;
double d = 3.14;
a + d * (110 - 100)
----->写这样的表达式的目的? 希望得到一个结果值
表达式的值的类型 是整个表达式中精度最高的
三元运算
格式:
X ? Y : Z
① 把 X ? Y : Z 看成是一个表达式 ----》 关注结果值
② X 可以是一个布尔值,或者是一个结果值为布尔类型的表达式;
③ Y 和 Z 都是整个表达式的结果值
Y 或者 Z 可能是一个常量值,也可能是一个变量,还可能是一个表达式
④ 如果 X的值是true ,那么整个三元运算表达式的值就是 Y的值;
如果 X的值是false ,那么整个三元运算表达式的值就是 Z的值;
⑤ ? r = X ? Y : Z ----> Y Z 的类型必须一致
对于优先级在java中都可以使用括号解决,所以不必在意优先级。
选择语句
①
if(条件){
// 如果条件的值为true 则执行一次这一对大括号中的所有代码,否则就不执行
}
if(条件){
// 如果条件的值为true 则执行一次这一对大括号中的所有代码,否则就不执行
}else{
// 如果条件的值为false 则执行一次这一对大括号中的所有代码,否则就不执行
}
if(条件1){
// 如果条件的值为true 则执行一次这一对大括号中的所有代码,否则就不执行
}else if(条件2){
// 如果条件的值为true 则执行一次这一对大括号中的所有代码,否则就不执行
}else if(条件3){
// 如果条件的值为true 则执行一次这一对大括号中的所有代码,否则就不执行
}else{
}
---------------------------------------------
② switch
switch(变量){
case 变量可能的值1 :
// 功能执行语句;
break;
case 变量可能的值2 :
// 功能执行语句;
break;
....
default:
// 功能执行语句;
break;
}
注意事项:
① 执行顺序会从switch中的先找case 进行匹配,
如果找到了就执行其中的代码,执行完毕遇到break就结束整个switch;
如果所有的case都不匹配才执行default
② switch中的 多个case和default的顺序可以是任意的;
但是在实际开发中建议 安装case的值大小进行排列,然后default写在最后;
③ break; 从匹配的开始开始,到第一个break之间的的其它的case不会判断而是执行所有的功能执行语句,如果后面都没有break,就到整个switch结束
④ case后面的值类型必须和swtich()中的变量的类型一致
⑤ switch中()中的变量的类型支持哪些?
java5之前 byte short char int
java5开始 枚举(enum) 在面相对象的时候
java7开始 String