• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
安绍峰
独学而无友,则孤陋而寡闻。
博客园    首页    新随笔    联系   管理    订阅  订阅
第4周 4.1运算符的使用

2.7 运算符

2.7.1 算术运算符

表 Java算术运算符

运算符 描述 例子
+ 加法 A + B 结果为 30
- 减法 A - B 结果为 -10
* 乘法 A * B 结果为 200
/ 除法 B / A 结果为 2
% 取余 B % A 结果为 0
++ 自增 A++ 或 ++A 结果为 11
-- 自减 A-- 或 --A 结果为 9

下面举例说明算术运算符的使用。

public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;
        int d;//在成员变量中默认值为0;在局部变量中必须初始化
        System.out.println("a + b = " + (a + b) );
        System.out.println("a - b = " + (a - b) );
        System.out.println("a * b = " + (a * b) );
        System.out.println("b / a = " + (b / a) );
        System.out.println("b % a = " + (b % a) );
        System.out.println("c % a = " + (c % a) );
        System.out.println("a++   = " +  (a++) );
        System.out.println("++a   = " +  (++a) );
        System.out.println("a--   = " +  (a--) );
        System.out.println("--a   = " +  (--a) );
        System.out.println("b--+d   = " +  (b--+d) );
        System.out.println("--b+d   = " +  (--b+d) );
    }
}
输出:
a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5
a++   = 10
++a   = 12
a--   = 12
--a   = 10
b--+d   = 20
--b+d   = 18

2.7.2 关系运算符

表 Java关系运算符

运算符 描述 例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (a == b) 为假。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (a != b) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 (a > b) 为假。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 (a < b) 为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 (a >= b) 为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (a <= b) 为真。

下面举例说明关系运算符的使用。

public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a == b = " + (a == b) );
        System.out.println("a != b = " + (a != b) );
        System.out.println("a > b = " + (a > b) );
        System.out.println("a < b = " + (a < b) );
        System.out.println("b >= a = " + (b >= a) );
        System.out.println("b <= a = " + (b <= a) );
    }
}
输出:
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

2.7.3 逻辑运算符和位运算符

1.逻辑运算符

表 Java逻辑运算符

运算符 描述 例子
&& 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A && B) 为假。
|| 称为逻辑或运算符。如果两个操作数中有任意一个操作数为真,条件为真。 (A || B) 为真。
! 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为真,则逻辑非运算符将使其为假。 !(A && B) 为真。
下面举例说明逻辑运算符的使用。
public class Test {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        System.out.println("a && b = " + (a && b));
        System.out.println("a || b = " + (a || b));
        System.out.println("!a = " + !a);

    }
}
输出:
a && b = false
a || b = true
!a = false

2.位运算符

位运算符用来对二进制位进行操作,~、&、|、^ 是单目运算符,其余都是双目运算符。

(1)移位运算

表 Java 移位运算符

运算符 描述 例子 A=9
<< 按位左移运算符。左操作数的值向左移动右操作数指定的位数。 A << 2得到 40,即 00001010,向左移动 2 位得到 00101000。
>> 按位右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2得到 2,即 00000010,向右移动 2 位得到 00000001。
>>> 按位右移补零操作符。左操作数的值向右移动右操作数指定的位数,高位补零。 A >>> 2得到 2,即 00000010,向右移动 2 位得到 00000001。

下面举例说明移位运算符的使用。

public class Test {
    public static void main(String[] args) {
        int a = 60; /* 60 = 0011 1100 */
        int b = 13; /* 13 = 0000 1101 */
        System.out.println("a << 2 = " + (a << 2) );
        System.out.println("a >> 2 = " + (a >> 2) );
        System.out.println("a >>> 2 = " + (a >>> 2) );
    }
}
输出:

a << 2 = 240
a >> 2 = 15
a >>> 2 = 15
(2)按位运算符

表 Java 按位运算符

运算符 描述 例子A=60,B=13
& 如果两个相应的位都为1,则该位的结果为1,否则为0。 (A & B) 结果为 12,即 0000 1100
| 如果两个相应的位都为0,则该位的结果为0,否则为1。 (A | B) 结果为 61,即 0011 1101
^ 如果两个相应的位值相同,则该位的结果为0,否则为1。 (A ^ B) 结果为 49,即 0011 0001
~ 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (~A ) 结果为 -61,即 1100 0011,在二进制补码形式中。

下面举例说明按位运算符的使用。

public class Test {
    public static void main(String[] args) {
        int a = 60; /* 60 = 0011 1100 */
        int b = 13; /* 13 = 0000 1101 */
        System.out.println("a & b = " + (a & b) );// 12 = 0000 1100
        System.out.println("a | b = " + (a | b) );// 61 = 0011 1101
        System.out.println("a ^ b = " + (a ^ b) );// 49 = 0011 0001
        System.out.println("~a = " + ~a );// -61 = 1100 0011
    }
}
输出:

