java学习的第二天

本文详细介绍了Java中的运算符,包括算术、赋值、比较、逻辑、位移、位运算等,并讨论了逻辑运算符的短路特性。接着,文章深入讲解了逻辑控制语句,如顺序、分支、循环结构,包括for、while、do-while循环的用法及调试技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、运算符

1.按功能分类

  算术运算符:+ - * / %(取余) ++ --

  赋值运算符:+= -= *= /= =

  比较(关系)运算符: == != > < >= <=

  得出的结果都是: boolean类型,true或fasle

  逻辑运算符: & | ^ ! && ||

  位移运算符: << >> >>>

  位运算符: & | ^

  三目运算: boolean类型表达式 ? 结果1 : 结果2

2.按操作个数分类:

  一元(一目)运算符: a++

  二元(二目)运算符: a + b a > b a == b

  三元(三目)运算符: 条件 ? 结果1 : 结果

3.逻辑运算符: & | ^ ! && ||

  &、&&: 一假既假

  |、||: 一真既真

  & 和 && 的区别:

    &: 无论如何,都会将整个表示执行完成

    &&:只要遇到false,则停止判断,称之为短路操作

                         得出的结果都是: boolean类型,true或fasle

4.位运算符: & | ^

  和二进制的计算相关: 0 和 1

  &: 0 和 1 与上 都是 0

  |: 0 和 1 或上 都是 1

  ^: 相同为0,不同为1

5.位移运算符: << >> >>>

  <<: 左移,相当于 ×2

  >>: 右移,相当于 ÷2,如果是负数按照符号位本身填入

  >>>: 无符号右移,相当于 ÷2,如果是负数,

        则永远补0,得到的永远都是一个正大数

 

6.三目运算: boolean类型表达式 ? 结果1 : 结果2

二、逻辑控制语句

1.顺序结构

2.分支结构

    条件: 一定会得出一个boolean类型结果

    if(条件)

    if - else

    if- else if - else

    switch(要判断的值)-case:

      语法结构:

        switch(要判断的值){

            case:

                break;

            case:

                break;

            case:

                break;      注意:

        }

两个switch例题;

ackage c_switch;

import java.util.Scanner;

/*
模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果。
要求:
键盘录入三个整数,其中前两个整数代表参加运算的数据,
第三个整数为要进行的运算
(1:表示加法运算,2:表示减法运算,3:表示乘法运算,4:表示除法运算)
演示效果如下:
	请输入第一个整数: 66
	请输入第二个整数: 44
	请输入您要进行的运算(1:表示加法,2:表示减法,3:表示乘法,4:表示除法): 1
	控制台输出:66+45=100
 */
public class Work01 {
    public static void main(String[] args) {
        //1.定义控制台对象
        Scanner sc = new Scanner(System.in);
        //2.获取整数
        System.out.println("请输入第一个整数:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int num2 = sc.nextInt();
        System.out.println
                ("请输入您要进行的运算 (1:表示加法,2:表示减法,3:表示乘法,4:表示除法)");

        int type = sc.nextInt();
        switch (type) {
            case 1:
                System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
                break;
            case 2:
                System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
                break;
            case 3:
                System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
                break;
            case 4:
                System.out.println(num1 + " / " + num2 + " = " + (num1 * 1.0 / num2));
                break;
            default:
                System.out.println("您输入的运算类别有误");
                break;
        }

    }
}

     

package c_switch;
/*
    switch
 */
public class Demo01 {
    public static void main(String[] args) {
        //需求: 判断每个月都有多少天,输出天数
        int month = 5;
        //4 6 9 11 = 30 / 1 3 5 7 8 10 12 = 31  / 29 = 2
        /*if(month == 4 || month == 6
                || month == 9 || month == 11){
            System.out.println("天数为30天");
        }else if (month == 1 || month == 3
                || month == 5 || month == 7
                || month == 8 || month == 10
                || month == 12){
            System.out.println("天数为31天");
        }else if (month == 2){
            System.out.println("天数为29");
        }else{
            System.out.println("输入月份有误");
        }*/

        int a1 = 10;
        //判断两个值是否相等,可以使用switch 替代 if-else 的判断
        //条件可以存储的变量类型: byte、short、char、int、String、枚举
        switch (month){
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("天数为30天");
                break;
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println("天数为31天");
                break;
            case 2:
                System.out.println("天数为29天");
                break;
            default:
                //相当于if-else if - else 中的else
                //default的内容
                System.out.println("输入月份有误");
        }
    }
}

