0x00 运算符
1. 比较运算符
大于:>
小于:<
大于等于:>=
小于等于:<=
相等:==【两个等号连写才是相等,一个等号代表赋值】
不等:!=
注意事项:
- 比较运算符的结果一定是布尔值,成立就是true,不成立就是false。
- 如果进行多次判断,不能连着写。
2. 逻辑运算符
与(并且):&& 全部满足,结果才为true
或(或者):|| 有一项满足,结果即为true
非(取反):!得到的结果取相反值
与“&&”,或“||”具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能。
注意事项:
- 逻辑运算符只能用于布尔值。
- 与、或需要左右各自有一个布尔值,取反只要有唯一的一个布尔值即可。
- 与、或两种运算符,如果有多个条件,可以连续写。
3.三元运算符
一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反(!)、自增(++)、自减(--)。
二元运算符:需要两个数据才可以进行操作的运算符。例如:加法(+)、赋值(=)。
三元运算符:需要三个数据才可以进行操作的运算符。
格式:
数据类型 变量名称 = 条件判断 ?表达式A:表达式B;
流程:
首先判断条件是否成立:
如果成立为true,那么将表达式A的值赋值给左侧的变量;
如果不成立为false,那么将表达式B的值赋值给左侧的变量;
二者选其一。
0x01 方法入门
1.什么是方法
方法就是讲一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样实现了代码的复用性,也解决了代码冗余的现象。
2.定义一个方法
定义一个方法的格式:
public static void 方法名称(){
方法体
}
方法名称的明明规则和变量一样,使用小驼峰。
方法体:也就是大括号当中可以包含任意条语句。
3.方法定义的注意事项
- 方法定义的先后顺序无所谓。
- 方法的定义不能产生嵌套包含关系。
- 方法定义好了之后,不会自己执行,如果想要执行,一定要进行调用。
4.如何调用方法
格式:
方法名称();
0x02 编译器的两点优化(了解)
优化1
对于 byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么编译器会自动隐含的帮我们进行强制类型转换。
注意事项:
- 如果右侧没有超过左侧的范围,编译器补上强转。
- 如果右侧超过了左侧的范围,那么编译器直接报错。
优化2
在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器将会直接将若干个表达式计算得到结果。
如果结果是在左侧范围内,就不会报错。
也就是说,不用进行强制数据类型转换,编译器会在计算出结果之后自动帮你进行强转。
但是要注意,表达式当中不能有变量参与,不然就不能进行该优化。
流程控制
概述
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,也就是说,程序的流程对运行结果有直接影响。所以我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
1.顺序结构
在程序执行的过程中,代码的执行顺序是从上往下执行的,这就是java程序的顺序结构。
2.判断结构(判断语句)
判断语句:单if语句
格式:
if (关系表达式){
语句体;
}
执行流程:
- 首先判断关系表达式看其结果是true还是false。
- 如果是true就执行语句体。
- 如果是false就不执行语句体。
判断语句:if...else
格式:
if (关系表达式) {
语句体1;
} else {
语句体2;
}
执行流程:
- 首先判断关系表达式看其结果是true和false。
- 如果是true就执行语句体1。
- 如果是false就执行语句体2。
判断语句:if...else if ...else
格式:
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
} else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}
执行流程:
- 首先判断关系表达式1看起结果是true还是false。
- 如果是true就执行语句1。
- 如果是false就继续判断关系表达式2,看其结果是true还是false。
- 如果是true就执行语句2。
5.如果是false就继续判断关系表达式,看其结果是true还是false。
...
选择语句:switch
格式:
switch (表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
执行流程:
- 计算出表达式的值
- 和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束。
- 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项:
- 多个case后面的数值不可以重复。
- switch后面小括号当中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String(字符串)/enum(枚举) - switch语句格式可以很灵活:前后顺序可以点到,而且break语句可以省略。(省略的话,可能会造成穿透)
“匹配哪一个case就从哪一个位置向下执行,知道遇到了break或者整体结束为止。”