一、运算符
1.算术运算符:
+ 加、拼接、正数
- 减、负数
* 乘
/ 除(两个整数相除只会得到整数(因为默认是int))
也可以通过强制转换得到小数,或其中一个数乘1.0也可得到小数。
% 求余
2.自增自减运算符
++ 和 --
不参与运算:
++和--无论是在数据前还是后面都是自增1或自减1
参与运算:
++和--在数据前面:先自增/减1,再参与运算;
++和--在数据后面:先参与运算,再自增/减1;
注:
1. ++和--在参与运算完毕之后,最终的结果都会变为自减1或者自减1。
2. 输出语句也相当于是参与运算了。
3. 不能作用于常量。
3.关系运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
注:结果都是boolean类型;
==比较引用数据类型时比较地址是否相同、比较基本数据类型时比较内容是否相同;
equals重写后比较的是内容(大部分类会重写equals方法)、未重写比较的是地址;
4.赋值运算符
= 扩展而得:+=、 -=、 *=、 /=、 %=
扩展的赋值运算符都默认带有强制转换数据类型。
5.位移运算符
<< 左移 每左移一位,就会让原来的数据乘以2
>> 右移 每右移一位,就会让原来的数据除以2
>>> 无符号右移 每右移一位,就会让原来的数据除以2(只作用于正数)
计算机只识别0和1,也就是二进制,位移运算通过原码、反码、补码运算的;
负数的原、反、补码:最高位为1表示负数
原码:二进制表现形式
反码:原码按位取反;
补码:反码+1
运算时:反码 位移后得到结果的补码、结果的补码-1得到结果的反码、结果的原码通过结果的反码取反得到(最高位为1,因为是负数),右移时最高位都补1;
正数的原、反、补码都相同、发生位移后直接得到结果的原、反、补码;
6.逻辑运算符
与:& 或:| 非:! 异或:^
当运算时:两边是boolean类型,根据与、或、非、异或得出结果;
运算符两边是数据时通过两个数的二进制位次进行与、或、非、异或运算得到结果的二进制;
短路与 &&
短路或 ||
&&和|| 两边放关系运算符(boolean类型),结果分别和&、| 一样;
7.三元运算符
格式: 条件表达式 ? 值1 :值2
当条件表达式为 true时得到值1,为 false时得到值2;
进行赋值输出或得到赋值结果进行其它操作:
如:String s = 条件表达式 ? 值1 :值2;
二、分支结构
1.if语句
if意为如果、else意为否则,如果为true,则执行大括号中的语句体,否则执行else后大括号中的语句体;
单分支格式为:if (条件表达式) {
}
双分支格式为:if (条件表达式) {
} else { }
多分支格式:if (条件表达式) {
} else if (条件表达式) { } else ...
(直到最后一个判断结尾是else加上大括号)
2.switch语句
switch语句:switch意为 当 (当满足case 值 : ,(内容时)执行接下来的语句,直达遇到break才会退出整个switch语句), 若表达式得到的值都不符合所有的值,那么会执行默认语句default的语句体并退出;
格式:switch (表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
……
default:
语句体n;
break;
}
break、switch和case、default是关键字
注意事项:
1. 表达式的值是什么类型?
byte、short、int、char、String、枚举
2. case后面的数据必须是常量吗?
是
3. break可以省略吗?
可以。但是会穿透现象(直接执行下一个语句体,无视限定值(case后的值))。
4. default可以省略吗?
可以。
5. default必须要放在最后吗?
可以放在任何地方。但是建议一直放在尾部
三、循环语句
1.for循环
格式:for(初始化语句; 条件表达式; 初始化语句的改变){
循环语句体;
}
2.while循环
格式: 初始化语句;
while(条件表达式){
循环语句体;
初始化语句的改变;
}
3.do... while循环
格式: 初始化语句;
do {
循环语句体;
初始化语句的改变;
}while(条件表达式);
4.三个循环的区别:
for循环更节省内存,初始化语句在for语句中,循环完后此变量直接被回收
for循环常用且用于循环次数明确的语句体
次数不明确时使用其它两种循环
do...while循环至少执行一次(执行完一次后才进行条件表达式的判断)
5.死循环
while(true){
循环语句体;
}
for(;;){
循环语句体;
}
四、跳转语句
break 用在switch语句和循环结构中,用来退出switch语句和循环结构。【完全退出】
continue 用在循环结构中,用来退出当次循环,并进行下一次循环 【退出一次】
return 退出方法 【用在方法内部】