DAY02_运算符和选择语句

 

 

1:运算符

对数据进行运算。而对数据运算就要用到运算符。

和表达式做一个简单的描述:

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

表达式:运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。

举例说明:**

int a = 10;

int b = 20;

int c = a + b;

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

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

1.1 算术运算符

Java中的算术运算符有如下几种:

了解了Java中的算术运算符之后,下面我们到IDEA中去使用一下:

/*
    算术运算符
 */
public class OperatorDemo {
    public static void main(String[] args) {
        //定义两个int类型的变量
        int a = 6;
        int b = 4;

        System.out.println(a + b);//10
        System.out.println(a - b);//2
        System.out.println(a * b);//24
        System.out.println(a / b);//1.5? 1
        System.out.println(a % b);//2

        //整数相除只能得到整数,要想得到小数,必须有浮点数的参与
        System.out.println(6.0 / 4);
    }
}

 最后,我们来总结一下,刚才在演示代码的时候有两个注意事项:

讲解完毕后,大家赶快动手练习一下吧。

1.2 案例数值拆分

需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台

什么意思呢?下面我们举例来说明一下:

举例:int number = 123;

在控制台输出结果:

个位是:3

十位是:2

百位是:1

知道了要做什么后,下面我们来分析一下如何获取个位,十位,百位:

分析:

① 个位的计算:数值 % 10

123 除以 10(商12,余数为3)

② 十位的计算:数值 / 10 % 10

123 除以 10 (商12,余数为3,整数相除只能得到整数)

12 除以 10 (商1,余数为2)

③ 百位的计算:数值 / 10 / 10 % 10

123 / 10 / 10 % 10(123 / 10 得到12,12 / 10 得到1,1 % 10 得到 1)

分析完毕之后,下面我们到IDEA中去实现一下:

/*
    需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台
 */
public class OperatorTest {
    public static void main(String[] args) {
        //定义一个三位数
        int number = 123;

        //获取个,十,百位数据
        int ge = number % 10;
        int shi = number / 10 % 10;
        int bai = number / 100 % 10;

        //输出结果
        System.out.println("个位是:" + ge);
        System.out.println("十位是:" + shi);
        System.out.println("百位是:" + bai);
    }
}

讲解完毕后,大家赶快动手练习一下吧。

1.3 +操作的三种情况

1.3.1 数字相加(类型转换)

在Java程序中,数据参与运算,要求类型一致。这里就涉及到了数据的类型转换。而类型转换又分为两种:

  1. 隐式转换

  2. 强制转换

隐式转换:把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量

强制转换:把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量

格式:数据类型 变量名 = (目标数据类型)(数值或者变量)

IDEA中代码演示如下:

/*
    数字相加
 */
public class OperatorDemo01 {
    public static void main(String[] args) {
        int a = 10;
        double b = 13.14;
        System.out.println(a + b);

        int c = (int)(a + b);
        System.out.println(c);
//        double d = a + b;

        short s = 10;
        int i = 20;
        int j = s + i;
//        short ss = s + i;

        short ss = (short) (s + i);
    }
}

 讲解完毕后,大家赶快动手练习一下吧。

1.3.2 字符相加

来,继续啊,这里我们再来说一下字符参与+操作。

先到IDEA中去讲解,然后再回来总结。

IDEA中代码演示如下:

/*
    字符相加
 */
public class OperatorDemo02 {
    public static void main(String[] args) {
        //定义两个变量
        int i = 10;
        char ch = 'A';//'A'的值是65
        ch = 'a';//'a'的值是97
        ch = '0';//'0'的值是48
        System.out.println(i + ch);
    }
}

代码演示完毕后,回到资料总结:

字符参与+操作,其实就是拿字符在计算机底层对应的数值来进行计算的,这里我们了解一下英文大小写字符和数字字符对应的数据值:

  • ‘A’ 65 A-Z是连续的

  • ‘a’ 97 a-z是连续的

  • ‘0’ 48 0-9是连续的

这里也给大家准备了一张ASCII码表,里面有常用的字符及其对应的数值关系:

 1.3.3 字符串相加

