运算符
算术:
赋值:
复合赋值运算符
比较(关系)
逻辑
三元(条件)
位运算
.
.
.
.
算术运算符:
+(正值、加)、-(负值、减)、*、/、%(取模、模除、求余数)、++(前置、后置)、–(前置、后置)
加运算符+:连接两个字符串。例如,“abc”+123的结果为“abc123”;
Java语言既可对整数取模,也可以对小数取模。例如,16.2%5=1.2
char类型的数据可以进行算术运算,而boolean类型的数据不能进行算术运算
++(–)运算符的操作数必须是变量,不能是常量或表达式 。++i 或者i++
逻辑运算符:可以对布尔类型数据进行逻辑运算,结果仍为布尔类型。逻辑运算符包括& (逻辑与)、| (逻辑或)、! (逻辑非)、^(逻辑异或)、&& (短路与)和|| (短路或)。
**
逻辑运算符
**
**
运算符 使用格式 功能说明
**
运算优先级
代码分析
public class Exam{ public static void main(String[] args){ System.out.println(2 + 3); //加法运算 System.out.println(- 5); //负值运算 -5 不是符号,是运算符 //以下验证负值运算符和减运算的优先级 System.out.println(- 5 - 3); //“-”在不同位置的含义,先算哪一个(优先级):负值高于减法运算 System.out.println((- 5) - 3); System.out.println(- (5 - 3)); System.out.println(5 - - 5); //结合性(自左至右、自右至左) System.out.println(5 - (- 5)); //推荐使用小括号标明优先级,写别人能看懂的代码 //加法运算在Java语言中的“升级” int i = 9; System.out.println(i + 5); //求和运算 System.out.println("Hello" + " world!"); //字符串连接运算 System.out.println("i = " + i); //字符串和其他类型数据做加法运算,系统自动将其他类型转换成字符 System.out.println("字符串加小数" + 3.14); System.out.println("字符串" + 5 + 3); //取模运算 % 5 % 3 5.5 % 3 System.out.println(5 % 3); //2 System.out.println(5.5 % 3); //2.5 System.out.println(5.5 % - 3); //2.5 除数是负数,负号忽略 System.out.println(- 5.5 % 3); //-2.5 被除数是负数,负号不能忽略 System.out.println(5.5 / - 3); System.out.println(- 5.5 / 3); //除法:除数不能为零 System.out.println(5 / 3); //1 System.out.println(5.0 / 3); //5.0(双精度)和3(整数)做除法运算,结果是双精度还是整数? System.out.println(5.0f / 3); System.out.println(5.0f / 3 == 1.6666666); //慎重处理小数间的判等操作 //自增、自减 i = 10; System.out.println(i ++); //先用后加 先输出再i= i + 1 System.out.println(i); System.out.println("*********************************"); int j = 10; System.out.println(++ j); //先加后用 先执行 j = j +1 再输出 System.out.println(j); //赋值 右值(常量,变量,表达式)传给左值(变量) System.out.println("*********************************"); j = 100; System.out.println(i = 45); System.out.println(i = 5 + 3); System.out.println(i = j); //System.out.println(i + 1 = 5); 左值一定是变量 //System.out.println(i = 45L); 赋值时,左右类型应兼容:相同或左长右短 long li; System.out.println(li = 5); System.out.println(li *= 5); / li= li * 5 25 li = 5; //复合赋值运算符右边的内容是一个整体 System.out.println(li *= 5 + 1); // li= li * 5 + 1 ? 26 li = li * (5 + 1)? 30 //关系(比较):比较数值,跟类型无关 ==(是否相等) System.out.println("*********************************"); System.out.println(1 == 1L); //ture System.out.println(3.14 == 3.14f); //false //逻辑运算(操作数一定是布尔类型;短路特性) System.out.println("*********************************"); System.out.println( true | false); //System.out.println( 1 | false); 1不能自动转换成布尔类 boolean b1,b2; b1 = true; b2 = true; System.out.println(true | (b1 = ! b1)); //有一个操作数为真或运算结果为真 true System.out.println(true || (b2 = ! b2)); //有一个操作数为真或运算结果为真 true System.out.println(b1); //false 计算机执行了或运算符后面的表达式b1 = ! b1 System.out.println(b2); //true 计算机没有执行了短路或运算符后面的表达式b1 = ! b1 //短路特性:若第一个操作数即能决定表达式的值,则运算符后面的内容不再执行 //用来连接多个条件 能够将具体的问题抽象成合法的逻辑表达式 } }