目录
前言
流程控制结构 顺序结构 分支结构 循环结构 for循环
一、运算符
算数运算符
+ - * / ++ -- %
自加运算符 ++ 符号在变量前,先做运算后赋值;符号在变量后,先赋值再运算
自减运算符 -- 符号在变量前,先做运算后赋值;符号在变量后,先赋值再运算
关系运算符
< > <= >= != ==
注意 ‘==’关系运算,其意义为全等,基本数据类型比较值,引用数据类型比较地址
布尔运算符(逻辑运算符)
& | ! ^ && ||
异或 ^:相异为true,两个操作数不一样就为true,相同为false
&&(短路与)有一个false,结果就是false
||(短路或)有一个true,结果就是true
短路&& 和 逻辑& 区别?
1.短路与,从第一个操作数推断结果,只要有一个为fase,不再计算第二个操作数
2.逻辑与,两个操作数都计算
短路|| 和 逻辑| 区别?
1.短路或,从第一个操作数推断结果,只要有一个为true,不再计算第二个操作数
2.逻辑或,两个操作数都计算
位移运算符
& | - ^ >> << >>>
<< 左移运算 x<<y x*2^y 所有位置向左移动y位,右侧补0
>> 右移运算 x>>y x/2^y 所有位置向右移动y位,左侧补0。负数左侧补1
赋值运算符
= += -= /= *= %=
右侧的数值赋给左侧的变量
当 "=" 两侧数据类型不一致时,适用默认转换或强制转换处理
特殊情况为:当byte,char,short被整赋值时,不需要进行强制类型转换,不超过取值范围即可。即一个自动装载的过程。
char c=100;byte b=20; //正确
char c2=-99999;byte b2=128; //类型越界错误
字符串连接运算符
+
"+" 可用于数值计算,当有一方是字符时,则为将左右两个数据转化成字符串连在一起
当" +" 任意一侧为字符串时,系统将自动将两侧转化成字符串,做字符串链接操作
当进行System.out.println(var)打印操作的时候,均自动转化为字符串进行输出
条件 运算符(三目运算符)
布尔表达式? 表达式 : 表达式
条件为true是,输出的是前面的表达式;反之,输出后面
其他
instanceof new
二、流程控制结构
以某种顺序执行的一系列动作
程序可以通过控制语句来对程序实现选择、循环、转向和返回等流程控制
顺序结构
顺序结构程序就是按语句出现的先后顺序执行的程序结构
计算机按顺序逐条执行语句,当一条语句执行完毕,自动转到下一条语句
分支结构
当语句块为一条语句时,大括号可以省略。只有布尔表达式为true时,才进入if语句中
单分支
if(布尔表达式){
表达式
}
双分支
if(布尔表达式){
表达式
}else {
表达式
}
多分支
if(布尔表达式){
表达式
}else if(布尔表达式){
表达式
}else if(...){
...
}else{
...
}
表达式的值只能为:char、byte、short、int类型、String、enum类型,其它类型均非法
switch (表达式) {
case 值1:
语句;
break;
case 值2:
语句;
break;
default:
语句;
break;
}
case具有穿透性,利用case穿透达成case合并【不写break】
循环结构
当程序执行到循环控制语句时,根据循环判定条件对一组语句重复执行多次
循环结构的三个要素:循环变量、循环体和循环终止条件
for循环
for(表达式1;表达式2;表达式3) {
循环体; //一条或多条语句
}
表达式可以省略,‘;’不能省略
fori (快捷操作)
双层for循环
外层循环 循环的是行
内层循环 循环的是列
foreach(增强for)
while/do...while循环
while(布尔表达式){
循环体; //一条或多条语句
}
do {
循环体;
}while(条件判断表达式);//注意分号
有分号
先执行一边do里面的循环体,再判断
总结
运算优先级
分隔符>一元运算符>算术运算符>位移运算符>关系运算符>逻辑运算符>三目运算符>赋值运算符
break
跳出当前循环,结束
continue
跳过本次循环,直接执行下一次循环