Download presentation
Presentation is loading. Please wait.
1
第二章 Java基础语法 北京传智播客教育
2
本章内容 关键字 标识符 注释 常量、进制和进制转换 变量 数据类型和类型转换 运算符 语句 北京传智播客教育
3
关键字 关键字概述 关键字特点 关键字注意事项 被Java语言赋予特定含义的单词 组成关键字的字母全部小写
goto和const作为保留字存在,目前并不使用 类似Editplus这样的高级记事本,针对关键字有特殊的颜色标记,非常直观 1:保留字:在JDK的新版本中可能提升为关键字 2:通过一个案例演示Notepad对关键字有颜色标记 3:判断下列哪些是关键字 class,HelloWorld,public,static,void,main,String,System 北京传智播客教育
4
关键字 用于定义数据类型的关键字 class interface byte short int long float double char
boolean void 用于定义数据类型值的关键字 true false null 用于定义流程控制的关键字 if else switch case default while do for break continue return 北京传智播客教育
5
关键字 用于定义访问权限修饰符的关键字 private protected public 用于定义类,函数,变量修饰符的关键字
abstract final static synchronized 用于定义类与类之间关系的关键字 extends implements 用于定义建立实例及引用实例,判断实例的关键字 new this super instanceof 用于异常处理的关键字 try catch finally throw throws 用于包的关键字 package import 其他修饰符关键字 native strictfp transient volatile assert 北京传智播客教育
6
标识符 标识符概述 组成规则 注意事项 就是给类,接口,方法,变量等起名字时使用的字符序列 英文大小写字母 数字字符 $和_ 不能以数字开头
不能是Java中的关键字 区分大小写 1:起名字,不能太随便,无规矩,不成方圆。 2:针对注意事项,举例演示 3:下面那些合法,那些不合法: HelloWorld,DataClass,_983,$bS5_c7,class,DataClass#,98.3,Hell World 北京传智播客教育
7
标识符(常见命名规则) 包(其实就是文件夹,用于解决相同类名问题) 类或者接口 方法和变量 常量 单级和多级分别举例
一个单词和和多个单词分别举例 方法和变量 常量 1:常见命名规则要求:见名知意 2:常见命名 包:liuyi,cn.itcast 类或者接口:Student,HelloWorld 方法和变量:name,main,studentName 常量:MAX,STUDENT_MAX_AGE 北京传智播客教育
8
注释 注释概述 Java中注释分类格式 用于解释说明程序的文字 单行注释 多行注释 文档注释 格式: //注释文字
格式: /* 注释文字 */ 文档注释 格式:/** 注释文字 */ 1:对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。 2:对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析, 生成一套以网页文件形式体现的该程序的说明文档。后面讲解 北京传智播客教育
9
注释 注释是一个程序员必须要具有的良好编程习惯。 初学者编写程序可以养成习惯:先写注释再写代码。
将自己的思想通过注释先整理出来,在用代码去体现。 因为代码仅仅是思想的一种体现形式而已。 北京传智播客教育
10
注释 把HelloWorld案例加入注释写出来 需求:写一个程序,在控制台输出HelloWorld 分析: 实现:
写一个java程序,首先定义类。 程序要想能够被jvm调用,必须定义main方法。 程序要想有输出结果,必须用输出语句。 实现: 定义类用的是class关键字,后面跟的是类名 main方法基本格式 输出语句基本格式 //这是我的HelloWorld案例 //用class定义类,HelloWorld是类名 class HelloWorld { /* 这是main方法 是程序的入口 被jvm自动调用 */ public static void main(String[] args) { 这是输出语句 ""里面放的是在控制台上输出的内容 System.out.println("HelloWorld"); } 北京传智播客教育
11
注释 解释说明程序,提高程序的阅读性 可以帮助我们排错 后面我们会讲解更高级的排错方式 北京传智播客教育 www.itcast.cn
1:通过案例演示注释如何帮助我们排错 通过注释部分程序看效果 北京传智播客教育
12
常量 常量概述 Java中常量分类 在程序执行的过程中其值不可以发生改变 字面值常量 自定义常量(面向对象部分讲)
北京传智播客教育
13
常量 字符串常量 用双引号括起来的内容 整数常量 所有整数 小数常量 所有小数 字符常量 用单引号括起来的内容
字符串常量 用双引号括起来的内容 整数常量 所有整数 12,23 小数常量 所有小数 12.34,56.78 字符常量 用单引号括起来的内容 ‘a’,’A’,’0’ 布尔常量 较为特有,只有true和false 空常量 null(数组部分讲解) 1:字符串是一个常量都可以输出,所以,我们也可以把其他的常量进行输出。 空常量先不演示,后面讲解。 北京传智播客教育
14
常量 Java针对整数常量提供了4种表现形式 进制概述
二进制 八进制 十进制 十六进制 进制概述 进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。 二进制的由来:任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。 一个整数在内存中一样也是二进制的,但是使用一大串的1或者0组成的数值进行使用很麻烦。 所以就想把一大串缩短点,将二进制中的三位用一位表示。 这三位可以取到的最大值就是7.超过7就进位了,这就是八进制。 但是对于过长的二进制变成八进制还是较长,所以出现的用4个二进制位表示一位的情况, 四个二进制位最大是15,这就是十六进制。 规律,进制越大,表现形式越短。 北京传智播客教育
15
常量 不同进制的数据组成 二进制 八进制 十进制 十六进制 由0,1组成。以0b开头 由0,1,…7组成。以0开头
由0,1,…9组成。整数默认是十进制的 十六进制 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 1:讲解了不同进制数据组成后,我们就可以演示一个案例:分别输出:0b100,0100,100,0x100 在通过计算器验证结果。 北京传智播客教育
16
常量 进制转换 其他进制到十进制 十进制到其他进制 通过十进制推出结论 把0b100,0100,0x100转换成十进制
把52分别表示成二进制,八进制,十六进制 1:其他进制到十进制 系数:就是每一位上的数据。 基数:X进制,基数就是X。 权:在右边,从0开始编号,对应位上的编号即为该位的权。 结果:把系数*基数的权次幂相加即可。 2:十进制到其他进制 除基取余,直到商为0,余数反转。 北京传智播客教育
17
常量 十进制和二进制的快速转换 二进制和八进制,十六进制如何转换 8421码 100转成二进制 101101转成十进制 以十进制作为桥梁
二进制到八进制 3位组合 100110 二进制到十六进制 4位组合 1:8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种。 在这种编码方式中每一位二值代码的1都是代表一个固定数值, 把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。 北京传智播客教育
18
常量 有符号数据表示法 在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。 原码 反码 补码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码 正数的补码与其原码相同;负数的补码是在其反码的末位加1。 1:首先举例一个正数在内存中存储方式,来引入在计算机中一个负数如何表示 2:通过数据+7,-7来演示原理 3:有符号数据练习 已知某数X的原码为 B,试求X的补码和反码。 已知某数X的补码 B,试求其原码。 北京传智播客教育
19
变量 变量概述 变量定义格式 在程序执行的过程中,在某个范围内其值可以发生改变的量 理解:如同数学中的未知数
数据类型 变量名 = 初始化值; 注意:格式是固定的,记住格式,以不变应万变 1:从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。通过画图说明一个变量的组成部分 数据类型,变量名,变量值 2:为什么要定义变量呢 用来不断的存放同一类型的常量,并可以重复使用 北京传智播客教育
20
数据类型 Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间 数据类型 基本数据类型
引用数据类型 数值型 字符型(char) 布尔型(boolean) 整数类型(byte, short, int, long) 浮点类型(float, double) 类(class) 接口(interface) 数组( [ ] ) 所谓有效数字:具体地说,是指在分析工作中实际能够测量到的数字。所谓能够测量到的是包括最后一位估计的,不确定的数字。 对于一个近似数,从左边第一个不是0的数字起,到精确到的位数止,所有的数字都叫做这个数的有效数字。 北京传智播客教育
21
数据类型 int i1 = 600; //正确 long l1 = 88888888888L; //必须加l否则会出错
Java 各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。 Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,如: int i1 = 600; //正确 long l1 = L; //必须加l否则会出错 与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。 Java 浮点类型常量有两种表示形式 十进制数形式,如: 科学记数法形式,如 3.14e2 3.14*10^2 Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F ,如: double d = ; //正确 float f = 12.3f; //必须加f否则会出错 char 型数据用来表示通常意义上的“字符” 字符常量为用单引号括起来的单个字符,例如:char ch1= 'a'; char ch2='中'; Java 字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示。注:Unicode是全球语言统一编码 boolean 类型适于逻辑运算,一般用于程序流程控制 。 boolean 类型数据只允许取值 true 或 false ,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 整数默认:int 小数默认:double 北京传智播客教育
22
数据类型 编写案例演示每种不同数据类型的变量定义 使用变量注意事项: 作用域 初始化值 在一行上建议只定义一个变量
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。 初始化值 没有初始化值不能直接使用 在一行上建议只定义一个变量 可以定义多个,但是不建议 1:编写案例演示每种不同数据类型变量的定义 2:编写案例演示使用变量的注意事项。 并引出变量的第二种定义格式:数据类型 变量名; 变量名=100。 3:一行定义多个变量的两种情况: int x = 10;int y = 20; int x,y; x = 10; y = 20; 北京传智播客教育
23
数据类型 +是一个运算符, 我们应该能够看懂,做数据的加法。 boolean类型不能转换为其他的数据类型 默认转换 强制转换
byte,short,char—int—long—float—double byte,short,char相互之间不转换,他们参与运算首先转换为int类型 强制转换 目标类型 变量名=(目标类型)(被转换的数据); 1:案例演示隐式转换,并画图讲解 byte b = 10; int i = 100; System.out.println(b+i); //有问题 byte bb = b + i; System.out.println(bb); //没有问题 int j = b + i; System.out.println(j); 2:刚才上面的那个例子不可以,但是,我们明明知道它就是在这个范围内,我就想赋值,肿么办呢? 用强制转换 目标数据类型 变量名 = (目标数据类型)(被转换的数据); 3:那么,我们到底用那种转换呢? 一般建议,最好不要随意使用强制类型转换,容易造成数据精度的损失。 (1)容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。 (2)有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。 北京传智播客教育
24
数据类型 面试题 思考题 byte b1=3,b2=4,b; b=b1+b2; b=3+4; 哪句是编译失败的呢?为什么呢?
b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。 b=b1+b2不可以,是因为b1和b2是变量,因为变量的值会变化,不确定具体的值,所以默认使用int类型进行存储。 北京传智播客教育
25
数据类型 请写出下列程序结果 System.out.println(‘a’); System.out.println(‘a’+1);
System.out.println(“hello”+’a’+1); System.out.println(‘a’+1+”hello”); System.out.println(“5+5=”+5+5); System.out.println(5+5+”=5+5”); 1:在这里引入ASCII码表 2:任何数据和字符串进行操作,结果都是字符串类型。但是要注意运算的顺序。 北京传智播客教育
26
运算符 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三目运算符 北京传智播客教育 www.itcast.cn 1:运算
对常量和变量进行操作的过程称为运算。 2:运算符 对常量和变量进行操作的符号称为运算符 3:操作数 参与运算的数据称为操作数 4:用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。 不同运算符连接的式子体现的是不同类型的表达式。 举例: int a = 3 + 4; 这是做了一个加法运算 +就是运算符,是算术运算符,我们还有其他很多的运算符 3,4就是参与运算的操作数据 3 + 4整体其实就是一个算数表达式 北京传智播客教育
27
算术运算符 北京传智播客教育
28
算术运算符 +,-,*,/都是比较简单的操作,简单演示即可 +的几种作用: 除法的时候要注意一个问题: 加法 正数 字符串连接符
整数相除,只能得到整数 要想得到小数,可以*1.0 北京传智播客教育
29
算术运算符 /和%的区别 ++和--的应用 单独使用效果相同 参与运算使用,在操作数的前后效果不同
1:基本小题目 int a = 10; int b = 10; int c = 10; a = b++; c = --a; b = ++a; a = c--; 请分别计算出a,b,c的值 2:比较复杂的题目 int a = 4; int b = (a++)+(++a)+(a*10); 引出运算符的优先级 北京传智播客教育
30
赋值运算符 符号: 如下操作写出结果 面试题 = , +=, -=, *=, /=, %= =为基本的赋值运算符,其他的为扩展的赋值运算符
int a,b; a = b = 10; System.out.println(a); System.out.println(b); int a = 10; a += 20; System.out.println(a); 面试题 short s=1, s = s+1; short s=1, s+=1; 上面两个代码有没有问题,如果有,那里有问题 1:= 赋值号 2:+=加赋值 把左边和右边的结果赋值给左边。 注意:左边不能是常量 3:通过面试题引出+=运算符的特点: 有一个隐含的默认转换功能。 实际上等价于: short s = 1; s+=1等价于 s=(s的数据类型)(s+1); 北京传智播客教育
31
关系运算符 注1:关系运算符的结果都是boolean型,也就是要么是true,要么是false。
1:注意2的时候举例 System.out.println(a==b); System.out.println(a=b); 2:赋值的时候要注意类型问题 int x = 10; int y = 10; boolean flag = (x == y); boolean flag = (x = y); boolean b1 = true; boolean b2 = false; boolean b3 = (b1 == b2); boolean b4 = (b1 = b2); 注1:关系运算符的结果都是boolean型,也就是要么是true,要么是false。 注2:关系运算符“==”不能误写成“=” 。 北京传智播客教育
32
逻辑运算符 北京传智播客教育 www.itcast.cn a = 10; b = 20; c = 30; a>c && b>c
33
逻辑运算符 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别: 单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。 “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。 异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。 &:有false则false |:有true则true ^:相同false,不同true 帮助理解:情侣必须是男女或者女男 !:非false则true,非true则false &&,||和&以及|的区别 结果相同,但是有短路效果,一般建议使用&&,|| int x = 3;int y =4; System.out.println((x++ > 4) & (y++ > 5)); System.out.println(x); System.out.println(y); System.out.println((x++ > 4) && (y++ > 5)); 北京传智播客教育
34
位运算符 位运算符 运算符 运算 范例 << 左移 3 << 2 = 12 --> 3*2*2=12
>> 右移 3 >> 1 = 1 --> 3/2=1 >>> 无符号右移 3 >>> 1 = 1 --> 3/2=1 & 与运算 6 & 3 = 2 | 或运算 6 | 3 = 7 ^ 异或运算 6 ^ 3 = 5 ~ 反码 ~6 = -7 前面的几个用数据3,4即可。 讲完后,顺带的提一下^运算符的特点。 <<:就是将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,右边被移空的部分补0。相当于乘与2的倍数 >>:右移稍微复杂一点,如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被移空的位就填入1。相当于除以2的倍数 >>>:无论最高位是1还是0,左边被移空的高位都填入0。 看结果:总结相当于乘以或者除以2的多少次幂。 System.out.println(3 << 2); System.out.println(24 >> 2); System.out.println(24 >>> 2); System.out.println(-24 >> 2); System.out.println(-24 >>> 2); 位运算是直接对二进制进行运算。 北京传智播客教育
35
位运算符 位运算符的细节 << >> >>> & | ^ 空位补0,被移除的高位丢弃。
被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,最高位补1。 >>> 被移位二进制最高位无论是0或者是1,空缺位都用0补。 & 任何二进制位和0进行&运算,结果是0; 和1进行&运算结果是原值。 | 任何二进制位和0进行 | 运算,结果是原值; 和1进行 | 运算结果是1。 ^ 任何相同二进制位进行 ^ 运算,结果是0; 不相同二进制位 ^ 运算结果是1。 北京传智播客教育
36
位运算符 面试题 请用最有效率的方式写出计算2乘以8的结果 请自己实现两个整数变量的交换 ^的特点
a: 第三方变量 b: 加法方式 a = a + b; b = a–b; a = a–b; c: ^异或位运算符 d: 一句话搞定 a = (a+b) - (b=a) 北京传智播客教育
37
三目运算符 格式 示例: (关系表达式)?表达式1:表达式2; 如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2; 示例: 获取两个数中大数。 int x=3,y=4,z; z = (x>y)?x:y;//z变量存储的就是两个数的大数。 北京传智播客教育
38
条件运算符的练习 获取两个整数中的最大值 获取三个整数中的最大值 比较两个整数是否相同 注意:
目前在写案例的时候,如果我没有说明数据是什么类型的,默认是int类型的。 北京传智播客教育
39
键盘录入数据 键盘录入数据概述 如何实现键盘录入数据呢?(目前先记住使用)
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。 如何实现键盘录入数据呢?(目前先记住使用) 导包(位置放到class定义的上面) import java.util.Scanner; 创建对象 Scanner sc = new Scanner(System.in); 接收数据 int x = sc.nextInt(); 北京传智播客教育
40
键盘录入数据练习 键盘录入两个数据,并对这两个数据求和,输出其结果 键盘录入两个数据,获取这两个数据中的最大值
键盘录入三个数据,获取这三个数据中的最大值 键盘录入两个数据,比较这两个数据是否相等 北京传智播客教育
41
流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。 流程控制语句分类 顺序结构 选择结构 循环结构 北京传智播客教育
42
顺序结构 顺序结构概述 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
总的来说:写在前面的先执行,写在后面的后执行 北京传智播客教育
43
顺序结构 顺序结构图 1:看完流程和图解后,写一个简单案例测试下。 北京传智播客教育
44
选择结构 选择结构 也被称为分支结构。 选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。 Java语言提供了两种选择结构语句 if语句 switch语句 北京传智播客教育
45
选择结构(if语句) if语句有三种格式 if语句第一种格式: 执行流程 if(关系表达式) { 语句体 }
首先判断关系表达式看其结果是true还是false 如果是true就执行语句体 如果是false就不执行语句体 北京传智播客教育
46
选择结构(if语句) if图1 北京传智播客教育 www.itcast.cn 1:按照格式和基本图解,然后举例说明if语句格式1的使用。
判断两个数据是否相等,如果是就输出:相等 北京传智播客教育
47
选择结构(if语句) 注意事项 关系表达式无论简单还是复杂,结果必须是boolean类型
一般来说:有左大括号就没有分号,有分号就没有左大括号 1:针对注意事项编写案例 A:if(a==b && a==c){…} 特殊情况: if(a == b){}写成了 if(a = b){} 这个时候如果是int类型就报错了。这个时候的意思是把b赋值给a,把a留下来判断,而a是int类型的所以报错。 但是如果a,b都是boolean类型就没有问题。 B:先写一个if语句控制两条语句,但是忘写大括号了,这个时候的条件应该是false才好。然后改进为加入大括号。 C:在条件为false的情况下,在左大括号前面加了;在看程序的结果。解释一下语句体。 北京传智播客教育
48
选择结构(if语句) if语句第二种格式: 执行流程 if(关系表达式) { 语句体1; }else { 语句体2; }
首先判断关系表达式看其结果是true还是false 如果是true就执行语句体1 如果是false就执行语句体2 1:下课了我要上厕所,我走到厕所门口一看是女厕所,就没有进去。按照第一种格式我们就回来了。不上厕所了。 这样是不对的,如果是女厕所我们不进去,我们就应该进旁边的男厕所啊。通过这个案例引入if语句第二种格式。 北京传智播客教育
49
选择结构(if语句) if图2 北京传智播客教育 www.itcast.cn 引出格式,执行流程和看执行图解后后,写两个案例测试即可。
并且要注意只有出现了if后面才能有关系表达式,只有else后面是不能出现关系表达式的。 需求:判断两个数据是否相同 输出两个数中较大的值 奇数和偶数的判断 北京传智播客教育
50
选择结构(if语句) 我们前面讲解过三元运算符,它根据比较判断后,给出的也是两个结果,所以,这种情况和if语句的第二种格式很相似,他们在某些情况下应该是可以相互转换的。 if语句第二种格式和三元运算符 三元运算符的操作都可以使用if语句改进,反之不成立 什么时候不成立呢? 当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。 而输出语句却不能作为一个返回结果。 1:比较两个数据是否相等,获取两个数据中较大的值这两个案例,在用if语句和三元运算符在写一遍。 2:用if语句实现把获取两个数据中较大的值给输出出来,这个通过三元运算符就没有办法改写了。 北京传智播客教育
51
选择结构(if语句) if语句第三种格式: if(关系表达式1) { 语句体1; }else if (关系表达式2) { 语句体2; } …
语句体n+1; 1:通过把学生考试成绩分等级来引出if语句的第三种格式 优秀 80-90 好 70-80 良 60-70 及格 60一下 不及格 北京传智播客教育
52
选择结构(if语句) 执行流程 首先判断关系表达式1看其结果是true还是false 如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false 如果是true就执行语句体2 如果是false就继续判断关系表达式…看其结果是true还是false … 如果没有任何关系表达式为true,就执行语句体n+1。 北京传智播客教育
53
选择结构(if语句) if图3 北京传智播客教育 www.itcast.cn 1:看完格式,执行流程和图解后,就把学生成绩的案例给做了。
2:一定要注意数据的判断问题。由此引出针对数据教验,一定要注意 正确数据 错误数据 边界数据 北京传智播客教育
54
选择结构(if语句练习) 键盘录入x的值,计算出y的并输出。 键盘录入月份的值,输出对应的季节。 获取三个数据中的最大值
x>=3 y = 2x + 1; -1<=x<3 y = 2x; x<=-1 y = 2x – 1; 2:先用最基本的if语句来实现,但是太麻烦,所以改进为多个条件用||实现判断,但是如果数据范围较大,不好,最后改进为范围的判断。 北京传智播客教育
55
选择结构(switch语句) switch语句格式: switch(表达式) { case 值1: } 语句体1; break;
语句体2; … default: 语句体n+1; } 北京传智播客教育
56
选择结构(switch语句) 格式解释 switch表示这是switch语句 case后面跟的是要和表达式进行比较的值
表达式的取值:byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是String case后面跟的是要和表达式进行比较的值 语句体部分可以是一条或多条语句 break表示中断,结束的意思,可以结束switch语句 default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。 1:在讲解格式的时候就可以引出面试题 byte类型可以是switch的表达式吗? long类型可以是switch的表达式吗? String类型可以是switch的表达式吗? 以前的答案是不可以,但是现在可以。 北京传智播客教育
57
选择结构(switch语句) 执行流程 首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。 北京传智播客教育
58
选择结构(switch语句) switch语句图 北京传智播客教育 www.itcast.cn
1:把格式,执行流程和图解讲解完毕后就停止下来。 2:然后首先讲解第一个案例 根据键盘录入的数值1,2,3,…7输出对应的星期一,星期二,星期三…星期日。 北京传智播客教育
59
选择结构(switch语句) 注意事项 case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
default可以省略吗? 可以省略。一般不建议。除非判断的值是固定的。(单选题) break可以省略吗? 可以省略,一般不建议。否则结果可能不是你想要的 default的位置一定要在最后吗? 可以出现在switch语句任意位置。 switch语句的结束条件 遇到break 执行到程序的末尾 北京传智播客教育
60
选择结构(switch语句练习) 模拟做单项选择题,根据你的选择,给出对应的答案。(表达式是字符的情况)
键盘录入字符串,根据给定的字符串,来输出你选择的字符串是什么?(表达式是字符串的情况) 用switch语句实现键盘录入月份,输出对应的季节 看程序写结果 看程序写结果: 版本1: int x = 2; int y = 3; switch(x){ default: y++; break; case 3: case 4: } System.out.println("y="+y); 版本2: 北京传智播客教育
61
选择结构(各自使用场景) 在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
针对结果是boolean类型的判断 针对一个范围的判断 针对几个常量值的判断 switch语句使用场景: 北京传智播客教育
62
循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。 1:通过重复做一件事情引入循环。比如:在控制台输出10次”HelloWorld”。 北京传智播客教育
63
循环结构 循环语句的组成 初始化语句: 判断条件语句: 循环体语句: 控制条件语句: 一条或者多条语句,这些语句完成一些初始化操作。
这是一个boolean 表达式,这个表达式能决定是否执行循环体。 循环体语句: 这个部分是循环体语句,也就是我们要多次做的事情。 控制条件语句: 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。 1:在控制台输出10次”HelloWorld” 初始化语句:定义初始化为第一次。 判断条件语句:次数不能超过10次。 循环体语句:输出”HelloWorld”语句。 控制条件语句:次数变化为下一次。 北京传智播客教育
64
循环结构(for循环语句) for循环语句格式: for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } 执行流程
A:执行初始化语句 B:执行判断条件语句,看其结果是true还是false 如果是false,循环结束。 如果是true,继续执行。 C:执行循环体语句 D:执行控制条件语句 E:回到B继续 北京传智播客教育
65
循环结构(for循环语句) for循环语句图 北京传智播客教育 www.itcast.cn
1:讲解完毕for循环的格式,执行流程和图解后,完成在控制台输出10次”HelloWorld”的案例。 北京传智播客教育
66
循环结构(for循环语句) 注意事项 判断条件语句的结果是一个boolean类型
循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。 一般来说:有左大括号就没有分号,有分号就没有左大括号 北京传智播客教育
67
循环结构(for循环练习) 请在控制台输出数据1-10 请在控制台输出数据10-1 求出1-10之间数据之和 求出1-100之间偶数和
求出1-100之间奇数和 求5的阶乘 在控制台输出所有的”水仙花数” 统计”水仙花数”共有多少个 1:注意从0开始和从1开始的区别。而且无论从0还是1开始都是可以的。 2:求和思想 0+1=1 1+2=3 3+3=6 6+4=10 10+5=15 … 通过简单的分析,我们发现了两个东西: A:被加数是上一次的求和结果,最原始的结果是0 B:加数正好每一次获取到的值 由于被加数和加数都是变化的,所以,我们定义两个变量。 3:水仙花数 所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 举例:153就是一个水仙花数。 153 = 1*1*1 + 5*5*5 + 3*3*3 4:统计思想 北京传智播客教育
68
循环结构(for循环练习) 请在控制台输出满足如下条件的五位数 请统计1-1000之间同时满足如下条件的数据有多少个: 个位等于万位
十位等于千位 个位+十位+千位+万位=百位 请统计1-1000之间同时满足如下条件的数据有多少个: 对3整除余2 对5整除余3 对7整除余2 北京传智播客教育
69
循环结构(while循环语句) while循环语句格式: 基本格式 扩展格式 while(判断条件语句) { 循环体语句; } 初始化语句;
控制条件语句; 1:写完扩展格式,我们就可以说while循环语句讲解完毕。因为它和for循环是可以等价转换的。然后看执行流程图 北京传智播客教育
70
循环结构(while循环语句) while循环语句格式图 北京传智播客教育 www.itcast.cn
看完格式和图解后把for循环的案例用while循环改写。 A:输出10次HelloWorld案例 B:求出1-100之和 C:统计水仙花数有多少个 其他的不讲解了。自己练习 北京传智播客教育
71
循环结构(for循环和while循环的区别)
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。 场景区别: for循环适合针对一个范围判断进行操作 while循环适合判断次数不明确操作 1:for循环适合针对一个范围判断进行操作 举例:1-100之后,水仙花数等 2:while循环适合判断次数不明确操作 举例:吃葡萄,喝水等。 北京传智播客教育
72
循环结构(while循环语句练习) 我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度? 北京传智播客教育
73
循环结构(do…while循环语句) do…while循环语句格式: 基本格式 扩展格式 do { 循环体语句;
初始化语句; 控制条件语句; } while((判断条件语句); 1:写完扩展格式,我们就可以说do…while循环语句讲解完毕。 因为它和其它两种循环也是可以等价转换的。但是通过格式还是可以看出小区别的。 然后看执行流程图解。 北京传智播客教育
74
循环结构(do…while循环语句) do…while循环语句图: 北京传智播客教育 www.itcast.cn
A:输出10次HelloWorld案例 B:求出1-100之和 其他的不讲解了。自己练习 北京传智播客教育
75
循环结构(区别及注意事项) 三种循环语句其实都可以完成一样的功能,也就是说可以等价转换,但还是有小区别的: 注意事项:
do…while循环至少会执行一次循环体。 for循环和while循环只有在条件成立的时候才会去执行循环体 注意事项: 写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。 如下代码是死循环 while(true){} for(;;){} int x = 3; do { System.out.println(“我爱林青霞”); y++; }while(y<3); int y = 3; while(y<3) { } 北京传智播客教育
76
循环结构(循环嵌套使用) 需求:请输出一个4行5列的星星(*)图案。 需求:请输出如下图形 需求:在控制台输出九九乘法表。 * ** ***
**** ***** 需求:在控制台输出九九乘法表。 1:针对第一个程序,先按照最基本的输出语句做法来做。 然后改进:首先实现能够在一行输出5个*,然后再保证输出4行。 注意: 在这里说一下如何输出语句print()和println()的区别。 还有就是空输出语句println()可以实现换行。 总结出:外循环控制行,内循环控制列。 2:看列数是如何变化的 y的变化和x是相关的。 我们还可以输出一个倒三角形。 3:输出九九乘法表时,考虑空格问题。 用\t解决。这个时候,提出转移字符的概念。 \t:一个制表符的位置。tab 北京传智播客教育
77
跳转控制语句 前面我们已经说过了,Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情。为了弥补这个缺陷,Java就提供了break,continue和return来实现控制语句的跳转和中断。 break 中断 continue 继续 return 返回 北京传智播客教育
78
跳转控制语句(break) break的使用场景: break的作用: 在选择结构switch语句中 在循环语句中
离开使用场景的存在是没有意义的 break的作用: 跳出单层循环 跳出多层循环 带标签的跳出 格式:标签名: 循环语句 标签名要符合Java的命名规则 1:演示离开使用场景无意义。 2:演示输出1-10的数据的时候,当变量是3的时候,我break一下。 3:演示九九乘法表中,内循环的y是4的时候,我break一下。 北京传智播客教育
79
跳转控制语句(continue) continue的使用场景: continue的作用: 在循环语句中 离开使用场景的存在是没有意义的
单层循环对比break,然后总结两个的区别 break 退出当前循环 continue 退出本次循环 也可以带标签的使用(不演示了) 做一个练习 1:演示离开使用场景无意义。 2:演示输出1-10的数据的时候,当变量是3的时候,我continue一下。 3:按照要求补齐程序 for(int x=1; x<=10; x++) { if(x%3==0) { //在此处填写代码 } System.out.println(“Java基础班”); 我想在控制台输出2次:“Java基础班“ 我想在控制台输出7次:“Java基础班“ 我想在控制台输出13次:“Java基础班“ 北京传智播客教育
80
跳转控制语句(return) return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会在详细的讲解。 演示案例: 结束循环其实是结束了main方法 for(int x=0; x<10; x++) { if(x == 3) { System.out.println("退出"); return; //break; //continue; } System.out.println(x); System.out.println("over"); 北京传智播客教育
81
循环语句结合break的练习 小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。 int sum = 100;// 最终的目标 double db = 2.5;// 每次存放的钱数 int day = 1;// 天数 double dsum = 0;// 每次存放的总数 while (true) { dsum = dsum + db;// 返回每天都存放钱的总和 if (day % 5 == 0) {// 判断是不是5的倍数 dsum = dsum - 6;// 从总数中扣去6元 System.out.println("第" + day + "天花去6元,还剩" + dsum + "元!"); } boolean flag = dsum >= sum;// 求dsum是否大于sum的boolean值 if (flag) { // 如果是true则输出最终的结果,并跳出循环 System.out.println("要经过连续存储" + day + "天,才能存上100元!"); break; } else {// 否则天数加1,也就是继续存钱 day++; 北京传智播客教育
Similar presentations