0x00 运算符

1. 比较运算符

大于:>
小于:<
大于等于:>=
小于等于:<=
相等:==【两个等号连写才是相等,一个等号代表赋值】
不等:!=

注意事项:

  1. 比较运算符的结果一定是布尔值,成立就是true,不成立就是false。
  2. 如果进行多次判断,不能连着写。

2. 逻辑运算符

与(并且):&& 全部满足,结果才为true
或(或者):|| 有一项满足,结果即为true
非(取反):!得到的结果取相反值

与“&&”,或“||”具有短路效果:如果根据左边已经可以判断得到最终结果,那么右边的代码将不再执行,从而节省一定的性能。

注意事项:

  1. 逻辑运算符只能用于布尔值。
  2. 与、或需要左右各自有一个布尔值,取反只要有唯一的一个布尔值即可。
  3. 与、或两种运算符,如果有多个条件,可以连续写。

3.三元运算符

一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反(!)、自增(++)、自减(--)。
二元运算符:需要两个数据才可以进行操作的运算符。例如:加法(+)、赋值(=)。
三元运算符:需要三个数据才可以进行操作的运算符。

格式:
数据类型 变量名称 = 条件判断 ?表达式A:表达式B;

流程:
首先判断条件是否成立:
如果成立为true,那么将表达式A的值赋值给左侧的变量;
如果不成立为false,那么将表达式B的值赋值给左侧的变量;
二者选其一。

0x01 方法入门

1.什么是方法

方法就是讲一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样实现了代码的复用性,也解决了代码冗余的现象。

2.定义一个方法

定义一个方法的格式:
public static void 方法名称(){
方法体
}

方法名称的明明规则和变量一样,使用小驼峰。
方法体:也就是大括号当中可以包含任意条语句。

3.方法定义的注意事项

  1. 方法定义的先后顺序无所谓。
  2. 方法的定义不能产生嵌套包含关系。
  3. 方法定义好了之后,不会自己执行,如果想要执行,一定要进行调用。

4.如何调用方法

格式:

方法名称();

0x02 编译器的两点优化(了解)

优化1

对于 byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么编译器会自动隐含的帮我们进行强制类型转换。

注意事项:

  1. 如果右侧没有超过左侧的范围,编译器补上强转。
  2. 如果右侧超过了左侧的范围,那么编译器直接报错。

优化2

在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器将会直接将若干个表达式计算得到结果。
如果结果是在左侧范围内,就不会报错。
也就是说,不用进行强制数据类型转换,编译器会在计算出结果之后自动帮你进行强转。
但是要注意,表达式当中不能有变量参与,不然就不能进行该优化。

流程控制

概述
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,也就是说,程序的流程对运行结果有直接影响。所以我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

1.顺序结构

在程序执行的过程中,代码的执行顺序是从上往下执行的,这就是java程序的顺序结构。

2.判断结构(判断语句)

判断语句:单if语句

格式:
if (关系表达式){
语句体;

执行流程:

  1. 首先判断关系表达式看其结果是true还是false。
  2. 如果是true就执行语句体。
  3. 如果是false就不执行语句体。
判断语句:if...else

格式:
if (关系表达式) {
语句体1;
} else {
语句体2;
}

执行流程:

  1. 首先判断关系表达式看其结果是true和false。
  2. 如果是true就执行语句体1。
  3. 如果是false就执行语句体2。
判断语句:if...else if ...else

格式:
if (判断条件1) {
执行语句1;
} else if (判断条件2) {
执行语句2;
}
...
} else if (判断条件n) {
执行语句n;
} else {
执行语句n+1;
}

执行流程:

  1. 首先判断关系表达式1看起结果是true还是false。
  2. 如果是true就执行语句1。
  3. 如果是false就继续判断关系表达式2,看其结果是true还是false。
  4. 如果是true就执行语句2。
    5.如果是false就继续判断关系表达式,看其结果是true还是false。
    ...
选择语句:switch

格式:
switch (表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}

执行流程:

  1. 计算出表达式的值
  2. 和case依次比较,一旦有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束。
  3. 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

注意事项:

  1. 多个case后面的数值不可以重复。
  2. switch后面小括号当中只能是下列数据类型:
    基本数据类型:byte/short/char/int
    引用数据类型:String(字符串)/enum(枚举)
  3. switch语句格式可以很灵活:前后顺序可以点到,而且break语句可以省略。(省略的话,可能会造成穿透)
    “匹配哪一个case就从哪一个位置向下执行,知道遇到了break或者整体结束为止。”