zoukankan      html  css  js  c++  java
  • java基础语法2-运算符与流程控制

    关键字-标识符-常量和变量-运算符-流程控制-方法-数组

    5 运算符

    • 算术运算符Arithmetic Operators
    • 赋值运算符Assignment Operators
    • 比较运算符Compare Operators
    • 逻辑运算符Logic Operators
    • 位运算符Bitwise Operators
    • 三元运算符Ternary Operator

     5.1算术运算符Arithmetic Operators

    注意:
    1.除法操作两个操作数是整数时,结果也是整数,余数部分舍弃
    int x = 3500;
    System.out.println(x / 1000 * 1000);
    2.%操作获得的是除法操作的余数
    %结果的符号取决于被模数,即%前面的数的符号决定了结果的正负

     5.1.1++,--

    ++:自加
    放在变量前,先自增,再使用
    放在变量后,先使用,后自增
    --:自减
    放在变量前,先自减,后使用
    放在变量后,先使用,后自减
    注意:只能对变量使用

     练习题:

    练习题1:
    int a = 10;
    int b = 10;
    int c = 10;
    a = --c;
    b = c++;
    c = ++a;
    经过以上操作,abc的值分别是多少?
    练习题2:
    int a = 4;
    int b = (++a)+(a++)+(a*10);
    经过以上操作,ab的值分别是多少?
    练习题

     5.1.2字符串参与运算:

    1.两个操作数都是字符串
    2.一个字符串一个变量
    3.多个操作数
    “+”除了字符串相拼接功能外,还能把非字符串转换成字符串,加空串即可
    String s = 5 + "";

    思考:
    System.out.println("5+5="+5+5);//打印结果是?
    System.out.println(5+5+"hello");
    思考

     

    5.2扩展的赋值运算符

    符号:
      = , +=, -=, *=, /=, %=(扩展的赋值运算符)
      左侧为变量,右侧为字面量,或变量,或表达式
    示例:
      int a,b,c; a=b=c=3;//支持连续赋值

      int a = 3;

    a += 5;    //等同运算:a=a+5;
    思考:
    short s = 3; 
    s = s + 2; //报错
    s += 2; //扩展的赋值运算符会默认做强制的类型转换
    s=(short)(s+2)
    s=s+2//编译失败,因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型。
    s+=2//编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
    思考

     

    5.3比较运算符Compare Operators

    操作数是常量,或变量,或表达式
    比较运算符的结果是boolean型,要么是true,要么是false,常用作条件判断

    note:比较运算符“==”不能误写成“=”

    5.4逻辑运算符Logical Operators

    逻辑运算符的操作数都是布尔型表达式

    “&”和“&&”(短路与)的区别:
    单&时,左边无论真假,右边都进行运算;
    双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算.
    “|”和“||”的区别同理,双或时,左边为真,右边不参与运算

    总结:
    右边只有在需要的时候,才参与运算

    异或( ^ )与或( | )的不同之处是:异或求的是异
    或( | ):只要有个一为true,结果就为true

     

    5.5位运算符Bitwise Operators

        位运算是直接对二进制进行运算,所以必须知道操作数的二进制位才行

    按位异或运算的两个简单应用
    
    1.不使用第三方变量交换两个变量
    2.简单加密
    应用和思考

    规律:
    在不发生有效位丢失,且不改变符号位的情况下,左移运算相当于被操作数乘以2的n次幂,右移运算相当于除以2的n次幂

    注意:
    假设操作数为int型,移动的位数为x,若x超过32位,那么它实际移动的位数是 x%32

    例如:
    2 << 34 等价于 2 << 2 
    2 >> 33 等价于 2 >> 1
    3 >> 32 结果是 ?
    例题

    5.6三元运算符Ternary Operator

    格式

    (条件表达式)?表达式1:表达式2;

    如果条件为true,整个表达式结果是表达式1;
    如果条件为false,整个表达式结果是表达式2;

    示例:
    获取两个数中大数
    int x=3,y=4;
    int max = (x>y)?x:y; //变量max存储的就是两个数的大数
    示例
    三元表达式整体是有值的,也就是说,它不能单独使用例如下面的写法就是错的:
        2 > 1 ? true:false;
    
    要么直接打印,要么赋值
    System.out.println(2 > 1 ? true:false);
    boolean bol = (2 > 1)?true:false;
    不能单独
    面试题:
    下面语句的输出结果是?
       System.out.println(2>1?2:1.0);
    
    
    res:2.0
    面试题

    6.程序流程控制

    • 顺序结构(宏观上)
    • 分支结构/选择结构(if,switch)
    • 循环结构(while,do-while,for)

    6.1顺序结构

    语句按照顺序依次执行
    单纯的顺序结构的程序基本不存在

    但是,大型程序从宏观上来看的话,各个模块之间也是呈现顺序结构

    6.2分支结构

    6.2.1判断结构
    程序根据条件表达式的值来决定程序的走向

    if语句注意事项:
    if后的括号内一定是布尔值或者布尔表达式
    第二种格式与三元运算符的区别:三元运算符运算完要有值出现,并且可以写在其他表达式中
    if的语句块中可以加多条语句,实现更复杂的逻辑
    if/else后边的大括号可以省略,此时if语句只能控制到第一个分号结束;如果有多条语句的话,不能省略
    建议不要省略大括号
     

     6.2.2选择结构

    switch语句特点:

      • switch语句选择的类型只有四种:byte,short,int , char。
      • case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
      • 结束switch语句的两种情况: 遇到break,执行到switch语句结束。
      • 匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束

      6.2.3循环结构

    while - do while - for

    循环语句可以在满足循环条件的情况下,反复执行某一段代码
    被反复执行的代码称为循环体
    需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
    完整的循环应该包含以下四个部分:

    1. 初始化语句:初始化工作,在循环体开始之前执行
    2. 循环条件:一个boolean表达式,决定是否执行循环体
    3. 循环体:反复执行的部分
    4. 迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束

        for循环:

    for运行的顺序:
    1.执行初始化表达式,只执行一次,通常是定义循环变量语句
    2.判断循环条件:为真就往下执行;为假就结束循环
    3.执行循环体语句
    4.执行循环变量控制语句,一般是循环变量的自增或自减
    5.回到第2步,重复这个过程,直到为假时结束

    for循环注意事项:
    1.循环变量通常定义为int型,因为最常用的就是int型
    2.循环条件判断的结果是boolean类型值
    3.小括号中的分号不能写成中文的分号
    4.如果循环体只有一条语句的话,可以省略大括号,但建议写全
    5.循环变量控制语句不必每次改变1,根据情况,可以是任意值

    1.在控制台上依次打印1-10
    2.在控制台上依次打印10-1(练习)
    3.求1-10所有数之和
    4.求出1-100之间所有的偶数之和
    5.求出1-100之间所有的奇数之和(练习)
    6.求出5的阶乘
    7.求水仙花数:(水仙花数见注解)
    8.列出5位数中的回文数:(回文数见注解)
    9.统计1000以内,同时是3,5,7的倍数的数有多少个?
    案例

         while循环:

          

            

    执行流程:
    1.执行初始化语句(如果有的话)
    2.判断条件表达式真假:如果真,往下执行;如果假,结束循环
    3.执行循环体语句
    4.执行循环变量控制语句(如果有的话)
    5.返回第2步,重复执行,直到条件为假,结束循环

     for循环的循环变量,一般情况下在循环外是不能访问到的,因为它的作用域是在for循环的{}之内,但是可以通过把循环变量定义在外边来实现这个功能;或者定义计数器。

     

    do-while:

    执行流程
    1.执行初始化部分(如果有的话)
    2.执行循环体语句
    3.执行循环变量控制语句(如果有的话)
    4.判断条件表达式,如果为真,返回第2步;如果假,结束循环
    特点:循环体至少会被执行一次

    注:
    for里面的两个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
    while与for可以互换,区别在于for为了循环而定义的变量在for循环结束时就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
    最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

    1.当明确知道循环的范围的时候,通常使用for
    2.当不明确循环次数的时候,for和while都可以,通常使用while

    6.2.4 其他流程控制语句

    break(跳出), continue(继续)
    break语句:应用范围:选择结构和循环结构。
    continue语句:应用于循环结构。
    注:

    1. 这两个语句离开应用范围,存在是没有意义的。
    2. 这个两个语句单独存在下面都不可以有语句,因为执行不到。
    3. continue语句是结束本次循环继续下次循环。
    4. 标号的出现,可以让这两个语句作用于指定的范围。
  • 相关阅读:
    维护需求与新增需求
    LoadRunner如何在注册业务脚本中设置参数化唯一性
    常用的功能测试方法
    应用代码性能诊断分析之内存泄漏
    (52)ElasticSearch之字符串排序问题
    (51)ElasticSearch之query string查询及copy_to的使用
    (50)ElasticSearch之分页查询中的deep paging问题
    (49)ElasticSearch之多index,多type查询
    (48)ElasticSearch之查询结果分析
    (47)ElasticSearch之bulk语法格式解析
  • 原文地址:https://www.cnblogs.com/wqbin/p/11143438.html
Copyright © 2011-2022 走看看