运算符
算术运算符
符号 | 说明 |
---|---|
+ | 1)数值型的加减运算,数值型【byte、short、int、long、float、double、char】;2)表示正号;3)对字符串进行拼接 |
- | 1)数字型的减法运算;2)表示负号 |
* | 乘法运算 |
/ | 除法运算;注意:1)整数相除,结果还是整数–地板除 2)double和float保存的是一个近似值 |
% | 取余、求模;符号看被除数;,被除数和除数可以为小数 |
++ | 自增 :1)前置:先自增再运算2)后置:先运算再自减 |
–符号 | 自减 |
比较运算符
结果为布尔型
<、>、<=、<=
可以对数值型的进行比较运算。
如果成立,结果为true 否则,为false
==、!=
如果成立,结果为true 否则,为false
针对引用类型是,比较的是两个引用是否指向同一块内存地址
逻辑运算符
只针对布尔类型及逆行运算,运算结果也是布尔类型
1. 逻辑与 &&、&
当连个操作数都为true时,结果为true,否则结果为false。
2. 逻辑或 ||、|
当两个操作数都为false时,结果为false,否则为true。
3. 逻辑非 !
单目运算符
当操作数为true时,结果为false,否则为true。
4. 短路运算符
针对&&、||两种逻辑运算。
当第一个操作数,已经能够确定运算及结果时,第二个操作数将不会执行。
&&:A&&B 如果A=false;结果必然是flase,B就不需要再进行运算了。
||:A||B 如果A=true是;结果必然是true,B就不需要再进行运算了。
位运算符 (补码运算)
- 按位与 &
两个操作位的对应位都是1,结果的对应位也是1,否则就是0。
1010 &1011 = 1010
3&5=011&101=001
byte: 3&-5=000000011&11111011=00000011
负数->二进制:去掉符号-1求二进制 ,再按位取反
二进制->负数:按位取反转换成十进制加1 后的结果取负数
- 按位或 |
两个操作数的对应位都是0时,结果的对应位也是0,否则为1。
- 按位异或 ^
当两个操作数的对应位不同时,结果的对应位是1,否则就是0。
- 按位取反 ~
单目运算符
- 左移位 <<
所有的二进制位向左移动指定的位数
7<<2 相当于7*4
- 右移位 >>
所有的二进制位向右移动指定的位数,左侧补符号位
7>>n 相当于7除以2的n次方
- 无符号右移位 >>>
所有的二进制位,全部向右移动知道你过的位数,左侧补0
赋值运算符 (=)
为变量、常量进行赋值操作
赋值时,需要给变量、常量指定一个类型符合的值
赋值运算符还可以与常见的耳目运算符组合成为复合赋值运算符
+=、-=、*=、/=、%=、···
A+=B:相当于 A=A+B
byte b1=10;
b1=b1+10 //不合法
b1+=10 //合法
复合赋值运算符再运算的时候,会自动对数据类型进行转换
三目运算符
A?B:C
A:必须为布尔类型
当A的值是true时,整个表达式的是B;
当A的值是false时,整个表达式时C;
三目运算符和赋值运算符,比较特别。他们的结合性时从右向左的。
int i2,i3;
i2=i3=5; //相当于 i2=(i3=5)
int i4=3,i5=4;
int i6,i7=7;
i4>i5?i5>i6?i5:i6:i6>i7?i6:i7
//i4>i5?(i5>i6?i5:i6):(i6>i7?i6:i7)
运算符的优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | –> |
2 | !、+、-、~、++、– | <– |
3 | *、/、% | –> |
4 | +、- | –> |
5 | <<、>>、>>> | –> |
6 | <、<=、>、>=、instanceof | –> |
7 | ==、!= | –> |
8 | & | –> |
9 | ^ | –> |
10 | 一个竖(或) | –> |
11 | && | –> |
12 | 两个竖 | –> |
13 | ?: | <– |
14 | =、+=、-=、*=、/=、&=、……=、~=、<<=、>>=、>>>=、 | <– |
流程控制
控制代码执行的顺序
顺序结构(最基本的执行方式)
代码从前往后,一行一行顺序执行
选择分支
根据一定的条件进行判定
条件成立时,执行一部分代码;
条件不成立时,执行另一部分代码。
if(条件表达式1){
pass
}
else if(条件表达式2){
pass
}
//```
else{
pass
}
switch (){
case value1:
{}
break;
case value2:
{}
break;
...
default:
{}
break;
}
//表达式:可以是byte、short、int、char。后期版本中加入了String、枚举。
//会一行一行执行,直到遇见break;若无break则一致执行到最后。
//如果没有任何一支case的常量值相匹配,进入default进行执行
注意
循环结构
本剧一定的条件,进行判定:
如果条件成立,重复执行同一段代码;
若条件不成立,则结束循环。
while
do···while
for
//while
while(条件表达式){
pass
}
//do-while
do{
pass
}while();
//必须以分号结束
//for
for(初始化表达式;条件表达式;迭代表达式){
循环体
}
while与do-while的区别:
1)语法结构:while是条件在前,循环体在后;do-while是循环体在前,条件再后。
2)执行循序:while先进行条件判断,再执行循环体;do-while先进行循环体,在执行条件。
3) 执行结果:while循环体可能一次也不执行;do-while循环体至少执行一次。
循环的控制:
1)break
1】用在switch 中,结束switch
2】用在循环中,结束循环
2)continue
1】在循环中,跳过这次循环,进行下一次循环
3)return