接下来,我们继续讲解字符串相加,先到IDEA中去讲解,然后再回来总结。

IDEA中代码演示如下:

/*
    字符串相加
 */
public class OperatorDemo03 {
    public static void main(String[] args) {
        System.out.println("it" + "heima");
        System.out.println("itheima" + 666);
        System.out.println(666 + "itheima");

        System.out.println("itheima" + 6 + 66);
        System.out.println(1 + 99 + "年itheima");
    }
}

代码演示完毕后,回到资料总结:

  • 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算

    • “zhongguo”+ 666

  • 当连续进行“+”操作时,从左到右逐个执行

    • 1 + 9999 + “岁zhongguo”

讲解完毕后,大家赶快动手练习一下吧。

1.4 赋值运算符

下面呢,我们来学习赋值运算符。

Java中的赋值运算符有如下几种:

了解了Java中的赋值运算符之后,下面我们到IDEA中去使用一下:  

/*
    赋值运算符
 */
public class OperatorDemo {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("a:" + a);

        // += : 把左边和右边的数据相加,最后把结果赋值给左边
//        a += 20;
        a = a + 20;
        System.out.println("a:" + a);


        //注意:扩展的赋值运算符底层隐含了强制类型转换
        short s = 1;
//        s += 2;
        s = (short) (s + 2);
        System.out.println("s:" + s);
    }
}

最后,我们来总结一下,刚才在演示代码的时候有个注意事项:

 讲解完毕后,大家赶快动手练习一下吧。

2:选择语句

来,继续啊,为了控制程序的执行流程,Java 就提供了一些流程控制语句,我们先来举例说明一下:

顺序结构:从上往下,依次执行

 选择结构:

QQ界面的登录,填写账号和密码正确,展示好友列表界面。填写账号或者密码有误,提示:你输入的账号或密码不正确。

这就是通过选择结构来实现的,实际开发中,类似这种逻辑判断的情况非常常见。

循环结构:

比如说,京东商城中,查询手机数据,京东就会返回给你一堆符合你查询要求的数据。

假如,每一部手机数据的展示需要5行代码,如果最终返回了1000部手机,你就需要编写5000行代码来实现数据展示。

这样就太麻烦了,那么,有没有一种流程语句,能够简化这种操作呢?答案肯定是有的,就是我们的循环结构,它就可以通过一个比较简单的结构来控制我们的手机展示1000次。

比如说,带着这样写就可以了,这就是循环结构。

 

首先,我们来学习顺序结构

2.1 顺序结构

顺序结构:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行

执行流程图:

 

 

/*
    顺序结构语句
 */
public class OrderDemo {
    public static void main(String[] args) {
        System.out.println("开始");
        System.out.println("语句A");
        System.out.println("语句B");
        System.out.println("语句C");
        System.out.println("结束");
    }
}

这个比较简单,也没什么好练习的。就不练了,我们继续往下学习。

2.2 Debug的基本使用

为了帮助大家更好的理解程序的执行流程,我们来学习Debug,那什么是Debug呢?

Debug:是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序

它的两大作用,查看程序执行流程,调试程序。由于目前我们每个程序的代码内容还比较少,

所以,今天重点掌握查看程序执行流程,当代码复杂的时候,我们需要通过debug来调试程序。那么,debug操作的流程是什么样子的呢?

在讲解操作流程前,我们来说一下:

Debug,又被称为断点调试,断点其实是一个标记,告诉我们从哪里开始查看

知道了Debug被称为断点调试后,我们来讲一下Debug的操作流程:

① 如何加断点

选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可。如图

 ② 如何运行加了断点的程序

在代码区域右键Debug执行

 ③ 看哪里

看Debugger窗口,看Console窗口

 ④ 点哪里

点(Step Over F8) 开始,点(Stop)结束

 ⑤ 如何删除断点

选择要删除的断点,单击鼠标左键即可。也就是把第一步的动作,再做一次即可。

总结一下,Debug的使用流程:

①如何加断点:选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可

②如何运行加了断点的程序:在代码区域右键Debug执行

③看哪里:看Debugger窗口,看Console窗口

④点哪里:点(Step Over F8) 开始,点(Stop)结束

