Java笔记Day03

    xiaoxiao2026-09-02  2

    -----------------------------------------------------------------------------------------------------上接Java笔记Day02-----------------------------------------------------------------------------------------------------

    (3)比较运算符(<   >   <=   >=   ==)

    比较运算符的运算结果是一个boolean值

    (4)逻辑运算符(&   |   !   ^   &&   ||)

    逻辑运算符用于连接两个boolean类型的表达式。其中&&被称为双与(或短路与),||被称为双或(短路或)。&与&&的区别在于:当&或者&&连接两个boolean表达式时,如果左边表达式的值为false,&右边的表达式依然进行运算,最后根据左右表达式的结果进行与运算得出最终结果,而&&右边的表达式不再进行运算,直接得出最终结果false。同理,| 与 || 的区别在于:当 | 或者 || 连接两个boolean表达式时,如果左边表达式的值为true,| 右边的表达式依然进行运算,最后根据左右表达式的结果进行或运算得出最终结果,而 || 右边的表达式不再进行运算,直接得出最终结果true。也就是说,&&和|| 在左边表达式能决定整个表达式最终结果的时候,将不再对右边表达式进行运算,而&和 | 无论任何情况都会依次计算左右表达式的值,然后根据左右表达式的值进行运算得出整个表达式的最终结果。

    (5)位运算符(&   |   ~   ^   <<   >>   >>>)

    位运算符直接作用于二进制位,效率高。如果想要高效率的进行数值运算,优先考虑位运算。

     ^ 特点:a ^ b ^ b = a

    案例:不使用第三方变量,交换两个变量的值。

    解决方案1:

    int a = 3,b = 5;

    a = a + b;

    b = a - b;

    a = a - b;

    缺点:如果a和b数值较大,两者的和可能会超过int的数值表示范围。

    解决方案2:

    使用a和b的乘积,思路与方案1类似,缺点也类似。

    解决方案3:

    int a = 3,b = 5;

    a = a ^ b;

    b = a ^ b;

    a = a ^ b;

    (6)三元运算符

    格式:条件表达式  ?  表达式1  :  表达式2

    其中表达式1和表达式2都要有一个确定的结果,不能类似于syso(“打印”)类似的无结果语句。

    只要是运算符,就必须有结果,照该思路考虑,三元运算符也必须有结果。

    6. 语句

    Java程序有三种程序控制结构:顺序结构、分支结构、循环结构。其中顺序结构就是最普通的代码结构,在Java中分支结构通过 if 语句和 switch 语句实现,循环结构通过while、do while、for语句实现。

    每种语句都有自己的范围,在Java当中这个范围用大括号{ }来界定,大括号所界定的部分叫做代码块。可以在花括号前面给代码块加一名字,比如if、switch、while、for,分别对应if、switch、while、for语句。当然也可以不加名字,不加名字的代码块如果在方法当中就是局部代码块,局部代码块的作用主要是控制局部变量的生命周期,当某个或者某些变量已经使用完毕,在接下来的程序运行当中不再参与运算的时候,为了及时释放这部分变量所占用的空间,可以将这部分变量的声明、初始化和使用放在局部代码块当中。

    (1)if 语句

    格式一:

    if(条件表达式){

    执行语句1;

    执行语句2;

    ……

    }

    解释:只要 if 后面的小括号中的条件表达式为true,就会执行 if 所对应的大括号中的语句。

    格式二:

    if(条件表达式){

    执行语句1;

    执行语句2;

    ……

    }else{

    执行语句1;

    执行语句2;

    ……

    }

    解释:只要 if 后面的小括号中的条件表达式为true,就会执行 if 所对应的大括号中的语句;否则,就会执行 else 对应的大括号中的语句。if 和 else 所对应的大括号中的语句在逻辑上是对立的,至少有一个会执行。注意:if-else 是一个整体,是一个语句。

    格式三:

    if(条件表达式){

    执行语句1;

    执行语句2;

    ……

    }else if(条件表达式){

    执行语句1;

    执行语句2;

    ……

    }else{

    执行语句1;

    执行语句2;

    ……

    }

    解释:同格式二。

    不管哪种格式,if、else、else if 都只能控制所对应的大括号中的语句的执行,如果没有大括号,则只能控制紧挨着自己的一条语句的执行。注意:这里所说的一条语句有可能是一个整体,就像格式二或格式三那样的语句整体。

    (2)switch 语句

    格式:

    switch (key) { case value1: 执行语句1;

    执行语句2;

    …… break;

    case value2: 执行语句1;

    执行语句2;

    …… break;

    …… default:

    执行语句1;

    执行语句2;

    ……

    break; }

    在switch中key的类型只有int和枚举类型;而一切可以自动转换成int形的参数也可以使用,也就是说如果byte、short、char作为参数传入时是先将它们自动转化为int,再继续实现的。在switch语句中,case语句和default语句的匹配顺序是:先从上到下依次匹配case语句,匹配到就执行,如果都匹配不成功,则执行default语句,不管default语句所处的位置。对于default语句所处的位置没有硬性的规定,放到最上面都没问题。break语句在switch语句当中发挥的作用巨大,如果某个case语句或者default语句当中没写break语句,那么在执行完当前case或default语句之后,会继续执行后面的case语句,直到执行到break语句或switch语句结束。

    (3)while 语句

    格式:

    while(条件表达式){

    执行语句1;

    执行语句2;

    ……

    }

    解释:while语句和 if 语句对比,在格式上唯一的区别就在于代码块的名称不一样,一个是while,一个是 if 。while是满足条件可以执行多次,if 满足条件只能执行一次。

    (4)do while 语句

    格式:

    do{

    执行语句1;

    执行语句2;

    ……

    }while(条件表达式);

    解释:do-while与while的区别:while是先检查条件表达式,条件满足了才执行,然后每次循环的时候先检查条件,满足才执行;do-while不管条件满足不满足,上来先执行一遍再说,然后每次循环的时候先检查条件,满足才执行。

    (5)for 语句

    格式:

    for(初始化表达式;条件表达式;运算表达式){

    执行语句1;

    执行语句2;

    ……

    }

    解释:语句执行顺序略过不谈,值得注意的是,初始化表达式部分可以一次初始化多个变量,运算表达式也可以有多个,都是以逗号隔开。for循环和while循环完全可以实现互换,只是方便不方便的问题。两者最大的区别可能就是局部变量的生命周期了。

    for循环-死循环

    for( ;;){

    执行语句1;

    执行语句2;

    ……

    }

    其中for死循环当中条件表达式部分虽然没有内容,但是编译器会默认给补全一个true。

    while循环-死循环

    while (true){

    执行语句1;

    执行语句2;

    ……

    }

    转载请注明原文地址: https://ju.6miu.com/read-1311814.html
    最新回复(0)