欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java运算符以及流程控制语句

程序员文章站 2022-03-21 08:35:46
Java运算符以及流程控制语句一、 运算符1.1 赋值运算符1.2 关系运算符1.3 逻辑运算符1.4 三目运算符/三元运算符1.5 优先级二、流程控制语句2.1 分支2.1.1 if-单分支2.1.2 if else-双分支2.1.3 if-else if – else if -… else 多分支2.1.4 练习2.1.5 选择 switch case2.2 循环 while、do while、for一、 运算符1.1 赋值运算符下面用代码演示一下public static void main...

一、 运算符

1.1 赋值运算符

Java运算符以及流程控制语句
下面用代码演示一下

public static void main(String[] args) {

    int a = 1;
    int b = 1;
    a += b;// a = a + b;
    System.out.println(a );

    byte b1 = 1;
    byte b2 = 1;
    b1 += b2; // b1 = b1 + b2;
    //b1 = b1 + b2;
    System.out.println(b1 );

    /**
     * += /= 等一系列赋值符号,都会默认进行类型转换
     */
    byte b3 = 1;
    short s3 = 1;
    s3 += b3; // s3 = s3 + b3;
    //s3 = s3 + b3; // 类型转换错误,需要强制转换,因为结果是int

       这里面需要注意一下的是当byte,short这些小范围的类型在使用+=、 /= 等一系列赋值符号,都会默认进行类型转换,会将数据类型上升为int,此时需要强制转换.

1.2 关系运算符

Java运算符以及流程控制语句
关系运算符的结果为布尔类型,值为true/false

1.3 逻辑运算符

Java运算符以及流程控制语句
用代码稍微演示一下

public static void main(String[] args) {
        /**
         * 逻辑运算符 , 执行结果是布尔型, true或者false
         * 解释: 布尔表达式意思是:运算结果是布尔值的式子
         *  & 与/和
         *      布尔表达式&布尔表达式
         *      &符号两边的表达式结果都为true时,整个结果才为true.只要有任意一个表达式结果为false,整体结果为false
         *      ===> 全对才对,一错就错
         *  | 或
         *      布尔表达式|布尔表达式
         *      ===> 一对就对,全错才错
         *  ! 非/反
         *      !(布尔表达式)
         *  &&
         *      当符号前边的表达式可以代表整体的结果时,后面的表达式就短路不执行
         *  ||
         *
         */
        System.out.println(1 > 0 & 2 > 1 );// true
        System.out.println(1 > 0 & 2 < 1 );// false
        System.out.println(1 < 0 & 2 < 1 );// false
        System.out.println(1 > 0 && 2 > 1 );// true
        System.out.println(1 > 0 && 2 < 1 );// false
        System.out.println(1 > 0 && 1 / 0 == 1 );// false
        System.out.println(1 < 0 && 2 < 1 );// false

1.4 三目运算符/三元运算符

三目运算
数据类型 变量 = 布尔表达式 ? 为true时执行 : 为false时执行;
1) 冒号两边的执行后结果的数据类型建议一致
2) 如果一致,三目运算整体结果就是冒号两边的运算结果
3) 如果不一致,那么三目运算整体结果的数据类型不确定,但是可以使用Object接收

  //小练习
        int a = 11;
        int b = 1;
        int c = 12;
        int d = 12;
        // 使用三目运算输出a b中最大值
		int max = a > b ? a : b;
        // 使用三目运算输出a b c中最大值
		int max1 = (a > b ? a : b) > c ? (a > b ? a : b) : c;
        // 使用三目运算输出a b c d中最大值
		int max2 = (a > b ? a : b) > (c > d ? c : d) ? (a > b ? a : b) : (c > d ? c : d);

1.5 优先级

Java运算符以及流程控制语句

二、流程控制语句

  1. javase开发,程序运行必须有且只有一个main方法
  2. 执行顺序是: 在main方法内部,从上至下依次逐行执行

2.1 分支

2.1.1 if-单分支

/**
 * if(布尔表达式){
 *   执行语句..;
 * }
 * 流程:
 * 1 程序执行到if,先判断其中的布尔表达式,如果结果是true
 * 2 就执行{} 内的执行语句
 * 3 如果表达式结果是false,就跳过if结构
 * 4 执行后续代码
 *
 */
System.out.println(1 );
int a = 1;
if(a > 0){
    System.out.println("a < 0" );
}
System.out.println(2 );

2.1.2 if else-双分支

/**
 * if(布尔表达式){
 *     执行语句1..;
 * }else {
 *     执行语句2..;
 * }
 * 执行流程:
 * 1 程序执行到if处,先判断表达式
 * 2 如果表达式结果为true,就执行if后的{} 的语句1, 不再执行语句2
 * 3 如果表达式结果为false,就执行else后{}的语句2,跳过if后的语句
 * 4 无论走if后还是else后,ifelse后续代码正常执行
 */
int age = 27;
if (age < 18) {
    System.out.println("未成年,禁止报名驾考" );
}else{
    System.out.println("成年,可以报名驾考" );
}

这里可以注意一点,如果if()后有且只有一句if结构,{}可以省略不写
Java运算符以及流程控制语句

2.1.3 if-else if – else if -… else 多分支

