运算符
算术:
赋值:
复合赋值运算符
比较(关系)
逻辑
三元(条件)
位运算
.
.
.
.
算术运算符:
+(正值、加)、-(负值、减)、*、/、%(取模、模除、求余数)、++(前置、后置)、–(前置、后置)
加运算符+:连接两个字符串。例如,“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
//短路特性:若第一个操作数即能决定表达式的值,则运算符后面的内容不再执行
//用来连接多个条件 能够将具体的问题抽象成合法的逻辑表达式
}
}