  要判断的值取值类型:

            byte、short、char、int、String、枚举

        case中需要注意:

            a.case后面根的值是要比较的值,只能是常量不能使变量.

            b.因为case具有穿透性,需要使用break结束.

3.循环结构

  1)for循环

    for(int i = 0; i < 10; i++){}

    for(①初始化值;②判断是否进入循环的条件;③步长){

        ④符合循环条件后,执行的内容(循环体)

    }

    执行顺序: ①②④③ > ②④③ > 直到②不符合

    注意:

      判断是否进入循环的条件是可以跟初始化值没有任何关系

      有次数,有规律可循,会使用for循环

来一个for循环例题;

package d_for.work;
/*
    在控制台输出所有的“水仙花数”,要求每行打印2个
	提示:
	  System.out.print (打印内容);	打印后不换行
	  System.out.println(打印内容);	打印后换行
 */
public class Work02 {
    public static void main(String[] args) {
        //同于统计个数的变量
        int count = 0;
        for (int i = 100; i <= 999; i++) {
            //获取个位
            int units = i % 10;
            //获取十位
            int decade = i / 10 % 10;
            //获取百位
            int hundreds = i / 100;
            if(i == units*units*units +
                    decade*decade*decade +
                    hundreds*hundreds*hundreds){
                //水仙花数
                System.out.print(i + " ");
                //个数+1
                count++;
                if (count % 2 == 0){
                    System.out.println();
                }

            }
        }
    }
}

    Debug模式测试:

     作用:一般用于精准数据变化的监控

        F7: 执行下一行代码

        F8: 跳过这一行代码

        F9: 直接跳到下一个断点位置

  2)while循环

    语法结构:

      ①初始化值;

      while(②判断是否进入循环的条件){

        ④符合循环条件后,执行的内容(循环体)

        ③步长

      }

    执行顺序: ①②④③ > ②④③ > 直到2不满足..

    特点:不知道次数,没有规律可循

例题

package e_while.work;

import java.util.Scanner;

/*
    从键盘读入个数不确定的整数,
    并判断读入的正数和负数的个数,输入为0时结束程序。
    positive 正数
    minus 负数

 */
public class Work02 {
    public static void main(String[] args) {
        Scanner cs = new Scanner(System.in);
        System.out.println("请输出正数: ");
        int num = cs.nextInt();

        int positiveCount = 0;
        int minusCount = 0;
        while(num != 0){
            if(num > 0){
                positiveCount++;
            }
            if (num < 0){
                minusCount++;
            }
            //用户再次输入
            num = cs.nextInt();
        }



    }
}

  3)do-while循环

   语法结构:

     ①初始化值;

     do{

        ④符合循环条件后,执行的内容(循环体)

        ③步长

     }while(②判断是否进入循环的条件);

   执行顺序:①④③② > ②④③ > 直到②不满足

例题

package e_while.work;

import java.util.Scanner;

/* do - while循环实现:
    有猜数字游戏,其游戏规则为:
    程序内置一个 1 到 1000 之间的数字作为猜测的结果,
        获取随机数: int num = Math.random * 1000  (0,1)
    由用户猜测此数字。new Scanner();
    用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了;
        while() - if()判断
    直到用户猜对结果,则提示游戏结束。 break结束
    用户可以提前退出游戏,即,游戏过程中,如果用户录入数字0,则游戏终止。
 */
public class Work05 {
    public static void main(String[] args) {
        //1.随机生成程序内置数值
        int num = 333;


        Scanner sc = new Scanner(System.in);
        int userInput;
        do{
            System.out.println("请输入数字: ");
            //2.用户猜测此数字
            userInput = sc.nextInt();

            //5.输入0,则退出
            if (userInput == 0){
                break;
            }

            //3. 系统提示猜测结果:大了、小了或者猜对了
            if(userInput > num){
                System.out.println("结果大了");
            }else if (userInput < num){
                System.out.println("结果小了");
            }else {
                System.out.println("结果猜对了");
            }
        }while(userInput != num);//条件判断

    }
}


  4)三种循环结构中:

    先判断后执行: for、while

      知道次数,有规律可循则选择for循环

      不知道次数,没有有规律可循则选择while循环

    先执行后判断:do-while

  5)跳转控制语句

    a.continue:跳过本次循环,继续下一次循环

    b.break:结束循环

      return:结束循环(不属于跳转控制语句)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值