第三章 运算符、表达式和语句
文章目录
3.1 运算符和表达式
- 运算符:对常量或者变量进行操作的符号。
- 表达式:用运算符号把常量或者变量连接起来的符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
3.1.1 算术运算符
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 两数相加 |
- | 减 | 两数相减 |
* | 乘 | 两数相乘 |
/ | 除 | 除数除以被除数 |
% | 取余 | 两个数除法的余数 |
顺序:byte、short、char -> int -> long-> float -> double
② 取余时尽量不要使用小数,有时结果会出现错。
字符的‘+’操作
字符的‘+’操作:拿字符在计算机底层的ASCII码值进行计算
‘A’->65 ‘a’->97 ‘0’->48
( 方便记忆,‘A’或‘a’为4或6乘16加1,‘0’为3乘以16;即,‘A’为,‘a’为,‘0’为 )
字符串的‘+’操作
- “字符串”+“字符串"为字符串的拼接,输出"字符串字符串”。
- “字符串”+6+6,输出为“字符串66”。
- 6+6+“字符串”,输出为“12字符串”。
综上所述,字符串输出为从左向右计算,从左开始相加的为两个数,则两数相加,只要有一个字符串则为拼接。
3.1.2 自增、自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
-- | 自减 | 变量的值减1 |
② 参与操作的时候,如果++或--放在变量的前边。先将变量做++或--,后拿变量进行操作。
参与操作的时候,如果++或--放在变量的后边。先将变量进行操作,后将变量做++或--。
3.1.3 关系运算符
符号 | 说明 |
---|---|
== | a==b,判断a和b是否相等,成立为true,不成立为false。 |
!= | a!=b,判断a和b是否不相等,成立为true,不成立为false。 |
> | a > b,判断a和b是否大于b,成立为true,不成立为false。 |
>= | a>=b,判断a和b是否大于等于b,成立为true,不成立为false。 |
< | a < b,判断a和b是否小于b,成立为true,不成立为false。 |
<= | a<=b,判断a和b是否小于等于b,成立为true,不成立为false。 |
3.1.4 逻辑运算符和短路运算符
(C语言中&叫按位与,&&叫逻辑与;java中&叫逻辑与,&&叫短路与。下面统一用java的名称叫。)
逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a|b,a和b结果不同为true,相同为false |
| | 逻辑非 | !a,结果和a的逻辑值取反 |
~ | 按位取反 | ~a,结果把a的所有位取反 |
② 逻辑非只能进行逻辑运算,即,a必须为boolean型,如!true=false, ! false=true;
③ 按位取反只能进行位操作,即,a必须为整型,如~5为-6。((byte)5的补码是0000 0101,取反后为-6的补码1111 1010)
短路运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | a&&b,a和b都是true,结果为true,否则为false |
|| | 短路或 | a||b,a和b都是false,结果为false,否则为true |
逻辑运算符和短路运算符的区别
① 逻辑与和逻辑或不仅能进行逻辑运算还能进行位运算,短路与和短路或只能进行逻辑运算。
② 当两种运算符都进行逻辑的与运算时,左边数a为true,逻辑与右边b也会计算,短路与右边b不会计算;当两种运算符都进行逻辑的或运算时,左边数a为false,逻辑与右边b也会计算,短路与右边b不会计算;
3.1.5 赋值运算符
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | a=10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a*b的值给a |
/= | 除后赋值 | a/=b,将a/b的值给a |
%= | 取余后赋值 | a%=b,将a%b的值给a |
3.1.6 三元运算符
- 格式: 关系表达式?表达式1:表达式2;
- 范例:a>b ? a:b;
计算规则:首先计算关系表达式的值,如果值为 true,表达式1的值就是运算结果,如果值为 false,表达式2的值就是运算结果。
3.1.7 instanceof运算符
instanceof运算符是二目运算符,左边的操作元是一个对象,右边的是一个类。当左边的对象是右边的类或子类创建的对象时,该运算符运算的结果是true,否则是false。
3.2 条件分支语句
3.2.1 if语句
在if语句中,关键字if后面的一对小括号()内的表达式的值必须是boolean类型,当值为true时,执行紧跟着的复合语句,然后结束当前if语句的执行;如果表达式的值为false,结束当前if语句的执行。
3.2.2 if-else语句
在if-else语句中,关键字if后面的一对小括号()内的表达式的值必须是boolean类型,当值为true时,执行紧跟着的复合语句,然后结束当前if语句的执行;如果表达式的值为false,则执行关键字else后面的复合语句,结束当前if-else语句的执行。
3.2.2 if-else if-else语句
程序在执行if-else if-else语句时,按照该语句中表达式的顺序,首先计算第1个表达式的值,如果计算结果为true,则执行紧跟着的复合语句,结束当前if-else if-else语句的执行。如果计算结果为false,则继续计算第2个表达式的值;以此类推,假设计算第m个表达式的值为true,则执行紧跟着的复合语句,结束当前if-else if-else语句的执行,否则继续计算第m+1个表达式的值。如果所有表达式的值都为false,则执行关键字else后面的复合语句,结束当前的if-else if-else语句的执行。
Ps:if-else if-else语句中的else部分是可选项,如果没有else部分,当所有表达式的值都为false时,结束当前if-else if-else语句的执行(该语句什么都没做)。
3.3 switch语句
switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相等,就执行该case中的若干个语句,直到碰到break语句为止。如果某个case中没有使用break语句,一旦表达式的值和该case后面的常量值相等,程序不仅执行该case中的若干个语句,而且继续执行后续的case找那个的若干个语句,直到碰到break语句为止。若switch语句中的表达式的值不与任何case的常量值相等,则执行default后面的若干个语句。switch语句中的default是可选的,如果它不存在,并且switch语句中表达式的值不与任何case的常量值相等,那么switch语句就不会进行任何的处理。
3.4 循环语句
循环语句是根据条件,要求程序反复执行某些操作,直达程序“满意”为止。
3.4.1 for循环语句
for语句由关键字for、一对小括号()中用分号分隔的3个表达式以及一个复合语句组成,其中的“表达式2”必须是一个求值为boolean型数据的表达式,复合语句称为循环体。“表达式1”负责完成变量的初始化;“表达式2”是值为boolean型的表达式,称为循环条件;“表达式3”用来修整变量,改变循环条件。
3.4.2 while循环语句
while语句由关键字while、一对括号()中的一个求值为boolean类型数据的表达式和一个复合语句组成,其中的复合语句称为循环体。另外,在该句中,表达式称为循环条件。
3.4.3 do-while循环语句
do-while循环和while循环的区别是,do-while的循环体至少被执行一次。
3.5 break和continue语句
在循环体可以进行使用break语句和continue语句,在一个循环中,例如循环n次的循环语句中,如果在某次循环中执行了break语句,那么整个循环语句就结束了。如果在某次循环中执行了continue语句,那么本次循环就结束,即不再执行本次循环中循环体中的continue语句后面的语句,而转入进行下一次循环。
3.6 数组与for语句
for(声明循环变量:数组的名字){
}
这种形式的for语句可翻译为对于循环变量依次取数组的每一个元素的值。
Ps:“声明循环变量”不可以使用已经声明过的变量,要重新声明的变量。
PS:如有错误,欢迎评论区指出。
来源:CSDN
作者:__后知后觉
链接:https://blog.csdn.net/qq_46140914/article/details/103989875