一、算术运算符
种类:+ - * / %(取模)
注意:
整数相除结果只能是整数
如果想计算出小数, 必须要有浮点类型数据参数运算
算术运算符取余和除法的区别
/ 得到的是商
% 得到的余数
%运算符最常见的操作就是判断奇偶数.
因为任何一个数%2, 不是1, 就是0
字符和字符串参与加法操作
System.out.println('a' + 1); // 输出结果为98
当char类型再跟整数类型的数据进行运算的时候, 实际上是
先查找当前字符所对应的ASCII值
需要记住的3个ASCII值
'a' 97
'A' 65
'0' 48
注意: 字符串在与任意数据类型用+号串联的时候都会 ?
产生新的字符串
System.out.println(1 + 'a' + "hei hei hei" + 'a'); // 结果:98hei hei heia
例题:
定义一个int类型的变量,初始化值为123,求这个数的个位,十位,百位分别是多少,输出结果:123的个位是3,十位是2,百位是1
public class Task {
public static void main(String[] args) {
int i = 123;
int a = i/100;
int b = i/10%10;
int c = i%10;
System.out.println("个位:" + c);
System.out.println("十位:" + b);
System.out.println("百位:" + a);
}
}
二、算术运算符
应用:完成自身+1, 或者自身-1的操作.
++在后: 会现将变量原本所记录的值取出来进行操作, 然后再完成自身+1的运算
++在前: 先完成自身+1的运算, 然后再进行赋值.
int x = 4;
//括号1 : 现将x原本记录的4取出来 --> 4
//括号2 : 将上一次变化后的5, 再进行++在前的运算 --> 6
//括号3 : 60
int y = (x++)+(++x)+(x*10); // 70
int x = 10;
int y = x++; // y = 10, x=11
int z = ++x; // x = 12, z = 12
System.out.println(x);
System.out.println(y);
System.out.println(z);
三、赋值运算符
基本赋值运算符: = --> 将右边赋值给左边 --> 举例: int i = 10;
扩展赋值运算符: +=, -=, *=, /=, %=
理解: +=, 将左边两边的数据, 做加法运算, 然后将结果赋值给左边
short s=1;
s=s+1; //有问题, 需要强转
s+=1; //不报错的原因, 是因为+=运算符, 底层自动帮我们做了强转:s = (short)(s + 1);
四、比较运算符
种类:
>
<
>=
<=
==
!=
比较运算符, 无论简单还是复杂, 结果都必须是boolean类型.
=和==号的区别
=号是用于赋值的.
==号才是用于比较的.
五、三元运算符
(比较表达式) ? 值1 : 值2;
看比较表达式返回的结果是true还是false
true : 值1;
false : 值2;
int i = 10;
int i2 = 20;
boolean flag = (i == i2) ? true : false;
六、逻辑运算符
逻辑运算符用于链接boolean类型的表达式, 或者是值.
种类:
& : 与 --> 并且 --> 结论: 左边两边, 必须同时为true, 结果才为true
换句话说, 遇false, 则false.
int i = 10;
System.out.println(i > 5 & i < 20);
| : 或 --> 或者 --> 结论: 左右两边, 只要有一个为true, 结果就为true
换句话说, 遇true, 则true.
&& : 短路与 左边返回false的时候, 右边就不再执行了.
左边返回为true, 右边依旧执行.
|| : 短路或 左边返回true的时候, 右边就不再执行了.
! : 非 --> 取反 --> 特点: 非两次, 结果不变
^ 异或 : 相同为false, 不同为true
特点 :
一个数, 被另外一个数, 异或两次, 该数本身不变
10 ^ 6 ^ 6
&& & 有什么区别?
& : 无论左边返回的结果是true还是false, 右边都必须执行
&& : 左边返回false的时候, 右边就不再执行了.