记录Java语法中的易错点以及不同于C语言的地方...
目录
一、运算符
1. 增量运算符 += -= *= %=
注意:只有变量才能使用该运算符,常量不能使用
增量运算符具有自动强制转换功能
①错误,②③为对应的两种改法
①:a+b的类型时int,赋值给short即大范围的赋值给小范围的。报错。
②:主动强制转换成short型
③:+=具有自动强制转换的功能
2. 逻辑运算符
逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型
结果 = 布尔表达式Ⅰ(&& || !) 布尔表达式Ⅱ
&&(逻辑与也称短路与):只要Ⅰ不成立,整个表达式即结果就不成立,且表达式Ⅱ不会做计算
|| (逻辑或也称短路或):只要Ⅰ成立,整个表达式即结果就成立,且表达式Ⅱ不做计算
! (逻辑非):真变假,假变真
注意事项1:运算符的对象以及判断条件一定得是布尔表达式!!!
&& 及 || 左右两边必须是布尔表达式、!右边必须是布尔表达式;if语句括号内、while循环等判断条件内必须是布尔表达式。
错误示例:
正确写法:
错误实例:
正确写法:
注意事项2:位运算符 & 与 | 叛变成逻辑运算符
我们都知道, 计算 10 / 0 会导致程序抛出异常。但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值
而这个代码程序异常,说明&与|计算了10/0。也就是没有发生同&&与||一样的短路情况。
对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式;
对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式;
& 和 | 如果表达式结果为boolean时, 也表示逻辑运算。但与 && || 相比, 它们不支持短路求值如果表达式左右两边不是布尔表达式,& 和 | 就是位运算符
3. 位操作符
位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。
位操作表示 按二进制位运算。 计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的每一位依次进行计算。
& 按位与:如果两个二进制位都是 1, 则结果为 1, 否则结果为 0 -> 有0则0,全1才1
| 按位或:如果两个二进制位都是 0, 则结果为 0, 否则结果为 1 -> 有1则1,全0才0
~ 按位取反:如果该位为 0 则转为 1, 如果该位为 1 则转为 0 -> 0变1,1变0
^按位异或 : 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1 -> 相同为0,相异为1
注意事项 :
当位操作符左右两边是布尔表达式时,位操作符将充当逻辑操作符。只有两边不是布尔表达式,才发挥本身的作用 -> 位操作符
二、逻辑控制
1. switch语句
① switch的括号内只能是以下类型的表达式:
基本类型:byte、char、short、int,注意不能是long类型
引用类型:String常量串、枚举类型
② switch 括号中不能有复杂表达式
2. continue与break的用法
continue会结束当前循环,继续回到判断条件;而break则跳出整个循环
注意:
① 除了break可以用在switch语句中,其他任何情况,break与continue必须在循环内使用
② 使用continue与break时,注意两者前面应该循环条件改变的语句(i++),否则报错