自增减运算符
- ++ 自增 当前变量自身 加1 ia++ ++ia ia = ia + 1
- - - 自减 当前变量自身 减1 ia- - - -ia ia = ia - 1
- 前加加后加加的区别
- 后++表示先让变量ia的数值作为整个表达式的结果,然后再让ia变量自身的数值加1。
- 前++表示先让变量自身的数值加1,然后再让变量的数值作为整个表达式的结果。
自增减运算符的笔试考点
- 笔试考点
- int ia= 13 (ia ++ + ++ia)// 13+15 = 28
逻辑运算符
&& 表示逻辑与运算符 二者缺一不可
|| 表示逻辑或运算符 只要一个真
! 表示逻辑非运算符 相当于取反, 真为加,假为真
逻辑运算符两边的操作数均为boolean类型表达式
/*
编程实现了逻辑运算符的使用
*/
public class LogicTest {
public static void main (String[] args) {
//1.声明两个boollean类型的变量并初始化
boolean b1 = true;
boolean b2 = false;
//2.打印变量的数值
System.out.println("b1 = " + b1); //b1 = true
System.out.println("b2 = " + b2); //b2 = false
System.out.println("---------------------------------");
//3.使用上述变量实现逻辑运算符的使用
boolean b3 = b1 && b2;
System.out.println("b3 = " + b3); //fallse
System.out.println(b1 && b2); //false 并且
System.out.println(b1 || b2); //true 或者
System.out.println(!b1); //false 取反
System.out.println(!b2); //true
}
}
- 逻辑运算符的短路特性
- 对于逻辑与运算符来说,若第一个表达式为假则结果为假,此时跳过第二个表达式
- 对于逻辑或运算符来说,若第一个表达式为真则结果为真,此时跳过第二个表达式
-
条件/三目运算符
- 条件表达式?表达式1:表达式2
- 判断条件表达式是否成立,若成立则执行表达式1,否则执行表达式2
- ia>ib?ia:ib
- 2 默认为整数直接量 int类型
-
byte b1 = 10; System.out.println("b1 = " + b1); // b1 = 10 //b1 = b1 + 2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte + int 相加结果还是int类型 //b1 = b1 + (byte)2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte + byte 相加结果还是int类型 编译器优化 //b1 = (byte)(b1 + 2); // 强制类型转换,将int类型转换为byte b1 += 2; // 真正等价于b1 = (byte)(b1 + 2);
b1 += 2; // 真正等价于b1 = (byte)(b1 + 2);自带强转。
-
赋值运算符的笔试考点:
-
//ia == 2; - 表示判断变量ia的数值是否等于2
//2 == ia; - 表示判断2是否等于变量ia的数值,从结果上来说等价,推荐该方式
//ia = 2; - 表示将2赋值给变量ia,覆盖变量ia原来的数值
//2 = ia; //- 编译报错 错误: 意外的类型
-
-
移位运算符
-
<< 左移运算符,将数据的二进制位向左移动,右边用0补充
-
>> 右移运算符,将数据的二进制位向右移动,左边用符号位补充
-
>>> 逻辑右移运算符 , 将是数据的二进制位向右移动,左边用0补充
-
/*
编程实现了位移运算符的使用
*/
public class MoveText {
public static void main (String[] args) {
//1.声明一个byte类型的变量并初始化
byte b1 = 13;
//2.打印变量的数值
System.out.println("b1 = " + b1); //b1 = 13
System.out.println("---------------------------------");
//3.移位运算符的使用
// 13的二进制是:0000 1101 =>左移移位的结果是:0001 1010 => 26
byte b2 = (byte)(b1 << 1); //赋值运算符里面讲过 ,需要强制转换。
System.out.println("b2 = " + b2); // 错误: 不兼容的类型: 从int转换到byte可能会有损失
System.out.println(b1 << 1)//左移一位相当于当前整数的数值乘以2
System.out.println(b1 << 2)//左移一位相当于当前整数的数值乘以4
System.out.println("---------------------------------");
//右移的移位运算
System.out.println(b1 >> 1)// 6 左移一位相当于当前整数的数值除以2
System.out.println(b1 >> 2)// 3 左移一位相当于当前整数的数值除以4
// 逻辑右移 对于非负数来说,逻辑右移与右移一样
System.out.println(b1 >> 2
}
}
- 位运算符:
- & 表示按位与运算符,按照二进制位进行运算,同1为1 , 一0为0
- | 表示按位或运算符,按照二进制位进行运算,一1为1 , 同0为0
- ~ 表示按位取反运算符,按照二进制位进行取反,1为0 , 0为1
- ^ 表示按位异或运算符,按照二进制位进行异或,同为0 , 不同为1
- ()优先级最高 = 优先级最低
-
任务总结
- 算术运算符 + - * / %
- 字符串连接符 注意区分 + 两边的操作数,只要有一个是字符串,就是字符串连接符
- 关系运算符 > >= < <= == !=
- 自增减运算符 ++ --
- 逻辑运算符 && || !
- 条件/三目运算符 ?:
- 赋值运算符 = += -= *= /=...
- 移位运算符 左移 右移 逻辑右移
- 位运算符 & | ^ ~
- 运算符的优先级