JAVAEE

Day03

运算符

1:运算
对常量和变量进行操作的过程称为运算。
2:运算符
对常量和变量进行操作的符号称为运算符
3:操作数
参与运算的数据称为操作数
4:用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。
不同运算符连接的式子体现的是不同类型的表达式。
举例:
int a = 3 + 4;
这是做了一个加法运算
+就是运算符,是算术运算符,我们还有其他很多的运算符
3,4就是参与运算的操作数据
3 + 4整体其实就是一个算数表达式

运算符的优先级

JAVAEE

算术运算符

基本算术运算符:
+,-,*,/,%
扩展的算术运算符:
++,–
/:两个数相除,默认取整
%:两个数进行取模,求余数
JAVAEE
JAVAEE

+,-,/都是比较简单的操作,简单演示即可+的几种作用: 加法正数字符串连接符
除法的时候要注意一个问题:
整数相除,只能得到整数
要想得到小数,可以*1.0
/和%的区别
/获取的是操作的商,%获取的是除法的操作的余数
++和–的应用
单独使用效果相同
参与运算使用,在操作数的前后效果不同
扩展的算术运算符:
++,–
单独使用:
无论是++,–在数据前还是后,都是对当前数据本身进行自增1或者自减1!
参与运算使用:
++,–在数据之后,先进行运算,在进行自增1或者自减1
++,–在数据的前面,先进行自增1或者自减1,在参与运算

JAVAEE

赋值运算符

基本的赋值运算符:
= :
将=号右边的数据赋值给左边的某个类型的变量
注意事项:千万不能讲"=",写成"=="

扩展的赋值运算符:
+=,-=,*=,/=,%=
+=:
将=号右边的值和左边的变量值相加,然后在将结果赋值给左边的变量a
1:= 赋值号
2:+=加赋值
把左边和右边的结果赋值给左边。
注意:左边不能是常量
JAVAEE
面试题:
A)short s=1; s = s+1;
B)short s=1;s+=1;
上面两个代码有没有问题,如果有,那里有问题
A)有问题,不兼容的类型,损失精度
存在默认类型提升—>byte,short,char,在参与运算的时候默认提升—int类型
s+1的结果是int类型,使用short类型的变量接收int的值不可以的!
如何解决?只能强制类型转换 s = (short)(s+1) ;
B)没有问题,对于扩展赋值运算符+=…
隐藏了强制类型转换
JAVAEE

比较运算符

JAVAEE

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注2:比较运算符“==”不能误写成“=” 。
JAVAEE

逻辑运算符

基本的逻辑运算符:
逻辑与&
结论:有false,则false
逻辑或|
结论:有true,则true
逻辑异或^
结论:
相同则为false,不同则为true
简单记忆:男女关系
男男 男女 女男 女女
逻辑非!
结论:
非false,则true;非true则false
偶数个非是他本身!
JAVAEE
扩展的逻辑运算符:
逻辑双与&&
逻辑双或||
逻辑双与&& 和逻辑单与&的区别?
a)&&和&都符合,有false,则false
b)逻辑双与&&
如果&&符号的左边表达式位false,右边就不执行了, (短路效果)
逻辑||同理,左边的表达式为true,右边不执行了!
JAVAEE

位运算符

位与&:有0则0
位或|:有1则1
位异或^:相同则为0,不同则为1
== ~ 反码==:逐位取反,然后还需要通过得到补码---->原码
JAVAEE
位异或的特点:
一个数据位异或另一个数据两次,其值是他本身!
应用场景:简单的数据加密
位运算符:
<<:左移动,最高位丢弃掉,右边补0
>>:右移,最高位如果是1,左边补1,最高位是0,左边补0
>>>:无符号右移最高位无论是1还是0,都补0

位运算符细节(面试)

JAVAEE

三元(目)运算符

格式:(表达式)? 执行true的结果:执行flase的结果
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
执行流程:
1.先判断表达式是否成立
2.如果成立,执行true的结果
3.不成立,执行false的结果

键盘录入数据

概述

我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性
如何实现键盘录入数据?(目前先记住使用)
实现步骤:
1. 导包(位置放到class定义的上面)
import java.util.Scanner;
2. 创建对象
Scanner sc = new Scanner(System.in);
3. 接收数据
int x = sc.nextInt();

顺序结构语句

概述:

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
总的来说:写在前面的先执行,写在后面的后执行

选择结构语句(为分支结构)

概述:

选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
Java语言提供了两种选择结构语句
if语句
switch语句
if语句格式1:if(关系表达式){
语句体; }
执行流程
首先判断关系表达式看其结果是true还是false
如果是true(表达式成立)就执行语句体
如果是false就不执行语句体
JAVAEE