• 2019-05-12 Jave学习日记之运算符&if语句


    算术运算符的基本用法

    A:什么是运算符?

    就是对常量和变量进行操作的符号

    B:运算符的分类:

    算数运算符、赋值运算符、比较(关系或条件)运算符

    逻辑运算符、位运算符、三目(元)运算符

    C:算术运算符:+,-,*,/,,%,++,--

    D:注意事项:

    a:+号在java中有三种作用,代表正号、做加减运算、字符串连接符

    b:整数相除只能得到整数。如果想得到小数,必须把数据变化成浮点数类型

    c:/ 获取的是除法操作的商,%获取的是除法操作的余数

    %运算符:

    1、当左边的绝对值小于右边绝对值时,结果是左边

    2、当左边的绝对值等于右边或者右边的倍数时,结果为0

    3、当左边的绝对值大于右边绝对值时,结果是余数

    4、%运算符结果的符号只和左边有关系,与右边无关

    5、任何一个正整数%2的结果不是0就是1,可以用来当作切换条件

    算术运算符++和--的用法:

    a:单独使用:

    放在操作数的前面或者后面效果一样。(这种用法比较常见)

    b:参与运算使用:

    放在操作数前面,先自增或者自减,然后再参与运算

    放在操作数后面,先参与运算,再自增或者自减

    面试题:

    short s = 1;s = s + 1  

    当short与int进行运算时,会提升为int类型,两个int类型相加的结果也是int类型

    位运算符的基本用法:

    &,|,^,~ 的用法:

    &:有0则0

    |:有1则1

    ^:相同则0,不同则1

    ~:按位取反

    位异或运算符的特点:

    ^ 的特点:一个数据对另一个位异或两次,该数本身不变

    <<:左移  左边最高位丢弃,右边补齐0

    >>:右移  最高位是0,左边补齐0;最高位是1,左边补齐1

    >>>:无论最高位是0还是1,左边补齐0

    左移,向左移动几位就是乘以2的几次幂

    右移,向右移动几位就是除以2的几次幂

    if语句

    逻辑与:&

    遇false则false

    逻辑或:|

    遇true则true

    逻辑异或:^

    相同则false,不同则true

    逻辑非:!

    非false则true,非true则false

    特点:偶数个不改变本身

    if语句格式:

    if(比较表达式){

      语句体;

    }

    执行流程:

    1、先计算比较表达式的值,看其返回值是true还是false

    2、如果是true,就执行语句体;

    3、如果是false,就不执行语句体;

    选择结构if语句注意事项:

    a:比较表达式无论简单还是复杂,结果必须是boolean类型

    b:if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。最好永远都不要省略!

    c:一般来说:有左大括号就没有分号,有分号就没有左大括号

    if语句的格式2:

    if(比较表达式){

      语句体1;

    }else{

    语句体2;

    }

    执行流程:

    1、首先计算比较表达式的值,看其返回值是true还是false

    2、如果是true,就执行语句体1

    3、如果是false,就执行语句体2

    注意事项:

    else后面是没有比较表达式的,只有if或者else if后面有!

    if语句的格式2和三元运算的相互转化问题:

    三元运算符能实现的,都可以采用if语句来实现,反之则不成立!

    什么时候if语句实现不能用三元改进?

    当if语句控制的操作是一个输出语句的时候就不能。

    为什么呢?因为三元运算符是一个运算符,运算符操作完成就应该有一个结果,而不是一个输出。

    switch语句

    A:switch语句的格式:

    int x = 10;

    switch(表达式){

      case 值1:

        语句体1;

      break;

      case 值2:

        语句体2;

      break;

      ……

      default:

        语句体n+1;

      break;

    }

    B:面试题:

    byte可以作为switch的表达式吗?  (可以)

    long可以作为switch的表达式吗?  (不可以)

    string可以作为switch的表达式吗?  (JDK1.7后可以)

    C:执行流程:

    1、先计算表达式的值

    2、然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句

    &与&&的区别:

    电路问题:

    对于&:不管怎样都会执行”&“符号左右两边的程序

    对于&&:只有当符号”&&“左边的程序为真(true)后,才会执行符号”&&“右边的程序。

    运算规则:

    对于&:只要左右两边有一个false,则为false;只有全部都为true的时候,结果才为true。

    对于&&:只要符号左边为false,则为false,当左边为true,同时右边也为true,结果才为true。

    总结:&与&&两个逻辑运算符结果都是一样的,只是&&有短路的功能,而&没有。

  • 相关阅读:
    交通运输线(LCA)
    POJ 2186 Popular cows(Kosaraju+强联通分量模板)
    Codeforces 351D Jeff and Removing Periods(莫队+区间等差数列更新)
    Codeforces 375D
    Codeforces 86D
    SPOJ D-query(莫队算法模板)
    Educational Codeforces Round 25 D
    Codeforces Round #423 Div. 2 C-String Reconstruction(思维)
    HDU3974 Assign the task(多叉树转换为线段+线段树区间染色)
    bzoj 2463: [中山市选2009]谁能赢呢?
  • 原文地址:https://www.cnblogs.com/clqbolg/p/10851860.html
Copyright © 2020-2023  润新知