1 运算符
1.1 算术运算符(理解)
运算符:对常量或者变量记性操作的符号
表达式:用运算符把常量或者变量链接起来的符合java语法的字符串 称为表达式
1.2 算术运算符
算术运算的规则 符合我们小学数学
1.3 算术运算的规则
整数运算:
如果两个操作数有一个是long 则表达式的类型一定是long;
如果在一个表达式中,所有的操作数都是整数,且不为long 则结果为int
浮点运算:
取模(求余)运算
求余运算可以使用浮点数,一般使用的都是整数。取模运算的结果为两个数的余数,余数的符号和左边操作数的符号相同
1.4 字符的“+”操作
char类型参与算术运算。使用的是字符的ascii码 。
'a'------------------97 a ---z 是连续的
'A'-----------------65 A ---Z 是连续的
'0'-----------------48 0---9 是连续的
算术表达式中包含多个基本类型的操作数的时候,整个算术表达式的类型会自动提升:
提升规则:
byte类型 short char类型都将被提升为int类型
整个表达式的类型自动提升到表达式中最高等级的操作数的同样的类型。
等级顺序: byte,short char-->int --- > long --->float---->double
1.5 字符串
当字符串和数值型的数据进行运算时(+) 此时进行的是字符串拼接 而不是算术运算 ,因此在字符串运算中,“+”称为字符串连接符 当字符串链接的时候 是从左至右 依次拼接
2.赋值运算符
赋值运算符 =
扩展的赋值运算符: += -= *= /= %= 先进行算术运算 后赋值
在扩展赋值运算符中 隐含了强制类型转换
3.自增自减运算符
++自增 --自减
++和-- 既可以在变量的左边也可以在变量的右边
单独使用的时候,++ 和-- 无论放在变量的左边或者右边 结果都是一样的
4 关系运算符
== != > < >= <=
注意: 关系运算符的结果都是boolean类型 结果要么是true 要么是false
同时注意 == 不要写成 =
5 逻辑运算符
在数学中 如果表示一个数是大于3 小于6 3<x <6
但是在java中 不能这样写。我们需要拆分成两部分:
拆解为: x> 3 和x <6
合并为: x>3 && x<6
逻辑运算符:
&(与) a & b a和b都是true的时候 结果才为true 否则都为false(只要有一个为false结果就false)
| (或) a | b a 和b都是false 结果false 否则都为true(只要有一个为true结果就true)
!(非) !a 取反 true变false false变true
^(异或) a ^ b a 和b结果不同为true 相同为false
5.1 短路逻辑运算符
&& 短路与 作用和& 相同 但是有短路效果
|| 短路或 作用和|相同 但是有短路效果
&逻辑与 无论左边真或假 右边都会执行
&& 短路与 若果左边为真 右边肯定会执行 。如果左边为false 右边就不执行
| 无论左边为真或假 右边都是要执行
|| 如果左边为true 右边不执行 如果左边为false 此时右边才需要执行
6 位运算
位运算指的是进行二进制位的运算
~ 取反
& 按位与
| 按位或
^ 按位异或
<< 左移 将整个2进制数据左移一位 相当与将原来的数乘2
n >>右移 将整个的2进制右移一位 相当与将原来的数除2
&和| 如果两边的操作数类型是boolean类型 则是逻辑运算 如果两边的操作数是整数 则为位运算
7 三元运算符
格式: 关系表达式 ? 表达式1: 表达式2
a > b? a : b
计算规则:
1 计算关系表达式的值
2 如果关系表达式的值为true 则结果为表达式1的值
3 如果关系表达式的值为fasle 则结果为表达式2的值
8 流程控制语句
分类:
顺序结构
分支结构(选择结构)(if switch)
循环结构(for while do...while)
8.1 顺序结构
程序的执行是从main方法开始 自上而下 依次执行。
8.2 分支结构/选择结构
8.2.1 if
单分支:
双分支: if --- else
多分支
嵌套分支
8.2.2 switch
1 switch的表达式的类型: char, byte, short, int, enum(枚举) , String(jdk7+)
2 break的作用:结束当前执行 如果没有break 将发生case穿透
4 default的位置:default可以出现在任意位置
5对于case如果对应相同的代码 则可以省略前边的case下的语句
switch的表达式类型可以使string
if 和switch区别:
1 if 判断的是一个范围 switch判断的是一些具体的值
2 switch判断的数据的值 一定是可列举的 有穷的
3 能用Switch去实现的 一定也能够使用if 但是能使用if 的 不一定能使用switch
8.3 循环结构
for
while
do。。。while
特点:所执行的代码是重复;需要有明确的开始和停止标志
8.3.1for循环
循环结构的语法:
1 初始化语句 可以使一条或者多条语句 这些语句主要完成一些初始化工作;
2 条件判断语句 该语句的执行结果一定是一个boolean值。 这个语句决定了循环体是否执行
3 循环体语句 这里可以使一条或者多条语句 也可以是其他结构
4 条件控制语句:通常是一条语句,用来改变判断条件的值 从而达到控制语句是否继续向下执行的效果。此处使用自增自减操作居多。
8.3.2 while循环
先判断 后执行
8.3.3 do ... while
先执行 后判断 无论条件是否成立 至少会执行依次
do...while的使用场景:
比如用户登录:
三种循环的区别:
1 for循环和while循环先判断条件是否成立 然后决定是否执行循环体 (先判断后执行)
2 do --- while 循环先执行一次循环体 然后判断条件是否成立 是否执行循环体。(先执行后判断)
3 for循环的变量的作用范围仅限于for循环内 而while循环的变量的作用范围大于循环的范围
在java中 变量的作用范围 是距离他最近的一对大括号
死循环:
循环一直执行,无法自动结束,只能人为干预停止虚拟机
continue
带标签的break和continue
嵌套循环
Java九九乘法表