⑤如何删除断点:选择要删除的断点,单击鼠标左键即可

讲解完毕后,大家赶快动手练习一下吧。

通过Debug的方式看一下,如下代码的执行流程:

/*
    Debug查看程序执行流程
 */
public class DebugDemo {
    public static void main(String[] args) {
        //定义一个int类型的变量,用来表示价格
        int price = 998;

        //输出变量
        System.out.println(price);

        //修改变量的值
        price = 888;

        //再次输出变量的值
        System.out.println(price);
    }
}

2.3 选择语句之if

选择语句有两种结构:

  1. if语句

  2. switch语句

这里我们先来学习if语句,它会根据判定的结果(真或假)决定执行某个分支的代码

举例说明一下:

 

无人驾驶的核心就是需要编写大量的判断逻辑,让车辆的行驶变得更加安全。

了解了交通信号灯的基本逻辑后,下面呢,我们通过if语句来实现过马路的信号灯判断,而if语句呢,有三种格式,这里我们首先来学习第一种格式

2.3.1 if语句格式1

格式:

 

执行流程:

 

 

/*
    if语句格式1
 */
public class IfDemo01 {
    public static void main(String[] args) {
        //定义一个变量,用来表示绿灯的状态
        boolean isGreen = true;
        isGreen = false;

        if(isGreen) {
            System.out.println("绿灯行");
        }
    }
}

讲解完毕后,大家赶快动手练习一下吧。

2.3.2 if语句格式2和格式3

刚才我们通过if语句格式1进行了判断,是绿灯的时候,可以通行,但是不是绿灯的时候,没有告诉我不可以通行啊。所以,这里就产生了if语句的第二种格式,先在代码中演示,再回去总结:

/*
    if语句格式2
 */
public class IfDemo02 {
    public static void main(String[] args) {
        //定义一个变量,用来表示绿灯的状态
        boolean isGreen = true;
        isGreen = false;

        if (isGreen) {
            System.out.println("绿灯行");
        } else {
            System.out.println("不是绿灯,不允许行使");
        }
    }
}

演示完毕后,我们来说一下,if语句格式2:

 

 

public class IfDemo03 {
    public static void main(String[] args) {
        //定义三个变量,表示交通信号灯的三种状态
        boolean isRed = true;
        boolean isGreen = true;
        boolean isYellow = true;
        
        if (isRed) {
            System.out.println("红灯停");
        }

        if (isGreen) {
            System.out.println("绿灯行");
        }

        if (isYellow) {
            System.out.println("黄灯亮了等一等");
        }
    }
}

很明显,这是不合理的,因为我们把三种状态都设置为true了,而实际生活中,只会有一种状态为true,怎么解决呢多种情况的判断呢?这个时候就产生了if语句的第三种格式,先在代码中演示,再回去总结:  

/*
    if语句格式3
 */
public class IfDemo03 {
    public static void main(String[] args) {
        //定义三个变量,表示交通信号灯的三种状态
        boolean isRed = true;
        boolean isGreen = true;
        boolean isYellow = true;

        //红灯
//        isGreen = false;
//        isYellow = false;

        //绿灯
//        isRed = false;
//        isYellow = false;

        //黄灯
//        isRed = false;
//        isGreen = false;

        //出现了故障,信号灯都不亮了
        isRed = false;
        isGreen = false;
        isYellow = false;


        if(isRed) {
            System.out.println("红灯停");
        }else if(isGreen) {
            System.out.println("绿灯行");
        }else if(isYellow) {
            System.out.println("黄灯亮了等一等");
        } else  {
            System.out.println("交通信号灯故障,请在保证安全的情况下通行");
        }
    }
}

 

 

2.3.3 案例1(交通信号灯)

需求:交通信号灯由红灯、绿灯、黄灯组成,请通过程序实现不同的信号灯给出不同的提示。

提示信息:红灯停、绿灯行、黄灯亮了等一等

首先,我们来简单的分析一下:

分析:

① 用哪种类型来表示信号灯的三种状态呢?

用int类型来表示信号灯的三种状态(1表示红灯,2表示绿灯,3表示黄灯)

