一、运算符
1.算数运算符:+ ,- ,* , / , % , ++ , --
注1:当遇到++放在后面时,先取值赋值,再递增。
例如:int i1 = 10, i2 = 20;
int i = (i2++);应先取i2的值赋值给i,然后i2再递增。
注2:当遇到++放前面的时候,先递增,再做运算。
例如:int i1 = 10, i2 = 20;
int i = (++i2);先将i2递增,再赋值给i。i1 = 21, i2 = 21;
注3:遇到--放前面或放后面时,规则如上;
2.关系运算符:> , < , >= , <= , = = , |=
3.逻辑运算符:! , & , | , ^ , && , ||
逻辑运算符:!——逻辑非,&——逻辑与,|——逻辑或,^——逻辑异或,&&——短路与,||——短路或。
如图:
例如:
public class Test{
public static void main(string []args){
int i = 1,j = 2
boolean fiag1 = (i>3)&&((i+j)>5);
//第二个操作数将不再计算(当第一个操作数i=1<3已经为false,不管后面结果是什么都是false)
boolean fian2 = (i<2)||((i+j)<6);
//第二个操作数将不再计算(当第一个操作数i=2≮2已经为true,不管后面结果是什么都是true)
}
}
注:如果是逻辑与和逻辑或的话,不管前面结果是什么,后面一定会计算。
4.位运算符:& , | , ^ , ~ , >> , << , >>>
5.赋值运算符:=
(1)当“=”两侧数据类型不一致时,可以适用默认类型转换或使用强制类型转换,原则进行处理:
long l = 100; int i = (int)l;
(2)注意:可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围。
正确:byte b = 12; char c = 100;
错误:byte bb = 256(byte最大范围值为127); short s = -32769(short最小范围值为-32768);
6.扩展赋值运算符:+ =,- =,* =,/ =
7.字符串连接运算符:+
(1)“+”除用于算数加法运算外,还可用于对字符串进行连接操作。
如:int id = 800 + 90;
String s = "hello" + "World";
(2)“+”运算符两侧的操作数字只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
如:int c = 12;
System.out.println("c="+c);
//c不是字符串,打印的时候系统会自动将c=12转换成字符串,再打印出来。
(3)当进行打印时,无论任何类型,都自动转为字符串进行打印。
如:System.out.println(c);
8.表达式
(1)表达式是符合一定语法规则的运算符和操作数的序列
注:凡是看到的可以表达出来的一个字符串序列,就是表达式(最后能算出值来的东西,就是表达式)。
①a
②5.0 + a
③(a-b)*c-4
④i<30 && i% 10! = 0
(2)表达式的类型和值
①对表达式中操作数进行运算得到的结果称为表达式的值
②表达式值得数据类型即为表达式的类型。
(3)表达式的运算顺序
①应按照运算符的优先级从高到低的顺序进行。
②优先级相同的运算符按照事先约定的结合方向进行。
9.三目条件运算符
*“三目条件运算符,语法格式”
x ?y :z
*其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
*举例:
int score = 80; int x = -100;
String type = score < 60 ? "不及格":"及格";
//score=80≮60,不成立,则取冒号右边的"及格"
int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
//遇到复杂表达式时,从里往外算,括号里(x≠0,则括号里的值为-1);括号外(x=-100≯0,则取值-1),再把-1赋值给flag
Ststem.out,println("type= "+type);
System.out,println("flag= "+flag)
type= 及格; flag= -1;