20230321——java运算符的学习day02

  1. 算数运算符

+ - * / %

运算符:对常量或者变量进行操作的符号

表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。

不同运算符连接的表达式体现的是不同类型的表达式。

int a = 10;
int b = 20;
int c = a + b

+:是运算符,并且是算术运算符

a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式

整数相除结果只能得到整数,如果想得到小数,需要有小数参与运算

% 获取的是两个数据做除法的余数

•需求:键盘录入一个三位数,求这个三位数每一位的数字和。

package com.wanxi.exercises;

//键盘录入一个三位数,求这个三位数每一位的数字和。

//1、提示用户键盘输入一个三位数
//2、获取用户输入的数据num
//3、 定义变量ge、shi、bai分为个位数、十位数、百位数
//4、定义变量theAnd为数字和。

import java.util.Scanner;

public class TheAnd {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个三位数:");//1、提示用户键盘输入一个三位数
        int num = scanner.nextInt();//2、获取用户输入的数据num
        int ge = num % 10;
        int shi = num / 10 % 10;
        int bai = num / 100 % 10;//3、 定义变量ge、shi、bai分为个位数、十位数、百位数
        int theAnd = ge + shi +bai;
        System.out.println("数字和为:" + theAnd);//4、定义变量theAnd为数字和。
        scanner.close();
    }
}

  1. 自增自减运算符

++ : 让变量自身的值 + 1操作

-- : 让变量自身的值 - 1操作

++在前: 先自增, 再操作

++在后: 先操作, 再自增

--同理

注意事项: 自增自减运算符, 只能操作变量, 不允许操作常量

  1. 数据类型转换

(1)隐式转换

介绍 : 将取值范围小的数据, 或变量, 赋值给另外一个取值范围大的变量, 允许直接赋值

简单记 : 小的给大的可以直接给

细节 : 这里所谓的小和大, 指的是取值范围

(2)强制转换

介绍 : 将取值范围大的数据或变量, 给取值范围小的变量赋值, 不允许直接赋值, 需要强转

简单记 : 大的给小的, 不允许直接给, 需要强转

建议 : 今后尽量减少强转的时候, [有可能] 会造成精度损失

package com.wanxi.test;

public class DateTypeChange {

    public static void main(String[] args) {

        byte num1 = 3;
        byte num2 = 4;
        byte num3 = (byte) (num1 + num2);//数据类型强制转化
        System.out.println(num3);


        byte num4 = 3 + 4;
        System.out.println(num4);//3和4是两个常量, Java存在常量优化机制,编译成功


    }

}

  1. 赋值运算符

基本赋值运算符 : =

扩展赋值运算符 : += , -= , *=, /=, %=

+= : 将符号左右两边的数据, 做加法运算, 将结果赋值给左边

其他的扩展赋值运算符,同理

细节 : 扩展赋值运算符, 底层自带强转效果

目标 : 能够使用扩展赋值运算符, 对代码进行优化

  1. 关系运算符

> >= < <= == !=

结论: 无论简单还是复杂, 结果都是boolean类型的true, false

注意: = 号和 == 号是有区别

= : 赋值操作

== : 比较操作

  1. 三元运算符

介绍 : 可以根据一个判断条件, 达成二者选其一

格式 : 判断条件 ? 值1 : 值2;

执行流程 :

执行判断, 看其返回结果是true, false

true : 值1就是最终结果

false : 值2就是最终结果

package com.wanxi.exercises;

//键盘录入三个整数,找出最大值并打印在控制台。

import java.util.Scanner;

public class MaxOfThree {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入第一个数:");
        int num1 = scanner.nextInt();
        System.out.print("请输入第二个数:");
        int num2 = scanner.nextInt();
        System.out.print("请输入第三个数:");
        int num3 = scanner.nextInt();
        int temp = num1 > num2 ? num1 : num2;
        int theMax = num3 > temp ? num3 : temp;
        System.out.println("最大的数是:" + theMax);
        scanner.close();
    }
}

7.三元运算符

代码层面 : 逻辑运算符连接 boolean 类型的表达式, 或者是值

&(与) : 并且, 遇false则false

|(或) : 或者, 遇true则true

!(非) : 取反

^(异或) : 相同为false, 不同为true

& : 没有短路效果, 无论符号左边是true, false, 右边都要继续执行

&& : 具有短路效果, 当符号左边为false的时候, 右边就不会执行了.

如果符号左边为true, 右边要继续执行

| : 没有短路效果, 无论符号左边是true, false, 右边都要继续执行

|| : 具有短路效果, 当符号左边为true的时候, 右边就不会执行了.

如果符号左边为false, 右边要继续执行

结论: 今后逻辑运算符, 最常用的&& || !

package com.wanxi.test;

/*  银行存取款操作流程, balance =0  为余额*/
/*
 * -----ATM-------
 *       1、存款
 *       2、取款
 *       3、显示余额
 *       4、退出
 * 请选择(1~4):
*/


import java.util.Scanner;
public class DoWhile2 {
    public static void main(String[] args) {
        double balance = 0.0;//定义变量,记录余额
        boolean flag = true;
        Scanner scan = new Scanner(System.in);

        do {
            System.out.println("-----ATM-------");
            System.out.println("       1、存款");
            System.out.println("       2、取款");
            System.out.println("       3、显示余额");
            System.out.println("       4、退出");
            
            System.out.print("请输入你的选择(1~4): ");
            int chose = scan.nextInt();
            switch (chose) {
                case 1:
                    System.out.print("请输入存款金额: ");
                    double money1 = scan.nextDouble();
                    if (money1 > 0) {
                        balance += money1;

                    }
                    break;

                case 2:
                    System.out.print("请输入取款金额: ");
                    double money2 = scan.nextDouble();
                    if (money2 > 0 && money2 <= balance) {
                        balance -= money2;

                    } else {
                        System.out.println("余额不足或者输入有误");
                    }
                    
                    break;

                case 3:
                    System.out.println("你的余额为: " + balance);
                    break;
                    
                case 4:
                    flag = false;
                    System.out.println("再见,欢迎再次使用");
                    break;

                default:

                    System.out.println("输入有误");
            }
            
        } while (flag);

        scan.close();

    }

}

8.运算符的优先级

目标1 : 熟练掌握 () 的使用

目标2 : 常识性的运算顺序, && 的优先级, 大于 ||

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值