算术运算符
运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。
算术运算符最常见的操作就是将操作数参与数学计算
- 加法运算
正号(可以省略)
字符串连接符:当+左右两边如果有一个字符串,都作为字符串的连接符使用
把内容拼接成为一整个字符串
- 负号,不能省略
减法运算
* 乘号
/ 除号
% 取模|取余|模以
当参与运算的两个操作数,第一个操作数小于第二个操作数的时候,结果就是第一个操作数
算数运算符++,–的使用
++就是自身+1 |自增 --自身-1 i+±-> i=i+1;
操作自己:值的改变只影响自己的结果
++放在操作数的前面后者后面都是自身+1
–放在操作数的前面后者后面都是自身-1
操作别人|参与运算
++|–放在操作数的前面,先自身+1|-1,再参与运算
++|–放在操作数的后面,先参与运算,再自身+1|-1
赋值运算符
基本赋值运算符 =:
双目运算符
在java中唯一一个自右向左的运算的运算符
扩展赋值运算符
优点:提高执行效率
可以自动做强制类型转换
缺点:不直观
推荐使用拓展赋值运算符
比较运算符
>< >= <= 只能用来比较基本数据类型 byte short int long float
double char.
== !=可以用来比较基本数据类型,可以用来比较引用数据类型
比较运算符最终的结果为boolean类型的值为true/false
逻辑运算符
& : 如果有一个是假就为假,两个都为真才是真
| : 如果有一个为真就是真,两个都为假才是假
! : 去反 !true->false !false->true
^ : 两个相同为false,不同为true
&&
||:逻辑与&,|一样,但是有短路的作用,第一个操作数的值就能够决定最终的结果了,第二个操作数不再运行
三元运算符
公式:
条件表达式? 值1 : 值2;
条件表达式是一个值为boolean类型的表达式
执行流程:
1.计算条件表达式的结果
2.如果结果true,最终的结果为值1
3.如果结果为false,最终的结果为值2
运算符优先级
============
位运算符
所有的位运算符在运算时会先转成二进制,再进行运算,得到的结果转为十进制
& :
把两边二进制的数,同一位数的两个数比较,如果一个为0就是0,两个都为1才是1| :
把两边二进制的数,同一位数的两个数比较,如果一个为1就是1,两个都是0才是0^ : 把两边二进制的数,同一位数的两个数比较,如果两个相等为0,不等为1
位移运算符
>> 右移
把左边的操作数转为二进制,想象右侧有一个分水线,向右移动第二个操作数位,保留左右留在分水线左侧的二进制数,再转为十进制<< 左移
把左边的操作数转为二进制,想象右侧有一个分水线,向右移动第二个操作数位,空缺位置补零,最终转为十进制右移/2的几次方 左移*2的几次方
9>>2 9/2^2
9<<2 9*2^2
引用类型
通过import java.util.Scanner/Random 来导包引用
Scanner
Scanner类是一个引用数据类型
基本数据类型:
int a=5;
引用数据类型:
1)创建一个引用数据类型的变量|引用
引用数据类型 变量名=new 引用数据类型();
eg:创建一个Scanner类型的变量|引用
Scanner sc=new Scanner(System.in);
2)如何使用功能:
引用.功能名字();
Scanner类型:接受键盘输入
1)导包 告诉Scanner类所在的位置
使用import关键字导包 java.util.Scanner
位置:类的上面
2)使用公式创建Scanner类型的引用
3)使用功能
接受用户输入的int类型的数据
引用.nextInt();
接受用户输入的byte类型的数据
引用.nextByte();
接受用户输入的short类型的数据
引用.nextShort();
接受用户输入的long类型的数据
引用.nextLong();
接受用户输入的double类型的数据
引用.nextDouble();
接受用户输入的String类型的数据
引用.next();
从有效字符开始,直到遇到空格|tab停止接收,功能遇到enter结束
接收用户输入的String类型的数据,一整行
引用.nextLine(); 遇到enter就结束,无论是否接受到内容
4)关闭
引用.close(); 养成良好的习惯
在使用完毕整个Scanner功能之后再去关闭,否则创新开启Scanner的应用也无效
Random
Random:产生随机数
1.导包 import java.util.Random
2.创建Random类型的引用
3.使用功能
引用.nextInt(); 随机产生一个int类型范围内的数据
引用.nextInt(整数n); 范围[0,n)
引用.nextDouble(); [0,1)
都是伪随机数,没有真正的随机数
公式1: [min,max) ran.nextInt(max-min)+min
公式1: [min,max] ran.nextInt(max-min+1)+min
公式1: [min,max) ran.nextDouble()*(max-min)+min
公式1: [min,max] ran.nextDouble()*(max-min+1)+min
If控制语句
流程控制语句:
顺序结构:默认顺序结构 从上到下,从左到右依次执行
选择结构:当满足某些条件就可以执行特定的代码
循环结构:重复执行一些代码
选择结构|分支结构:
单分支|单选择:
if(条件表达式){
语句体;
}
条件表达式:值为boolean类型的表达式
执行流程:
1)计算条件表达式
2)如果结果为true,执行语句体
3)如果结果为false,就不执行直接跳过
双分支|双选择:
if(条件表达式){
语句体1;
}else{
语句体2;
}
执行流程:
1)计算条件表达式
2)如果结果为true,执行语句体1
3)如果结果为false,执行语句体2
多分支|多选择: —多个if…else
if(条件表达式1){
语句体1;
}else if(条件表达式2){
语句体2;
}else if(条件表达式3){
语句体4;
}…
else{
语句体n;
}
执行流程:
1)计算条件表达式1
2)如果结果为true,执行语句体1
3)如果结果为false,计算条件表达式2,如果结果为true,执行语句体2
4)如果结果为false,计算条件表达式3,如果结果为true,执行语句体3
…
5)如果以上条件都不满足,就执行else中语句体n;
Switch控制语句
switch语句:定值判断
语法:
swtich(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n;
break;
}
说明:
表达式: 常为变量,可以为常量,没有意义
byte,short,int,char,枚举(1.5),字符串(1.7)
case:case后面接的值,表达式可能存在的值
值:只能为定值,不能是区间判断
break:终止switch语句,防止穿透
default:和if…else非常像,以上条件都不满足,就执行的default中对应的语句体,推荐使用,可以在任意位置,一般放在最后
执行流程:
1)计算表达式
2)把表达式的结果与case后面接的值进行判断,如果相等,就执行对应的语句体,如果执行完毕后遇到break,就结束swtich语句,如果没有回发生case穿透
3)以上条件都不满足,就执行的default中对应的语句体
case穿透:从当前满足的语句体执行完毕以后,不再进行判断case,直接执行下面的语句体,如果有break结束,如果没有,继续向下执行知道switch语句的结束