public static void main(String[] args) {
        /**
         * if(布尔表达式) {
         *   执行语句..;
         * } else if(布尔表达式) {
         *   执行语句..;
         * } else if(布尔表达式) {
         *   执行语句..;
         * }else if(布尔表达式) {
         *   执行语句..;
         * } else {
         *
         * }
         */
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt( );
        // 判断输入的数字是周几
        if (num > 0 && num < 8) {
            if (num == 1) {
                System.out.println("星期一" );
            } else if (num == 2) {
                System.out.println("星期二" );
            } else if (num == 3) {
                System.out.println("星期三" );
            } else if (num == 4) {
                System.out.println("星期四" );
            } else if (num == 5) {
                System.out.println("星期五" );
            } else if (num == 6) {
                System.out.println("星期六" );
            } else {
                System.out.println("星期日" );
            }
        } else {
            System.out.println("输入的数字有误!" );
        }
    }

2.1.4 练习

用户输入一个年份,如果是闰年输出是闰年(年份能被4整除,且不能被100整除,或者能被400整除的年份)

public static void main(String[] args) {
       
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份: " );
        int count = 0;
        for (int year = 1; year < 2021;year++) {

            if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
                System.out.println(year+ "是闰年" );
                count++;
            }
        }
        System.out.println("1-2020年之间,共"+count+"闰年" );


    }

商场消费返利活动,手动输入顾客消费金额,如果金额打8折后仍然满1000元,用户就获得200元代金券一张,最后输出用户最终消费金额

 public static void test1() {

        Scanner scanner = new Scanner(System.in);
        System.out.println("您消费的金额是: " );
        // 商场消费的钱数
        double money = scanner.nextDouble( );
        double m = money * 0.8;
        // 打八折,仍满1000
        if (m >= 1000) {
            // 再优惠200
            System.out.println("最终消费金额是: "+ (m-200) );
        } else {
            System.out.println("最终消费金额是: "+m );
        }
    }

2.1.5 选择 switch case

 public static void main(String[] args) {
        /**
         * 1 程序执行到switch处,根据后面的值与其后的case后的值一一比对
         * 2 如果比对一致,执行case后的执行语句
         * 3 如果遇到break,中断当前switch结构,执行后续代码
         * 4 如果switch后的值与case后的值比对不一致,继续向下一个case后比较
         * 5 如果switch后的值与cae后的任何一个都不一致,那么直接执行default后的语句
         * 6 当遇到break会结束当前switch结构,或者按顺序执行到switch的最后一个大括号,即右括号 }
         */
        int num = 4;
        switch (num) {// byte short char int jdk1.7之后还可以String enum(枚举)
            case 1:// 1) case后的值是常量 2) 此处值的类型要与switch后的一致
                   // 3) 值后是冒号
                System.out.println("星期一" );
//                break; // break, 会中断当前switch结构,如果没有break,会造成case击穿
            case 2:
                System.out.println("星期二" );
//                break;
            case 3:
                System.out.println("星期三" );
//                break;
            default: // 1) default结构是非必须 2) default中也可以有break 3) 最后执行
                System.out.println("输入的数字有误" );
        }
        System.out.println("后续..." );

练习
输入 1-12的数字,输出对应的季节
3~5 春季
6~8 夏季
9~11 秋季
12~2 冬季

        int month = 1;
        switch(month) {
            case 3:
            case 4:
            case 5:
                System.out.println("春季" );
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季" );
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季" );
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("冬季" );
                break;

2.2 循环 while、do while、for

public static void main(String[] args) {
        /**
         * 循环四要素
         * 1 循环初始变量
         * 2 循环控制条件
         * 3 循环体
         * 4 循环迭代
         * ---------------
         * int i = 1;
         * while(布尔表达式) {
         *     循环体;
         *     循环迭代;
         * }
         * ---------------
         * 1 执行到while处先判断布尔表达式
         * 2 结果为true,执行循环体
         * 3 再次回到while后的布尔表达式,再判断
         * 4 如果为true继续执行,直到表达式结果为false跳过while循环,执行后续
         */
        // 输出10-1
        int i = 10;
        while(i > 0) {
            System.out.println(i );
            i--;
        }
//        2.打印出1-10之间的偶数

//        3.求1-100的和
        int i1 = 1;
        int sum = 0;
        while(i1 < 101) {
            sum += i1;
            i1++;
        }
        System.out.println("sum = "+sum );
        /**
         * do{
         *     循环体;
         *     迭代;
         * }while(控制条件);
         * -----------
         * 1 程序执行到do处,先执行循环体
         * 2 再判断,如果结果为true
         * 3 再执行do中的循环体
         * 4 再次判断while,直到结果为false时,跳过dowhile结构
         */
        int i3 = 10;
        do{
            System.out.println(i3 );
            i3--;
        }while(i3 > 0);
        // 求1-100的奇数和 偶数和
        int a = 1;
        int oddSum = 0;// 奇数和
        int evenSum = 0;// 偶数和
        do{
            if (a % 2 ==0) {
                evenSum += a;
            } else {
                oddSum += a;
            }
            a++;
        }while (a <= 100);
        System.out.println("奇数和: "+oddSum );
        System.out.println("偶数和: "+evenSum );
        /**
         * for(初始变量;控制条件;迭代){
         *     循环体
         * }
         */
        for(int i4 = 10;i4 > 0;i4--) {
            System.out.println(i4 );
        }
    }

Java运算符以及流程控制语句

本文地址:https://blog.csdn.net/weixin_53326302/article/details/110940357

相关标签: java