1. 运算符
1.1 算术运算符
1.1.1 运算符与表达式
运算符:对常量或者变量进行操作的符号
表达式:用运算符把常量或者变量连接起来符合Java语法的式子
1.1.2 算数运算符
符号 | 作用 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
注意整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
1.1.3 字符’+'操作
字符char类型参与算术运算,使用的是计算机底层字符对应的十进制数值
‘a’ – 97 a-z是连续的,所以’b’对应的数值是98,'c’是99,依次递加
‘A’ – 65 A-Z是连续的,所以’B’对应的数值是66,'C’是67,依次递加
‘0’ – 48 0-9是连续的,所以’1’对应的数值是49,'2’是50,依次递加
char ch='a';
System.out.println(ch+1);//输出98,97+1
算数表达式包含不同的基本数据类型的值时,整个算数表达式的类型会自动进行提升。
提升规则:
-
byte类型、short类型和char类型将被提升到int类型,不管是否有其他类型参与运算
-
整个表达式的数据类型自动提升到表达式中最高等级的操作数相同的数据类型
等级顺序:byte,short,char --> int --> long --> float --> double
1.1.4 字符串’+'操作
当’+‘操作中出现字符串时,这个’+'就是字符串连接符,而不是算数运算符
System.out.println("程序猿"+666);//输出:程序猿666
在’+‘操作中,如果出现了字符串,那么’+‘就是字符串连接符,否则就是算术运算符。当连续进行’+'操作时,从左往右的顺序一次执行。
System.out.println(1+2+"程序猿"+3+4);//输出:3程序猿7
1.2 赋值运算符
赋值运算符的作用是将一个表达式的值赋值给左边,左边必须是可以修改的,不可以是常量
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | 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 |
注意:上面的扩展赋值运算符隐含了强制类型转换。
short s=10;
s=s+10;//此行代码会报错,运算中s会由short提升为int类型,运算结果为int类型赋值给short可能会损失精度
s+=10;//这里是不会报错的,扩展的赋值运算符包含了强制类型转换,相当于s=(short)(s+10);
1.3 自增自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量的值加1 |
– | 自减 | 变量的值减1 |
关于自增自减运算符需要注意以下几点:
-
自增自减运算符既可以放在变量前面,也可以放在变量的后边。
-
当单独使用自增自减运算符时,放在前面与放在后面的效果是一样的。
-
当参与操作的时候,放在变量后面,变量会先参与操作,后在对变量进行++或者–
当参与操作的时候,放在变量前面,变量会先进行++或者–,后再参与操作。
1.4 关系运算符
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
注意事项:
关系运算符的结果都是boolean类型,只有true和false两个结果
在使用"==“的时候,不要误写成”=",误写成"="就变成了赋值了
1.5 逻辑运算符
逻辑运算符用来把关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,结果只能为true或者false。
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
1.6 短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 作用和&相同,但是有短路效果 |
|| | 短路或 | 作用和|相同,但是有短路效果 |
注意事项:
在逻辑与运算中,只要一个表达式结果为false,那么整个表达式结果就为false,而不必去计算其他表达式的结果,短路逻辑运算符就是这样的,可以提高效率。
- 逻辑与&,无论左边真假,右边都要执行
- 短路逻辑与&&,只要左边为假,右边就不用执行
- 逻辑或|,无论左边真假,右边都要执行
- 短路逻辑或||,只要左边为真,右边就不用执行
1.7 三元运算符
三元运算符语法格式:关系表达式 ? 表达式1 : 表达式2
解释:先计算问号前面的关系表达式的逻辑结果,当结果为true时就调用表达式1,为false时就去调用表达式2。
int a = 10;
int b = 20;
int c = a > b ? a : b; // 判断 a>b 是否为真,如果为真取a的值,如果为假,取b的值
2. 数据输入
通过Scanner类来接受用户输入,具体使用步骤如下:
1、导包(导包的语句要定义在类的上面)
import java.util.Scanner;
2、创建Scanner对象
Scanner sc=new Scanner(System.in);
3、接受用户输入
int a=sc.nextInt();
3. 流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。
3.1 流程控制语句分类
顺序结构
分支结构(if,switch)
循环结构(for,while,do…while)
3.2 顺序结构
顺序结构是最常见的流程控制,按照代码的先后循序,依次执行。
顺序结构流程图:
3.3 分支结构之if语句
if语句格式1
格式:
if (关系表达式) {
语句体;
}
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体
③如果关系表达式的值为false就不执行语句体
④继续执行后面的语句内容
if语句格式2
格式:
if (关系表达式) {
语句体1;
} else {
语句体2;
}
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体1
③如果关系表达式的值为false就执行语句体2
④继续执行后面的语句内容
if语句格式3
格式:
if (关系表达式1) {
语句体1;
} else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程:
①首先计算关系表达式1的值
②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
④…
⑤如果没有任何关系表达式为true,就执行语句体n+1。