1.四则运算 + - * /
2.取模 % (只要整数除法,取模运算符在有意义)
1.一旦运算中,有不同类型的数据,那么结果将会是数据范围大的那种。
double result1 = 2+ 2.5//==4.5
2.’+‘有2种用法
A 加法 (char会被提升为int,然后计算 )
B 对于字符串String()(首字母大写,并不是关键字),’+'代表字符串连接操作
String str1 = "Hello";
String str2 = "World";
System.out.println(str1+str2);//HelloWorld
System.out.println(str1+20);//Hello20
!!任何数据类型和字符串进行连接时,结果都会变成字符串
3.优先级问题
String + int + int
System.out.println(str1+20+30);//Hello2030
String +(int + int)
System.out.println(str1+(20+30));//Hello50
4.自增自减运算符 ++ –
使用格式: 写在变量之前或之后 num-- ++num
使用方法: 1.单独使用 2.混合使用
使用区别:
1.单独使用前++和后++没有区别。
2.混合使用时,前++和后++有很大区别
A.前++ ,先+1,再拿结果使用
B.后++,先使用变量本来的数值,然后在+1
int num1 = 20;
System.out.println(++nmu1);//21 num1==21
int num2 = 20;
System.out.println(nmu2++);//20 num2==21
tip: 只有变量能够使用自增自减运算符,常量不可使用。
基本赋值运算符“=”和复合赋值运算符’+=’ ‘-=’ ‘*=’ ‘/=’ ‘%=’
+= a += 1--> a = a + 1;
-= b -= 3--> b = b - 3;
*= c *= 3--> c = c * 3;
/= d /= 3--> d = d / 3;
%= e %= 3--> e = e % 3;
byte num = 30;
num += 5;
// num = num +5
//byte + int -->int + int -->int
//num = int
// num = (byte) num
//编译器会帮你强制转换
tip:复合赋值运算符隐含了一个强制转换
== 是否相等
< 是否小于
> 是否大于
<= 是否小于等于
>= 是否大于等于
!= 是否不等于
tip:
1 比较运算符的结果一定是一个boolean值(true&false)
2 如果进行多次判断,不能连着写(e.g. 1 < x < 3 错误)
与 && 两个条件同时满足--> true
或 || 两个条件只要有一个满足-->true
非 ! 本来是true,就变成false
&& and || 有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将会不在执行,从而节省性能。
int a = 10;
System.out.println(3 > 4 && ++a < 100);//false
System.out.println(a); //10 而不是11
int b = 10;
System.out.println(3 < 4 || ++b < 100);//true
System.out.println(b); //10 而不是11,因为或运算前半已经成立,后半就不在执行
tip:与 或两种运算符,如果有多个条件可以连续写。
条件A && 条件B && 条件C
一元运算符 是需要一个数据/变量就可以进行操作的运算符。 e.g. ! ++ --
二元运算符 是需要两个数据/变量才可以进行操作的运算符。 e.g. + =
三元运算符 是需要三个数据/变量才可以进行操作的运算符
格式: 数据类型 变量名 = 条件判断 ? 表达式1 : 表达式2
判断条件是否成立
成立-->将表达式1的值赋值给左侧的变量
不成立-->将表达式2的值赋值给左侧的变量
int max = a > b ? a : b
tip:1.必须同时保证表达式1和表达式2的结果符合左侧数据类型的要求
int result = 3 > 4 ? 2.5 : 6;//报错 不管两个表达式最终哪个成立
2.三元运算符的结果必须被使用
System.out.println(a > b ? a:b);//正确
a > b ? a:b;//错误