第3章 运算符和选择语句
1 运算符
运算符: 对字面量或者变量进行操作的符号
表达式: 用运算符把字面量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的表达式体现 的是不同类型的表达式。
举例说明:
int a = 10;
int b = 20;
int c = a + b;
+:是运算符,是算术运算符
a + b:是表达式,由于**+**是算术运算符,所以这个表达式叫算术表达式
1.1 算数运算符
Java中的算术运算符有如下几种:
/*
算术运算符
*/
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 案例数值拆分
需求: 定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台
分析:
- 个位的计算:数值 % 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)
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 字符相加
字符参与+操作
字符参与+操作,其实就是拿字符在计算机底层对应的数值来进行计算的,这里我们了解一下英文大小写字符和数字 字符对应的数据值:
- ‘A’ 65 A-Z是连续的
- ‘a’ 97 a-z是连续的
- ‘0’ 48 0-9是连续的
ASCII码表,里面有常用的字符及其对应的数值关系:
1.3.3 字符串相加
- 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算
- “zhongguo”+ 666
- 当连续进行“+”操作时,从左到右逐个执行
- 1 + 9999 + “岁zhongguo”
1.4 赋值运算符
Java中的赋值运算符有如下几种:
注意事项:
扩展的赋值运算符隐含了强制类型转换
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的操作流程:
1.如何加断点
选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可。如图
2.如何运行加了断点的程序
在代码区域右键Debug执行
3.看哪里
看Debugger窗口,看Console窗口
4.点哪里
点(Step Over F8) 开始,点(Stop)结束
5.如何删除断点
选择要删除的断点,单击鼠标左键即可。也就是把第一步的动作,再做一次即可。
总结一下,Debug的使用流程:
1.如何加断点:选择要设置断点的代码行,在行号的区域后面单击鼠标左键即可
2.如何运行加了断点的程序:在代码区域右键Debug执行
3.看哪里:看Debugger窗口,看Console窗口
4.点哪里:点(Step Over F8) 开始,点(Stop)结束
5.如何删除断点:选择要删除的断点,单击鼠标左键即可
2.3 选择语句之if
选择语句有两种结构:
1. if语句
2. switch语句
这里我们先来学习if语句,它会根据判定的结果(真或假)决定执行某个分支的代码
举例说明一下:
无人驾驶的核心就是需要编写大量的判断逻辑,让车辆的行驶变得更加安全。
我们通过if语句来实现过马路的信号灯判断,而if语句呢,有三种格式
2.3.1 if语句格式1
格式:
范例:
执行流程:
2.3.2 if语句格式2和格式3
刚才我们通过if语句格式1进行了判断,是绿灯的时候,可以通行,但是不是绿灯的时候,没有告诉我不可以通行啊。 所以,这里就产生了if语句的第二种格式
格式:
范例:
执行流程:
实际生活中,只会有一种状态为true,怎么解决呢 多种情况的判断呢?这个时候就产生了if语句的第三种格式
格式:
执行流程:
2.3.3 关系运算符
Java中的关系运算符有如下几种:
注意事项:
2.3.4 案例1(奇偶数)
需求:给定一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数
提示:偶数是能够被2整除的整数 首先,我们来简单的分析一下:
分析:
1.如何判断一个整数是奇数还是偶数? 整数对2进行取余,余数为0是偶数,否则为奇数
2.用if语句的哪种格式来实现该需求呢?
该整数要么是偶数,要么是奇数,2种情况,所以用if语句格式2
实现步骤:
1.定义一个int类型的整数
2.用if语句格式2进行判断
3.根据是否是偶数给出不同的提示信息
2.3.5 案例2(手机以旧换新)
需求:张三想买一台7988元的新手机,他的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新优惠,把他 旧手机交给店家,新手机就能够打8折优惠。
为了更省钱,要不要以旧换新?请通过程序告诉张三 首先,我们来简单的分析一下:
分析:
1.计算不使用以旧换新的花费
7988 - 1500
2.计算使用以旧换新的花费
7988 * 0.8
3.用if语句的哪种格式来实现该需求呢? if语句格式2
分析完毕后,我们来说一下实现步骤:
实现步骤:
1.定义变量(money1)纪录不使用以旧换新的花费
2.定义变量(money2)纪录使用以旧换新的花费
3.用if语句格式2进行判断 money1是否大于money2
4.根据判断结果,给出相应的提示
2.3.6 案例3( 你是青年人吗)
需求:给出你的年龄,通过程序判断你是否属于青年人?
提示:世界卫生组织,经过对全球人体素质和平均寿命进行测定,对年龄划分标准作出了新的规定
分析:
1.如何判断一个年龄是否属于青年人?
年龄要大于等于18,并且小于等于65
2.在Java中如何表示并且的关系呢?
age >=18 && age<=65
&&:是逻辑运算符,用来连接两个结果为boolean类型的表达式,都为true,结果为true,否则为false
实现步骤:
1.定义一个int类型的变量来表示你的年龄
2.用if语句格式2进行判断看你是否属于青年人
3.根据是否是青年人给出不同的提示信息 知道了实现步骤,下面我们到IDEA中去实现一下:
2.3.7 逻辑运算符
Java中常用的逻辑运算符有如下几种:
2.3.8 三元运算符
格式: 关系表达式 ?表达式1 :表达式2;
范例: a > b ? a : b;
执行流程:
- 首先计算关系表达式的值
- 如果值为true,表达式1的值就是运算结果
- 如果值为false,表达式2的值就是运算结果
2.3.9 三元运算符和if语句格式2的区别
- 如果if语句控制的内容:是用变量纪录数据值,可以通过三元运算符改进
- 如果if语句控制的内容是:是通过输出语句直接输出数据值,无法通过三元运算符改进
2.4 选择语句之switch
格式:
格式说明:
执行流程:
注意: 在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,在不判断下一个case值的情况 下,向下运行,直到遇到break,或者整个switch语句结束