② 用if语句的哪种格式来实现该需求呢?

一般来说:1种情况的判断用if格式1,2种情况的判断用if格式2,多种情况的判断用if格式3

③ if语句判断的表达式该怎么写呢?

int light = 1;

if(light == 1) {…}

==:是关系运算符,用来判断两个数据是否相等,如果相等,结果为true,否则为false

分析完毕后,我们来说一下实现步骤:

实现步骤:

① 定义一个int类型的变量用来表示信号灯的状态(1表示红灯,2表示绿灯,3表示黄灯)

② 用if语句格式3进行多种情况的判断

③ 根据不同的情况给出不同的提示信息

知道了实现步骤,下面我们到IDEA中去实现一下:

/*
    需求:交通信号灯由红灯、绿灯、黄灯组成,请通过程序实现不同的信号灯给出不同的提示。
    提示信息:红灯停、绿灯行、黄灯亮了等一等
 */
public class IfTest01 {
    public static void main(String[] args) {
        //1:定义一个int类型的变量用来表示信号灯的状态(1表示红灯,2表示绿灯,3表示黄灯)
        int light = 1;
        light = 2;
        light = 3;
        light = 4;

        //2:用if语句格式3进行多种情况的判断
        //3:根据不同的情况给出不同的提示信息
        if (light == 1) {
            System.out.println("红灯停");
        } else if (light == 2) {
            System.out.println("绿灯行");
        } else if (light == 3) {
            System.out.println("黄灯亮了等一等");
        } else {
            System.out.println("交通信号灯故障,请在保证安全的情况下通行");
        }
    }
}

讲解完毕后,大家赶快动手练习一下吧。

2.3.4 关系运算符

Java中的关系运算符有如下几种:

/*
    关系运算符
 */
public class OperatorDemo01 {
    public static void main(String[] args) {
        //定义三个int类型的变量
        int i = 10;
        int j = 20;
        int k = 10;

        //等于:==
        System.out.println(i == j);//false
        System.out.println(i == k);//true
        System.out.println("--------");

        //不等于:!=
        System.out.println(i != j);//true
        System.out.println(i != k);//false
        System.out.println("--------");

        //大于:>
        System.out.println(i > j);//false
        System.out.println(i > k);//false
        System.out.println("--------");

        //大于等于:>=
        System.out.println(i >= j);//false
        System.out.println(i >= k);//true
        System.out.println("--------");

        //千万不要把==写成了=
        System.out.println(i = j); //20
    }
}

 最后,我们来总结一下,刚才在演示代码的时候有两个注意事项:

 

讲解完毕后,大家赶快动手练习一下吧。

2.3.5 案例2(奇偶数)

需求:给定一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数

提示:偶数是能够被2整除的整数

首先,我们来简单的分析一下:

分析:

① 如何判断一个整数是奇数还是偶数?

整数对2进行取余,余数为0是偶数,否则为奇数

② 用if语句的哪种格式来实现该需求呢?

该整数要么是偶数,要么是奇数,2种情况,所以用if语句格式2

分析完毕后,我们来说一下实现步骤:

实现步骤:

① 定义一个int类型的整数

② 用if语句格式2进行判断

③ 根据是否是偶数给出不同的提示信息

知道了实现步骤,下面我们到IDEA中去实现一下:

/*
    需求:给定一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
 */
public class IfTest02 {
    public static void main(String[] args) {
        //1:定义一个int类型的整数
        int number = 10;
        number = 9;

        //2:用if语句格式2进行判断
        //3:根据是否是偶数给出不同的提示信息
        if (number % 2 == 0) {
            System.out.println(number + "是偶数");
        } else {
            System.out.println(number + "是奇数");
        }
        
    }
}

讲解完毕后,大家赶快动手练习一下吧。

2.3.6 案例3(手机以旧换新)

需求:张三想买一台7988元的新手机,他的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新优惠,把他旧手机交给店家,新手机就能够打8折优惠。

为了更省钱,要不要以旧换新?请通过程序告诉张三

首先,我们来简单的分析一下:

分析:

① 计算不使用以旧换新的花费

7988 - 1500