a & b = 12
a | b = 61
a ^ b = 49
~a = -61

2.7.4 赋值运算符和条件运算符

1.赋值运算符

赋值运算符用于为变量赋值。Java 语言中提供的赋值运算符有以下几种:

运算符 描述 例子
= 简单的赋值运算符,将右边的操作数的值赋给左边的操作数 C = A + B 将 A + B 的值赋给 C
+= 加和赋值操作符,它把右操作数加上左操作数的结果赋值给左操作数 C += A 等价于 C = C + A
-= 减和赋值操作符,它把左操作数减去右操作数的结果赋值给左操作数 C -= A 等价于 C = C - A
*= 乘和赋值操作符,它把左操作数乘以右操作数的结果赋值给左操作数 C *= A 等价于 C = C * A
/= 除和赋值操作符,它把左操作数除以右操作数的结果赋值给左操作数 C /= A,C 等于 C / A
%= 求模和赋值操作符,它把左操作数除以右操作数的余数赋值给左操作数 C %= A 等价于 C = C % A
<<= 左移位赋值运算符 C <<= 2 等价于 C = C << 2
>>= 右移位赋值运算符 C >>= 2 等价于 C = C >> 2
>>>= 无符号右移位赋值运算符 C >>>= 2 等价于 C = C >>> 2
&= 按位与赋值运算符 C &= 2 等价于 C = C & 2
^= 按位异或赋值操作符 C ^= 2 等价于 C = C ^ 2
|= 按位或赋值操作符 C |= 2 等价于 C = C | 2

下面举例说明赋值运算符的使用。

public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;
        a = b + c;
        System.out.println("a = " + a );
        b += c;
        System.out.println("b = " + b );
        a -= b;
        System.out.println("a = " + a );
        a *= b;
        System.out.println("a = " + a );
        a /= c;
        System.out.println("a = " + a );
        a %= d;
        System.out.println("a = " + a );
        a <<= 2;
        System.out.println("a = " + a );
        a >>= 2;
        System.out.println("a = " + a );
        a >>>= 2;
        System.out.println("a = " + a );
    }
}
输出:

a = 35
b = 45
a = -10
a = -450
a = -10
a = 0
a = 0
a = 0
a = 0

2.条件运算符

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的语法如下:

variable x = (expression) ? value if true : value if false

下面举例说明条件运算符的使用。

public class Test {
    public static void main(String[] args) {
        int a , b;
        a = 10;
        b = (a == 1) ? 20: 30;
        System.out.println( "Value of b is : " +  b );
        b = (a == 10) ? 20: 30;
        System.out.println( "Value of b is : " + b );
    }
}
输出:

Value of b is : 30
Value of b is : 20

2.7.5 运算符优先级

运算符优先级确定了解释表达式的方式。这就像在数学中一样,数学中有优先级规则来决定先执行除法还是先执行乘法。在 Java 中,表达式也可以根据运算符的优先级来确定执行顺序。例如,乘法运算符的优先级高于加法运算符,这表示乘法运算符会先于加法运算符被计算。

下面是运算符优先级的完整列表,具有最高优先级的运算符在表的最上面,最低优先级的在表的最下面。同一行中的两个运算符具有相同的优先级。

类别 运算符 结合性
后缀 () [] . (点操作符) 左到右
一元 expr++ expr-- 右到左
一元 ++expr --expr + - ~ ! 右到左
类型转换 (type) 右到左
乘性 * / % 左到右
加性 + - 左到右
移位 >> >>> << 左到右
关系 > >= < <= 左到右
相等性 == != 左到右
按位与 & 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 || 左到右
条件 ? : 右到左
赋值 = += -= *= /= %= &= ^= |= <<= >>= >>>= 右到左
逗号 , 左到右

2.8 案例:银行智能取款

2.8.1 需求分析

银行智能取款机,需要实现以下功能:

  1. 获取用户输入的取款金额
  2. 判断取款金额是否合法(大于0,小于等于余额)
  3. 输出取款后的余额

2.8.2 设计思路

  1. 定义一个变量balance,表示余额,初始值为8888
  2. 使用Scanner类获取用户输入的取款金额
  3. 判断取款金额是否合法,如果不合法,输出提示信息并结束程序
  4. 计算取款后的余额,并输出

2.8.3 代码实现

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        double balance = 8888.0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入取款金额:");
        double amount = scanner.nextDouble();
        if (amount <= 0 || amount > balance) {
            System.out.println("取款金额不合法!");
            return;
        }
        balance -= amount;
}
        System.out.println("取款成功,当前余额为:" + balance);
    }
}

独学而无友,则孤陋而寡闻。
posted on 2024-09-22 04:03  安绍峰  阅读(68)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3