=============================================================================
=============================================================================
涉及到的知识点有:
0:基本概念概述
1:运算
2:运算符
3:操作数
4:表达式
1:运算符(掌握)
(1)算术运算符(掌握)
(2)赋值运算符(掌握)
(3)比较(关系)运算符(掌握)
(4)逻辑运算符(掌握)
(5)位运算符(了解)
(6)三元(三目/条件)运算符(掌握)
2:键盘录入(掌握)
3:流程控制语句
4:if语句(掌握)
(1)三种格式:
(2)注意事项:
(3)案例:
(4)三元运算符和if语句第二种格式的关系:
=============================================================================
=============================================================================
0:基本概念概述
1:运算
对常量和变量进行操作的过程称为运算。
2:运算符
对常量和变量进行操作的符号称为运算符。
3:操作数
参与运算的数据称为操作数。
4:表达式
用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
不同运算符连接的式子体现的是不同类型的表达式。
举例:
int a = 3 + 4;
这是做了一个加法运算。
+就是运算符,且是算术运算符,我们还有其他很多的运算符。
3,4就是参与运算的操作数据。
3 + 4整体其实就是一个算数表达式。
-----------------------------------------------------------------------------
1:运算符(掌握)
(1)算术运算符(掌握)
A:+, -, *, /, %, ++, --
B:+的用法:
a:加法;
b:正号;
c:字符串连接(拼接)符。 例如:System.out.println("x="+x+",y="+y);
如下如图所示00:
C:/和%的区别:
数据做除法操作的时候,/取得是商,%取得是余数。
如下图所示01:
D:++和--的用法:
a:他们的作用是:对变量进行自增1或者自减1。
b:使用:
**单独使用时:
放在操作数据的前面和后面效果是一样。
即:a++或者++a效果一样。
**参与操作使用时:
放在操作数的前面时:先自增1或者自减1,再参与操作。
int a = 10;
int b = ++a; // a = 11; b = 11;
放在操作数的后面时:先参与操作,再自增1或者自减1。
int a = 10;
int b = a++; // b = 10; a = 11;
如下图所示02/03:
---------------------------------------
(2)赋值运算符(掌握)
A: 基本的赋值运算符:=
把=右边的数据赋值给左边。
扩展的赋值运算符:+=, -=, *=, /=, %=, 等等。
+= 把左边和右边数据做加法后,然后将结果赋值给左边。
B:=叫做赋值运算符,也是最基本的赋值运算符。
int x = 10; //把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点:
扩展的赋值运算符隐含了自动强制转换。
即:s += 1;
不是等价于 s = s + 1;
而是等价于 s = (s的数据类型)(s + 1);
面试题:
short s = 1; // 编译有问题,报错,可能损失精度。
s = s + 1; // short类型参与运算的时候默认转换为int类型。而把int类型赋值给short类型会有问题。
short s = 1; // 没有问题。
s += 1; // 因为+=隐含了自动强制转换。
请问上面的代码哪个有问题?
---------------------------------------
(3)比较(关系)运算符(掌握)
A:==, !=, >, >=, <, <=, instanceof(后面讲)
B:无论运算符两端是简单还是复杂最终结果是boolean类型。
C:千万不要把==写成了=了。
D:>=, <=只要有一个满足即可,即:不管是大于,还是等于;或者不管是小于,还是等于。
如下图所示04:
---------------------------------------
(4)逻辑运算符(掌握)
A: &, |, ^, !, &&, ||
如下图所示05:
B:逻辑运算符用于连接boolean类型的表达式,在java中不可以写成3<x<6,而是应该写成x>3&x<6。
表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。
例如:
算术表达式:a + b
比较表达式:a == b
C:结论:
逻辑与&:有false则false。
逻辑或|:有true则true。
逻辑异或^:相同则false,不同则true。
举例情侣关系:男男为false,女女为false,男女为true,女男为true。
逻辑非!:非true则false,非false则true。
偶数个叹号!不改变布尔类型,奇数个叹号!改变类型。
逻辑双与&&:最终的结果和&是一样的,只不过有短路效果。只要左边是false,右边就不执行。
逻辑双或||:最终的结果和|是一样的,只不过有短路效果。只要左边是true,右边就不执行。
所以双与(双或)的效率更高!!!
小结:在开发中常用的逻辑运算符为:&&, ||, ! 。
---------------------------------------
(5)位运算符(了解)
因为我们一般是做十进制的运算的,而位运算是做的二进制的运算,所以我们一般不需要掌握,但是需要听懂!
因为在底层源码中看大量看到位运算,因为我们的所有的操作在计算机底层都会变成为位运算。可以提高程序的效率。
如下如所示06:
对于计算机来说,要做位运算,首先要把数据转换为二进制。而且还得是补码。我们眼睛看的屏幕上显示的原码!
如下图所示07:
A:^异或位运算符的特殊用法:
一个数据针对另一个数据位异或两次,该数据本身不变。应用:可以对数据做一个简单的加密。
如下图所示08:
B:面试题:
以后讲课过程中,若没有明确说明数据类型的话,一般默认int类型。
a:请实现两个int变量的交换。int a = 10; int b = 20;
法一:采用第三方变量(开发中用)。
int c = a;
a = b;
b = c;
法二:用位异或运算符(面试中用)。简记为:等号左边a,b,a 等号右边a^b
a = a ^ b;
b = a ^ b; //a ^ b ^ b = a = b
a = a ^ b; //a ^ b ^ a = b = a
法三:用变量相加的方法。
a = a + b;
b = a - b; //a + b - b = a = b
a = a - b; //a + b - a = b = a
法四:一句话搞定。
b = (a + b) - (a = b); //b = a + b - b = a
b:请用最有效率的方式计算出2乘以8的结果
2<<3
如下图所示09/10:
---------------------------------------
(6)三元(三目/条件)运算符(掌握)
单目运算符:~3
双目运算符:3 + 4
A:三目运算符格式:
比较表达式? 表达式1 : 表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:案例:
a:获取两个数据中的最大值。
int max = ((x > y)? x : y);
b:获取三个数据中的最大值。
法一: int tmpe = ((a > b)? a : b);
int max = ((tmpe > c)? tmpe : c);
法二: int max = (a > b)? ((a > c)? a : c) : ((b > c)? b : c); // 三目运算符的嵌套使用。晕啊!!!不建议这么写。
c:比较两个数据是否相等。
法一: boolean flag = ((a == b)? true : flase); // 这样写太啰嗦了。
法二: boolean flag = (a == b);
如下图所示11:
-----------------------------------------------------------------------------
2:键盘录入(掌握)
(1)实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
(2)如何实现键盘录入数据呢?目前就记住:
A:导包:
import java.util.Scanner;
位置:在class定义的上边。
B:创建键盘录入对象:
Scanner sc = new Scanner(System.in);
C:通过对象获取数据:
int x = sc.nextInt();
(3)把三元运算符的案例加入键盘录入改进。
-----------------------------------------------------------------------------
3:流程控制语句
(1)顺序结构:从上往下,依次执行。
(2)选择结构:按照不同的选择,执行不同的代码。
(3)循环结构:做一些重复的代码。
选择结构也称为分支结构。Java语言提供了两种选择结构语句。
1)if语句。
2)switch语句。
-----------------------------------------------------------------------------
4:if语句(掌握)
(1)三种格式:
A:格式1:
if(比较/关系表达式) {
语句体;
}
执行流程:
判断比较表达式的值,看是true还是false。
如果是true,就执行语句体。
如果是false,就不执行语句体。
---------------------------------------
B:格式2
if(比较表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
判断比较表达式的值,看是true还是false。
如果是true,就执行语句体1。
如果是false,就执行语句体2。
if语句的第二种格式与三元运算符的区别如下图所示12:
---------------------------------------
C:格式3
if (比较表达式1) {
语句体1;
} else if (比较表达式2) {
语句体2;
} else if (比较表达式3) {
语句体3;
}...
...
} else if (比较表达式n) {
语句体n;
} else {
语句体n+1;
}
执行流程:
判断比较表达式1的值,看是true还是false。
如果是true,就执行语句体1。
如果是false,就继续判断比较表达式2的值,看是true还是false。
如果是true,就执行语句体2。
如果是false,就继续判断比较表达式3的值,看是true还是false。
...
...
如果都不满足,就执行语句体n+1。
---------------------------------------
(2)注意事项:
A:比较表达式无论是简单还是复杂,结果必须是boolean类型。
B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条语句,则不能省略。
建议:永远不要省略。
C:一般来说:有左大括号就没有分号,有分号就没有左大括号。
如下图所示13:
D:else后面如果没有if,是不会出现比较表达式的。
E:三种格式的if语句其实都是一个语句,只要有一个语句体执行,其他的语句体就不再执行。
---------------------------------------
(3)案例:
A:比较两个数是否相等。
B:获取两个数中的最大值。
C:获取三个数中的最大值(if语句的嵌套)。
D:根据成绩输出对应的等级。
E:根据月份,输出对应的季节。
F:根据x计算对应y的值并输出。
如下图所示14:
(4)三元运算符和if语句第二种格式的关系:
所有的三元运算符能够实现的,if语句的第二种格式都能实现。
反之不成立。
如果if语句第二种格式控制的语句体是输出语句,就不可以。
因为三元运算符是一个运算符,必须要求有一个结果返回。返回的结果不能是一个输出语句。
=============================================================================