zoukankan      html  css  js  c++  java
  • 运算符和表达式详解

     运算符和表达式

    想要更多面试题和学习资料的可以私聊联系我,大家一起交流学习!

    1. 算数运算

    1.1. 使用%运算符

    Java算术运算符除了通常的加(+)、减(-)、乘(*)、除()之外,还包括取模运算(%)和自增(++)及自减(--)运算。+,-,*,/ 比较简单,实验一下即可。

    取模运算(%)意为取余数,只能适用于整数及char类型。示例代码如下所示:

    copytextpop-up

    1. // 输出255除以8所得的余数。
    2. int n = 225; 
    3. System.out.println(n % 8);  //结果为1

    // 输出255除以8所得的余数。

    int n = 225;

    System.out.println(n % 8);  //结果为1

    1.2. 使用“++”和“--”运算符

    Java的自增运算符(++)和自减运算符(--)继承自C++,可以使变量的值加1或减1,但其写在变量前和变量后有不同的效果:

    1. 如果写在变量前,表示在使用这个变量之前加1或减1
    2. 如果写在变量后,表示这个变量使用完之后再加1或减1

    示例代码如下所示:

    copytextpop-up

    1. int a = 10, b = 20;
    2. int c1 = a++; // 先将a的值赋给c1,然后a再自加
    3. int c2 = ++b; // 先将b的值自加,然后再赋给c2
    4. System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2);
    5. // 输出的结果为: a=11, b=21, c1=10, c2=21

    int a = 10, b = 20;

    int c1 = a++; // 先将a的值赋给c1,然后a再自加

    int c2 = ++b; // 先将b的值自加,然后再赋给c2

    System.out.println("a=" + a + ", b=" + b + ", c1=" + c1 + ", c2=" + c2);

    // 输出的结果为: a=11, b=21, c1=10, c2=21

    2. 关系运算

    2.1. 使用关系运算符

    Java中的关系运算符用于判断数据之间的大小关系,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=) 六个运算符。

    在实际应用中常常使用,假设现在想实现转帐功能,输入转帐的金额,需要判断所转帐的金额是否大于当前帐户的金额,那结果只有两个,大于或不大于,在java语言中,使用boolean类型来表示这种是否的状态,如果关系成立为true,否则为false。示例代码如下所示:

    copytextpop-up

    1. int max = 10; 
    2. int num = 9; 
    3. boolean b1 = max > 15; 
    4. boolean b2 = num%2  ==  1; 
    5. System.out.println(b1);  // 结果为false
    6. System.out.println(b2);  // 结果为true

    int max = 10;

    int num = 9;

    boolean b1 = max > 15;

    boolean b2 = num%2  ==  1;

    System.out.println(b1);  // 结果为false

    System.out.println(b2);  // 结果为true

    3. 逻辑运算

    3.1. 逻辑运算

    前面的关系运算符是用于比较两个数值之间的大小关系的, 而逻辑运算符是用来进行逻辑运算的,它是建立在关系运算的基础之上的。当两个关系运算需要兼顾考虑时,可以使用逻辑运算符。

    逻辑运算符包括:与(&&)、或(||)和非(!)。参与逻辑运算的变量或表达式都是boolean类型,运算结果也为boolean类型。逻辑运算规则如下图 - 4所示:

     

    - 4

    通过分析可以看出:

    1. 当变量b1和变量b2同时为true时,&&表达式为true。
    2. 当变量b1和变量b2有一个为true时,||表达式为true。
    3. !只有一个表达式,当b1为true时,!b1为false,b1为false时,!b1为true。

    3.2. 使用“&&”运算符

    两个boolean变量参与“&&”运算时,只有当两个变量均为true的时,运算结果才为true,否则结果为false。示例代码如下所示:

    copytextpop-up

    1. int score = 80; 
    2. boolean b = score >= 60 && score < 90; 
    3. System.out.println(b);  
    4. // 结果为true,因为score的值同时满足大于等于60和小于90这两个条件,逻辑表达式“score >= 60”和“score < 90”的结果均为true,所以&&运算的结果即为true。

    int score = 80;

    boolean b = score >= 60 && score < 90;

    System.out.println(b);  

    // 结果为true,因为score的值同时满足大于等于60和小于90这两个条件,逻辑表达式“score >= 60”和“score < 90”的结果均为true,所以&&运算的结果即为true。

    3.3. 使用“||”运算符

    两个boolean变量参与“||”运算时,当两个变量有一个为true时,结果即为true,只有当两个变量均为false时结果为false。示例代码如下所示:

    copytextpop-up

    1. boolean flag = true
    2. int n = 200; 
    3. boolean b1 = flag || (n >= 0 && n < 100); 
    4. System.out.println(b1); 
    5. // 结果为true,上面这段代码中,表达式“flag || (n >= 0 && n < 100)”的含义是:当flag为true或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为true。

    boolean flag = true;

    int n = 200;

    boolean b1 = flag || (n >= 0 && n < 100);

    System.out.println(b1);

    // 结果为true,上面这段代码中,表达式“flag || (n >= 0 && n < 100)”的含义是:当flag为true或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为true。

     

    3.4. 使用“!”运算符

    “!”运算相对简单,只有一个boolean变量参与运算,运算的值与该变量相反,变量为true时结果为false,变量为false是结果为true。示例代码如下所示:

    copytextpop-up

    1. boolean flag = true
    2. int n = 200; 
    3. boolean b = !flag || (n >= 0 && n < 100); 
    4. System.out.println(b); 
    5. // 结果为false,上面这段代码中,表达式“!flag || (n >= 0 && n < 100)”的含义是:当flag为false或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为false。

    boolean flag = true;

    int n = 200;

    boolean b = !flag || (n >= 0 && n < 100);

    System.out.println(b);

    // 结果为false,上面这段代码中,表达式“!flag || (n >= 0 && n < 100)”的含义是:当flag为false或者n在0到100之间(n大于等于0且小于100)时,结果为true,否则为false。根据flag和n的值,最后的运算结果为false。

    3.5. 关于“短路逻辑”的问题

    Java逻辑运算中的&&和||有短路的特性,当第一个关系表达式就可以判断出整个表达式的结果时,就不会再去判断后面的第二个表达式。

    1. 对于“&&”,当第一个操作数为false时,将不会判断第二个操作数,因为此时无论第二个操作数是什么最后的结果一定是false;
    2. 对于“||”,当第一个操作数为true时,将不会判断第二个操作数,因为此时无论第二个操作数为何,最后的运算结果一定是true。

    示例代码如下所示:

    copytextpop-up

    1. int i = 100, j = 200;
    2. boolean b1 = (i > j) && (i++ > 100);
    3. System.out.println(b1);  // 结果为:false
    4. System.out.println(i);   // 结果为:100,发生短路,i++不会被执行
    5. boolean b2 = i > 0 || j++ > 200;
    6. System.out.println(b2);  // 结果为:true
    7. System.out.println(j);   // 结果为:200,发生短路,j++不会被执行
  • 相关阅读:
    回首2016,展望2017
    认识多线程
    对CloseHandle用法的理解
    CDC、HDC、pDC之间的关系
    兼容位图和兼容DC的理解
    窗口中显示bmp图片的过程
    创建一个bmp格式的简单方法
    说明为什么Button控件不能使用CustomDraw技术
    MFC自绘Button按钮分析和实现
    VC之美化界面篇
  • 原文地址:https://www.cnblogs.com/heqingxiaohuo/p/12056581.html
Copyright © 2011-2022 走看看