在Java学习中,有大概以下几种运算符:
基础运算符
基础运算符包括以下几种:
+(加法) -(减法) *(乘法) /(除法) %(取余)
代码演示: System.out.println(10 + 20); //30 System.out.println(10 - 20); //-10 System.out.println(10 * 20); //200 System.out.println(10 / 3); // 整数和整数计算的结果必须是整数 3 System.out.println(10 % 3); // 1 System.out.println(7 % 10); // 7 System.out.println(13 % 5); // 3
在Java中,整数运算的结果还是整数。
除法和取余:
相当于小学除法运算,在Java中,除法得到的结果相当于小学除法中的商,而取余得到的是除法运算的余数
字符的“+”操作
每个字符的底层其实就是一个数字,当字符进行加法运算的时候,结果就会变成一个数字。
除汉字之外,其他的字符的底层的数字都可以参考ASCII码表。
System.out.println('a' + 1); //98 'a' --> 97
System.out.println('A' + 1); //66 'A' --> 65
System.out.println('0' + 1); //49 '0' --> 48
System.out.println('我'+ 1); //25106 '我'--> 25105
字符串的“+”操作
字符串中出现加操作的时候就不再是加法运算,而是具有了拼接效果,字符串和任意类型连接都会变成一个更大的字符串。
System.out.println("黑马" + 66 + 6); //"黑马666"
System.out.println(99 + 1 + "黑马"); //"100黑马"
System.out.println("黑马" + (66 + 6)); //"黑马72"
// 10+20=30
System.out.println(10 + "+" + 20 + "=" + 30); // 10+20=30
如果数字相加在字符串前面,则先进行数字的加法运算,在进行字符串的连接,如果数字相加在字符串的后面,在进行的是字符串的连接操作【有括号先执行括号的内容】
赋值运算符
= += -= *= /= %=
a += 20; //相当于 a = a + 20;
a -= 20; //相当于 a = a - 20;
a *= 20; //相当于 a = a * 20;
a /= 20; //相当于 a = a / 20;
a %= 20; //相当于 a = a % 20;
自增自减运算符
++(给变量自身加一) --(给变量自身减一)
++前置:
++a;
先加一,后运算
后置++:
a++;
先运算,后加一
int a = 10;
//先把a的值赋值给b,然后a自身再加一
int b = a++;
System.out.println(a); //11
System.out.println(b); //10
int a = 10;
//先让a自身加一,然后再把a的值赋值给b
int b = ++a;
System.out.println(a); //11
System.out.println(b); //11
关系运算符
> < == != >= <=
关系运算符的结果一定是boolean类型。
=是赋值 ==是判断相等 ,千万不要把 == 写成 =
逻辑运算符
& :与
左右两端都是true,结果才是true,否则是false
| :或
左右两端都是false,结果才是false,否则是true
^ :异或
两边相同为false,两边不同为true
! :非
取反
int a = 10;
int b = 20;
//a++是后置,所以先运算后加一 10>10 false
//++b是前置,所以先加一后运算 21>20 true
System.out.println(a++>10 & ++b>20); // false&true --> false
//在执行这行之前a已经是11了,11>10 true
//在执行这行之前b已经是21了,21>21 false
System.out.println(a++>10 | b++>21); // true|false --> true
System.out.println(true ^ true); //false
System.out.println(false ^ true); //true
System.out.println(true ^ false); //true
System.out.println(false ^ false); //false
//!取反
System.out.println(!(a>20)); //true
System.out.println(!!(a>20)); //false
逻辑中断
&& :短路与
如果左边结果是false,右边就不会执行了。
|| :短路或
如果左边结果是true,右边就不会执行了。
int c = 10;
int d = 20;
//c++后置,10>10 false c变成11 右边不执行
System.out.println(c++>10 && ++d>20); //false
//++d前置,先变成21,21>21 false 11>10 true
System.out.println(++d>21 || c++>10); //true
System.out.println(c); //12
System.out.println(d); //21
三元运算符
格式:
数据类型 变量名 = 关系表达式 ? 表达式1 : 表达式2;
执行原理:
如果关系表达式是true,就把表达式1赋值给变量
如果关系表达式是false,就把表达式2赋值给变量
//求两个数字的较小值
int a = 10;
int b = 20;
int c = a > b ? b : a;
System.out.println(c); //10