运算符
赋值运算符:=
算数运算符:+,-,x,/,%,++,–
扩展运算符:+=,-=,*=,/=,%=
可以提升开发效率
因为在clss文件中运算就是这样写的,所以也会提升编译效率
使用扩展运算符时会自动强制转换
关系运算符(结果为boolean类型)
<,>,>=,<=:无法比较boolean和复合类型的数
!=,==:所有类型都可以比较
instanceof:判定一个变量是否属于一个指定的值,结果为boolean类型
不能用于基本数据类型,只能用于引用数据类型。
逻辑运算符(操作数和结果都是boolean类型的数据)
&,|,!,~,&&,||,^
&&,||效率高,因为当前一个值符合条件,后面就不再判断了
位运算符
&,|,^,~,>>,>>>,<<
位运算基于二进制运算,效率高
条件运算符
三目运算符:表达式1?表达式2:表达式3;
后面两个表达式类型要一致,避免出现自动类型转换
优先级
希望先算的用括号括起来
单目>双目>三目>赋值
算数>关系>逻辑>赋值
。
。
。
流程控制
顺序流程
分支流程:switch,if-else
循环:for,while,do-while
。
。
。
讨论题目:
1: 请说明各个运算的注意事项;
=:赋值符号,唯一的一个自右向左运算的
+:当左右两边操作数有一个是字符串类型时,会作为连接符号,将左右两边的操作数拼接成一个新的字符串
当两边操作数为数值时有三种用法:正号,加法,
++,–:单独一条语句前加后加;前减后减没有区别。不是单独语句—>i++/i–,先参与运算再自增自减;++i/–i:先自增自减再参与运算。
扩展运算符:编写代码少,提升开发效率;编译时运算格式就是扩展运算符的使用格式,提升编译效率;赋值符号两边有同名变量时可以使用扩展运算符。
关系运算符:关系运算符的结果是boolean类型;比较大小的运算符不能比较boolean的值;==和!=所有类型都可以比较;instanceof不能比较基本数据类型,只能比较引用数据类型
逻辑运算符:逻辑运算符的操作数和结果都是boolean的值;&&和||的效率高,因为当左边的表达式满足要求后面的表达式就不看了
位运算符:位运算符直接基于二进制运算,效率高
三目运算符:三目运算符的后两个表达式要保持一致,防止发生类型自动转换
2:++ 和 – 的区别?
单独一条语句前加后加;前减后减没有区别。不是单独语句—>i++/i–,先参与运算再自增自减;++i/–i:先自增自减再参与运算。
3: 说明一下&& 和& ||和|的区别于联系?
&&,||,&,|都是是逻辑运算符,操作数和结果都是一个boolean类型的值,但在作为逻辑运算符时,&&,||的效率更高,因为当&&,||左边的表达式符合要求时,右边的表达式就不再判断了。&,|可以作为位运算符,在进行运算时会以二进制的形式进行运算,运算效率高
4: 说一下运算符的优先级别?
单目>双目>三目>赋值
算数>关系>逻辑>赋值
平时使用时一般想让哪个先算的话就用括号括起来
5: 请描述流程控制有哪些?
顺序流程
分支流程:switch,if-else;switch的表达式中的结果可以通过自动类型转换转为int,基本数据类型中只有byte,short,int,char可以使用
循环流程:for,while,do-while
6:请说明switch的执行过程和注意事项?
执行过程:计算表达式的值—>依次匹配case,匹配成功则执行对应的语句—>保证有break,跳出switch结构—>如果没有匹配的case则执行default,如果有default的话
注意事项:表达式的结果可以通过自动类型转换转为int,基本类型数据中只有byte,short,int,char可以使用;如果没有break会发生击穿,即执行完匹配的case后会将后面所有语句都执行;jdk1.5后支持enum,jdk1.7后支持字符串
7: 请说明if单分支的执行过程和注意事项?
执行过程:判断表达式的结果,true则执行,false则跳过if中的语句