② 计算使用以旧换新的花费

7988 * 0.8

③ 用if语句的哪种格式来实现该需求呢?

if语句格式2

分析完毕后,我们来说一下实现步骤:

实现步骤:

① 定义变量(money1)纪录不使用以旧换新的花费

② 定义变量(money2)纪录使用以旧换新的花费

③ 用if语句格式2进行判断 money1是否大于money2

④ 根据判断结果,给出相应的提示

知道了实现步骤,下面我们到IDEA中去实现一下:

/*
    需求:张三想买一台7988元的新手机,他的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新优惠,
        把他的旧手机交给店家,新手机就能够打8折优惠。为了更省钱,要不要以旧换新?请通过程序告诉张三
 */
public class IfTest03 {
    public static void main(String[] args) {
        //1:定义变量(money1)纪录不使用以旧换新的花费
        int money1 = 7988 - 1500;

        //2:定义变量(money2)纪录使用以旧换新的花费
        double money2 = 7988 * 0.8;

        //3:用if语句格式2进行判断 money1是否大于money2
        //4:根据判断结果,给出相应的提示
        if (money1 > money2) {
            System.out.println("使用以旧换新更省钱");
        } else {
            System.out.println("不使用以旧换新更省钱");
        }
        
    }
}

讲解完毕后,大家赶快动手练习一下吧。

2.3.7 案例4(你是青年人吗)

需求:给出你的年龄,通过程序判断你是否属于青年人?

提示:世界卫生组织,经过对全球人体素质和平均寿命进行测定,对年龄划分标准作出了新的规定

 

/*
    需求:给出你的年龄,通过程序判断你是否属于青年人?
    提示:青年人的年龄范围 18~65
 */
public class IfTest04 {
    public static void main(String[] args) {
        //1:定义一个int类型的变量来表示你的年龄
        int age = 22;
        age = 100;

        //2:用if语句格式2进行判断看你是否属于青年人
        //3:根据是否是青年人给出不同的提示信息
        if(age>=18 && age<=65) {
            System.out.println("你是青年人");
        } else {
            System.out.println("你不是青年人");
        }
        
    }
}

讲解完毕后,大家赶快动手练习一下吧。

2.3.8 逻辑运算符

Java中常用的逻辑运算符有如下几种:

 

/*
    逻辑运算符
 */
public class OperatorDemo02 {
    public static void main(String[] args) {
        //定义变量
        int i = 10;
        int j = 20;
        int k = 30;

        //逻辑与:&&
        System.out.println((i>j) && (i>k));//false && false
        System.out.println((i<j) && (i>k));//true && false
        System.out.println((i>j) && (i<k));//false && true
        System.out.println((i<j) && (i<k));//true && true
        System.out.println("-----------------------");

        //逻辑或:||
        System.out.println((i>j) || (i>k));//false || false
        System.out.println((i<j) || (i>k));//true || false
        System.out.println((i>j) || (i<k));//false || true
        System.out.println((i<j) || (i<k));//true || true
        System.out.println("-----------------------");

        //逻辑非:!
        System.out.println(!(i>j));//!false
        System.out.println(!!(i>j));//!!false
        System.out.println(!!!(i>j));//!!!false
        System.out.println(!!!!(i>j));//!!!!false
        
    }
}

讲解完毕后,大家赶快动手练习一下吧。

2.3.9 三元运算符

来,继续啊,下面我们来学习三元运算符:

格式:关系表达式 ?表达式1 :表达式2;

范例:a > b ? a : b;

执行流程:

  • 首先计算关系表达式的值

  • 如果值为true,表达式1的值就是运算结果

    如果值为false,表达式2的值就是运算结果

了解了三元运算符的执行流程后,下面我们到IDEA中去使用一下:

/*
    三元运算符
 */
public class OperatorDemo03 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        int max = a > b ? a : b;

        System.out.println("较大的值是:" + max);
    }
}

 

讲解完毕后,大家赶快动手练习一下吧。

2.3.10 三元运算符和if语句格式2的区别

这里呢,我们来讲解一下三元运算符和if语句格式2的区别,它们有什么区别呢?我们先到IDEA中进行讲解,然后再回来总结:

/*
    三元运算符和if语句格式2的区别
 */
public class OperatorTest {
    public static void main(String[] args) {
        //定义两个int类型的变量
        int a = 10;
        int b = 20;

        //需求:获取两个数中的较大值
        //if语句实现
//        int max;
//        if (a > b) {
//            max = a;
//        } else {
//            max = b;
//        }
//        System.out.println("较大的值是:" + max);

        if(a > b) {
            System.out.println("较大的值是:" + a);
        }else {
            System.out.println("较大的值是:" + b);
        }

        //三元运算符实现
        int max = a > b? a: b;
        System.out.println("较大的值是:" + max);
    }
}

讲解完毕之后,回来总结一下:

  • 如果if语句控制的内容:是用变量纪录数据值,可以通过三元运算符改进

 

  • 如果if语句控制的内容是:是通过输出语句直接输出数据值,无法通过三元运算符改进

 

好了,关于三元运算符和if语句格式2的区别我们就讲到这里。这个知识大家先了解一下,方便我们后面在适合的场景选择合适的实现方案。

2.4 选择语句之switch

来,继续啊,下面我们来学习选择语句中的switch语句。

格式:

 

 

 

/*
    switch语句
 */
public class SwitchDemo {
    public static void main(String[] args) {
        //定义一个int类型的变量用来表示信号灯的状态(1表示红灯,2表示绿灯,3表示黄灯)
        int light = 1;
//        light = 2;
//        light = 3;
//        light = 4;

        //用switch语句实现交通信号灯案例
        switch (light) {
            case 1:
                System.out.println("红灯停");
                break;
            case 2:
                System.out.println("绿灯行");
                break;
            case 3:
                System.out.println("黄灯亮了等一等");
                break;
            default:
                System.out.println("交通信号灯故障,请在保证安全的情况下通行");
                break;
        }

    }
}

最后,我们来总结一下,刚才在演示代码的时候有个注意事项:

注意:在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况下,向下运行,直到遇到break,或者整个switch语句结束

1 简答题

1.1 简答题一

请观察下列代码是否存在问题, 如果有, 请说明原因并改正

byte b1 = 3;        // 第一行
byte b2 = 4;        // 第二行
byte b3 = b1 + b2;  // 第三行
byte b = 3 + 4;     // 第四行
 
答: 第三行存在问题: b1和b2两个byte类型在相加的时候,会提升为int类型进行运算,提升之后,两个int相加的结果还是int类型,将int类型结果,赋值给byte类型变量,需要强转.
    
解决方案:  byte b3 = (byte)(b1 + b2);

1.2 简答题二

现有代码如下, 请回答打印的结果, 并描述中间的运算过程

int num = 10;
char content = 'a';
int result = num + content;
System.out.println(result);
答: 打印结果为107
​
原因: char类型在和int相加的时候,会提升为int类型,字符'a'提升为int会查找编码表中的数值表示形式97,97 + 10, 结果为107

1.3 简答题三

描述下算数运算符中 , / 和 % 的特点

答:
/ : Java当中整数相除, 结果只能得到整数, 想要带有小数的结果, 需要有小数参与运算
% : 取模, 得到的是除法之后剩下的余数

1.4 简答题四

现有代码如下, 想要运算结果是2.5, 代码应该怎么改?

int a = 5;
int b = 2;
double c = a / b;
答: (不止一种修改方式)
​
    方式1 : double c = (a * 1.0) / b;
    方式2 : double c = a / (b * 1.0);
    方式3 : 
            double a = 5;
            int b = 2;
            double c = a / b;
    方式4 : 
            int a = 5;
            double b = 2;
            double c = a / b;
    方式5 :
            double a = 5;
            double b = 2;
            double c = a / b;

1.5 简答题五

现有代码如下, 请回答打印的结果, 并描述中间的运算过程

