1)运算符:
算数运算符:+ - * /加减乘除 %取模 ++自增 --自减
注意:
1.对于以一个整数的表达式来说,除数用的是整除,整数除以整数结果仍然是整数,只看商不看余数
2.对于取模运算,只有对于整数的除法来说,取模运算符才有余数的意义 小数除以小数还是小数没有取模的意义了
3.一旦运算当中有不同类型的数据,结果是数据类型范围大的呢种
double result=10+2.5(int+double-->double+double=double)
4.注意 byte short/char运算时都会先提升为int再计算
2)加号的多种用法
优先级问题中 小括号中的优先级最高!
3.自增自减运算
num1++;//单独使用 这里是单独使用 没有与打印混合使用
++num1;//单独使用
//混合使用时,有重大区别
// 这里的混合使用比如与打印混合 System.out.println(++num1);
//与赋值混合 int num =num1++;
//前++ 立刻马上加1 拿着结果使用 ++num 先加后用
//后++ 先使用数值 再加1 num++ 先用后加
//注意 只有变量才能使用自增自减 常量不能发生改变 30++是错误的
public class Demo02sum {
public static void main(String[] args) {
int num1=10;
num1++;//单独使用 这里是单独使用 没有与打印混合使用
++num1;//单独使用
System.out.println(num1);
System.out.println("==================");
//混合使用时,有重大区别
// 这里的混合使用比如与打印混合 System.out.println(++num1);
//与赋值混合 int num =num1++;
//前++ 立刻马上加1 拿着结果使用 ++num 先加后用
//后++ 先使用数值 再加1 num++ 先用后加
//注意 只有变量才能使用自增自减 常量不能发生改变 30++是错误的
int sum2=20;
System.out.println(++sum2); //21
System.out.println(sum2);//21
System.out.println(sum2++);//21
System.out.println(sum2);//22
int sum3=sum2++;
System.out.println(sum3); //22
System.out.println(sum2); //23
int sum4=sum2++ + --sum3; //23+21
System.out.println(sum4); //44
}
3.赋值运算符 =
复合赋值运算符 而且给a重新赋值了 += a+=1 相当于==> a=a+1 -= *= /= a/3 a=a/3 %= a%2 a=a&2 注意: 只有变量能使用赋值运算符 常量不能使用赋值运算符 复合赋值运算符其中隐含了一个强制类型转换 byte num =5; num+=5; num =byte +int num =int +int sout num //10
4.比较运算符
一个=是赋值运算符
System.out.println(10>5); //true
System.out.println(num>5); //true
比较运算符注意事项:
1.比较运算符的结果一定是一个boolea值 成立是true 不成立是false
2.如果进行多次判断,不能连着写 不允许 1<x<3
System.out.println(1<2<3); //报错
5.逻辑运算符 :
与&& 全都是true才是true 乘
System.out.println(true&&false); //false
或|| 至少有一个true就是true 全是false才是false 加
System.out.println(3<4||3>4);//true
非! 取反
注意事项:
1.逻辑运算符只能用于boolean值 能判断比较运算符是因为比较运算符就是boolean值
2. && || 具有短路效果 如果根据左边已经可以判断结果 呢么右边的代码不再执行 比如如果&&左边是false 则直接false 例如||中 左边第一个是true 则直接是true 就不用判断右边了
3.与 或 两种运算符如果有多个条件 可以连着写
int num=10; System.out.println(3>4&& ++num<100); //右边++没有执行 System.out.println(num);//10
6.三元运算符
流程:首先判断条件是否成立
如果成立true 呢么表达式A(冒号左边)赋值给左侧的变量;
如果不成立 false 呢么表达式B赋值给左侧的变量;
int a =10; int b =20; int max= a>b ? a:b ;//20 System.out.println(max+"+最大值"); //20+最大值
int max= a>b ? 300:100 ; //注意这里问好后面不一定是 a b 也可以自己写 但是要注意数据类型int System.out.println(max+"+最大值"); //100+最大值
注意事项:
1.必须同时保证表达式A和表达式B都符合左侧数据类型的要求
int max= a>b ? 2.5:100 ; //报错
但是如果直接打印是例外
System.out.println(10>20?2.5:10); //10.0
2.三元运算符的结果必须被使用
a>b ? a:b ; //这样不使用的话直接报错