int a = 10;
double b = 12.3;
a += b;
System.out.println(a);
答: (务必说明原因)
​
结果: 22
原因: 
    a += b, 就是 10 + 12.3 结果为22.3
    += : 将累加的结果给符号左边赋值
    22.3需要给符号左边的a变量赋值, 注意+=自带强转效果, a又是int类型, 所以22.3给int类型的a赋值, 有一个强转, 类似于: int a = (int)22.3; 
    小数强转为整数, 砍掉小数点后面的内容, 因此结果是22

1.6 简答题六

请结合下列代码, 描述 if 语句执行流程

if(判断条件1){
    语句体1;
}else if(判断条件2){
    语句体2;
}else if(判断条件3){
    语句体3;
}else{
    语句体n+1;
}
答: 
​
1. 执行判断条件1, 看其返回结果是true, false
        true : 执行语句体1, 执行完毕后, 结束掉整个的if语句.
        false : 进入第二步
2. 执行判断条件2, 看其返回结果是true, false
        true : 执行语句体2, 执行完毕后, 结束掉整个的if语句.
        false : 进入第三步了
        ...
3. 如果给出的所有判断条件, 都是false, 将会执行最后的else, 语句体n+1;

2 编程题

2.1 编程题目一

训练目标: 掌握数值拆分

需求描述: 自己随意给定一个四位数,然后输出每位数字之和例如: int j = 1234; 控制台打印: 和是10

public class Test01 {
    public static void main(String[] args) {
        //定义变量
        int i = 1234;
        //数值拆分
        int ge = i % 10;
        int shi = i / 10 % 10;
        int bai = i / 10 / 10 % 10;
        int qian = i / 1000;
        //相加打印
        System.out.println("和是:" + (ge + shi + bai + qian));
    }
}

2.2 编程题目二

训练目标: 掌握数据交换的逻辑

需求描述: 对两个整数变量的值进行互换(使用第三个变量结合赋值运算实现),请补齐横线处四行代码。

public class Test02 {
    public static void main(String[] args) {
        //定义变量
        int a=5;
        int b=3;
        //交换数据
        int temp = a;
        a = b;
        b = temp;
        //打印结果
        System.out.println("a="+a+",b="+b);  //输出a=3,b=5
    }
}

2.3 编程题目三

训练目标: 掌握三元运算符和选择结构if

需求描述: 自己随意给定3个整数,编程求出最大值(请分别用三元运算符和if选择结构实现)

public class Test03 {
    public static void main(String[] args) {
        int a = 7;
        int b = 12;
        int c = 9;
​
        //三元
        //int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
        //System.out.println("max:" + max);
​
        //if语句1
        if (a > b && a > c) {
            System.out.println("max:" + a);
        }
        if (b > a && b > c) {
            System.out.println("max:" + b);
        }
        if (c > a && c > b) {
            System.out.println("max:" + c);
        }
​
//        //if语句2
//        //a大于b的同时,也大于c,那么a是max
//        if (a > b) {
//            if (a > c) {
//                System.out.println(a + "是最大值");
//            } else {
//                //如果a大于b的同时,小于c,那么c是max
//                System.out.println(c + "是最大值");
//            }
//        } else {
//            //反之如果b大于a的同时,也大于c,那么b是max
//            if (b > c) {
//                System.out.println(b + "是最大值");
//            } else {
//                //如果b大于a的同时,小于c,那么c是max
//                System.out.println(c + "是最大值");
//            }
//        }
    }
}

2.5 编程题目四

训练目标: 掌握选择语句switch

需求描述: 自己给定一个月份,输出它是哪个季节 3-5月为春季、6-8月为夏季、9-11月为秋季、12-2月为冬季 请使用switch实现

public class Test04 {
    public static void main(String[] args) {
        //定义月份
        int month = 6;
        //switch:case穿透
        switch (month) {
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;
            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;
            default:
                System.out.println("月份输入有误!");
                break;
        }
​
        //switch: JDK14中switch的case新写法
//        switch (month){
//            case 12,1,2:
//                System.out.println("冬季");
//                break;
//            case 3,4,5:
//                System.out.println("春季");
//                break;
//            case 6,7,8:
//                System.out.println("夏季");
//                break;
//            case 9,10,11:
//                System.out.println("秋季");
//                break;
//            default:
//                System.out.println("月份输入有误!");
//                break;
//        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤凰AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值