第2章 Java编程基础_补充案例

更新时间:2024-05-04 11:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

博学谷——让IT教学更简单,让IT学习更有效

第二章 Java编程基础

案例2-1 定义不同类型的变量

一、案例描述

1、 考核知识点

编 号:00102005

名 称:变量的定义及其数据类型

2、 练习目标

? 了解变量的定义方式

? 掌握如何为不同类型的变量赋值

3、 需求分析

变量用于存储程序运行期间的一些数据。为了加深初学者对变量的认识,本案例针对八种基本数据类型,分别定义了八个变量,并进行赋值操作。

4、 设计思路(实现原理)

1)编写一个类Example01。

2)在Example01的main()方法中,针对八种基本数据类型,分别定义变量并赋值。 3)使用println语句打印变量的值。

二、案例实现

定义Example01类,其代码如下:

class Example01{

public static void main(String[] args) {

//定义字节变量 byte b = 12;

System.out.println(b);

//定义短整型变量 short s = 1234;

System.out.println(s); //定义整数变量 int i = 12345;

System.out.println(i); //定义长整型变量

long l = 12345678912345L; System.out.println(l);

//定义单精度类型(7-8位的有效数字) float f = 12.5F; System.out.println(f);

1

博学谷——让IT教学更简单,让IT学习更有效

}

}

//定义双精度类型(15-16位的有效数字) double d = 12.5; System.out.println(d); //定义字符类型 char c = 'a';

//重新赋值,Java中的字符采用的编码是Unicode编码。占用2个字节。 c = '中';

System.out.println(c); //定义布尔类型

boolean flag = true; System.out.println(flag);

运行结果如图2-1所示。

图2-1 运行结果

三、案例总结

1、Java对变量的数据类型有严格的限定。在定义变量时必须声明变量的类型,并且变量值的类型和变量类型必须一致,否则程序会报错。

2、byte类型的变量存储的值必须是-27 ~ 27-1之间的整数。赋值的时候,尽量不要超出范围,如果超出可能损失精度。

3、定义变量的方式有两种,具体如下: 方式一:

数据类型 变量名 = 初始化值;

方式二:

数据类型 变量名; 变量名 = 初始化值;

案例2-2 变量的自动类型转换

一、案例描述

1、 考核知识点

2

博学谷——让IT教学更简单,让IT学习更有效

编 号:00102006

名 称:变量的类型转换

2、 练习目标

? 了解变量进行自动类型转换的条件

3、 需求分析

变量的自动类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。为了明确哪些数据类型可以实现自动转换,本案例演示的是将一种数据类型的值赋给另外一种数据类型变量的情形。

4、 设计思路(实现原理)

1) 编写一个类Example02。

2) 在类Example02中,定义byte类型的变量a,int类型的变量b,float类型的变量f,double

类型的变量d,其中,变量a的初始值为10,变量f的初始值为12.5f。 3) 将变量a的值赋给变量b,变量a、b、f相加后的结果值赋给变量d。 4) 使用println语句打印出变量b和变量d的值。

二、案例实现

定义Example02类,其代码如下:

class Example02 { }

public static void main(String[] args) { }

//隐式转换 byte a = 10; int b = a; float f = 12.5F; System.out.println(b); System.out.println(d);

double d = a+b+f;

运行结果如图2-2所示。

图2-2 运行结果

三、案例总结

1、要实现自动类型转换,必须同时满足两个条件,第一是两种数据类型彼此兼容,第二是目标类型的取值范围大于源类型的取值范围。

3

博学谷——让IT教学更简单,让IT学习更有效

2、列出三种可以进行自动类型转换的情况,具体如下:

(1)整数类型之间可以实现转换,如byte类型的数据可以赋值给short、int、long类型的变量,short、

char类型的数据可以赋值给int、long类型的变量,int类型的数据可以赋值给long类型的变量。 (2)整数类型转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。 (3)其它类型转换为double类型,如byte、char、short、int、long、float类型的数据可以赋值给double

类型的变量。

案例2-3 变量的强制类型转换

一、案例描述

1、 考核知识点

编 号:00102006

名 称:变量的类型转换

2、 练习目标

? 掌握不同数据类型间的强制类型转换

3、 需求分析

强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。例如,两种类型彼此不兼容,或者目标类型取值范围小于源类型,都需要进行强制类型转换。为了明确两种不同类型的变量如何进行强制类型转换,本案例以int和byte类型为例,演示如何将int类型的变量强转为byte类型。

4、 设计思路(实现原理)

1) 编写一个类Example03

2) 在Example03中的main()方法中定义一个int类型的变量i和byte类型的变量b,并将变量i

的值赋给变量b

3) 使用println语句打印出变量b的值

二、案例实现

定义Example03类,其代码如下:

class Example03 { }

public static void main(String[] args) { }

int i = 10; byte b = (byte)i; System.out.println(b);

运行结果如图2-3所示。

4

博学谷——让IT教学更简单,让IT学习更有效

图2-3 运行结果

三、案例总结

1、强制类型转换,具体格式如下:

目标类型 变量 = (目标类型)值

2、在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换,如将一个int类型的数转为byte类型,这样做极容易造成数据精度的丢失。int在内存中占用4个字节。byte类型的数据在内存中占用1个字节,当将变量i的数据在内存中占的内存大于1个字节时,前面3个高位字节的数据会丢失,数值也会发生改变。

案例2-4 变量的作用域

一、案例描述

1、 考核知识点

编号:00102007 名称:变量的作用域

2、 练习目标

? 了解变量的作用域

3、 需求分析

在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。为了让初学者熟悉变量的作用域,本案例将在三层的大括号内分别定义三个变量x、y、z,用输出语句输出变量的值,观察变量的作用域。

4、 设计思路(实现原理)

1)编写一个类Example04

2)在main方法下定义变量x,并在每一层大括号内都使用一次x,观察x的作用域 3)在第一层括号内定义变量y,并在第二层括号内使用y,观察y的作用域 4)在第二层括号内定义z,并在第一层括号内使用z,观察z的作用域

二、案例实现

(1)定义Example04类,具体代码如下所示:

public class Example04 {

public static void main(String[] args) {

int x = 12; {

5

博学谷——让IT教学更简单,让IT学习更有效

int y = 96;

{

int z = 0; y = x; }

System.out.println(\System.out.println(\

z = x;

System.out.println(\ }

}

}

System.out.println(\

运行结果如图2-4所示。

图2-4 运行结果

(3)对上述代码进行修改,修改后的代码如下所示:

public class Example04 {

public static void main(String[] args) {

int x = 12; {

int y = 96;

{

int z = 0; y = x;

System.out.println(\ }

}

}

System.out.println(\System.out.println(\

System.out.println(\

}

运行结果如图2-5所示。

6

博学谷——让IT教学更简单,让IT学习更有效

图2-5 运行结果

三、案例总结

1、第一次程序编译错误是因为程序在变量z的作用域外进行访问,所以程序找不到变量z。如果在变量z的作用域内访问z,程序就会编译成功。

2、x定义在main方法下,所有main方法下的任何位置都能够使用变量x。

3、y定义在第一层括号下,因为第二层括号在第一层括号内,所以在第二层括号内使用变量y也不会报错。

案例2-5 算术运算符

一、案例描述

1、 考核知识点

编号:00102008 名称:算术运算符

2、 练习目标

? 了解算术运算符的用法

3、 需求分析

在程序中,经常会使用算术运算符进行四则运算,为了让初学者熟悉算术运算符的用法,本案例将以++、--、\\等运算符为例,讲解不同算术运算符的作用。

4、 设计思路(实现原理)

1)编写一个类Example05

2)在main方法下定义变量a,并赋值为2,定义变量b,并赋值为4;

3)首先运算表达式++a+b++,并把计算结果赋给变量x,然后将b/a的值赋给变量y; 4)输出变量a、b、x和y的值

二、案例实现

public class Example05 {

public static void main(String[] args) { int a = 2; int b = 4; int x = ++a + b--; int y=b/a;

7

博学谷——让IT教学更简单,让IT学习更有效

System.out.println(\System.out.println(\System.out.println(\System.out.println(\

}

}

运行结果如图2-6所示。

图2-6 运行结果

三、案例总结

1、在进行自增(++)和自减(--)的运算时,如果运算符(++或--)放在操作数的前面则是先进行自增或自减运算,再进行其它运算。反之,如果运算符放在操作数的后面则是先进行其它运算再进行自增或自减运算。

2、在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。

案例2-6 赋值运算符

一、案例描述

5、 考核知识点

编号:00102009 名称:赋值运算符

6、 练习目标

? 了解赋值运算符的用法

7、 需求分析

在程序中,经常会使用赋值运算符, 它的作用就是将常量、变量或表达式的值赋给某一个变量。为了让初学者熟悉赋值运算符的用法,本案例将以+=运算符为例,讲解赋值运算符的作用。

8、 设计思路(实现原理)

1)编写一个类Example06

2)在main方法下定义变量s,并赋值为5,定义变量i,并赋值为12; 3)使用赋值运算符计算s+=i++的值,并把计算结果赋给变量s 4)输出变量s的值

8

博学谷——让IT教学更简单,让IT学习更有效

二、案例实现

public class Example06 { }

public static void main(String[] args) { }

short s = 5; int i = 12; s += i++;

System.out.println(\

运行结果如图2-7所示。

图2-7 运行结果

三、案例总结

1、在赋值过程中,运算顺序从右往左,将右边表达式的结果赋值给左边的变量。 2、在Java中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:

int a, b, c,d;

a = b = c = d = 5; // 为四个变量同时赋值

案例2-7 比较运算符

一、案例描述

1、 考核知识点

编号:00102010 名称:比较运算符

2、 练习目标

? 了解比较运算符的用法

3、 需求分析

在程序中,经常会使用比较运算符对两个变量或值进行比较,使用比较运算符的比较结果是一个布尔类型的值。为了让初学者熟悉比较运算符的用法,本案例将以==、>=、<=、!=比较运算符为例,讲解比较运算符的用法。

4、 设计思路(实现原理)

1)编写一个类Example07

2)在main方法下定义变量x、y,并依此赋值为0、1; 3)使用==运算符比较字符'a' == 97,输出运算结果;

9

博学谷——让IT教学更简单,让IT学习更有效

4)使用>=运算符比较'a' >= 100,输出运算结果; 5)使用<=运算符比较x <= y,输出运算结果; 6)使用!=运算符比较x != y,输出运算结果;

二、案例实现

public class Example07 { }

public static void main(String[] args) { }

int x = 0; // 定义变量x,初始值为0 int y = 1; // 定义变量y,初始值为0

System.out.println('a' == 97); //判断字符a是否等于97 System.out.println('a' >= 100); //判断字符a是否大于100 System.out.println(x <= y); //判断x是否小于等于y System.out.println(x != y); //判断x是不是不等于y

运行结果如图2-8所示。

图2-8 运行结果

三、案例总结

1、使用比较运算符计算的表达式,返回的结果是一个布尔类型的值 2、不能将比较运算符“==”误写成赋值运算符“=”。

案例2-8 逻辑运算符

一、案例描述

1、 考核知识点

编 号:00102011

名 称:逻辑运算符

2、 练习目标

? 了解逻辑运算符的运算规则

? 掌握如何使用逻辑运算符进行逻辑运算

3、 需求分析

10

博学谷——让IT教学更简单,让IT学习更有效

逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔型。为了加深初学者对逻辑运算符的印象,本案例定义一个变量x,使用逻辑运算符连接表达式x>1和x<5,通过运行结果分析逻辑运算符的运算规则。

4、 设计思路(实现原理)

1) 编写一个类Example08

2) 在main方法下定义变量x,其初始值为3

2)使用逻辑运算符连接两个布尔型的表达式x>1和x<5 3)使用println语句输出运算结果

二、案例实现

定义Example08类,其代码如下:

class Example08 { }

public static void main(String[] args) { }

int x = 3;

System.out.println(x>1 & x<5); System.out.println(x<1 | x<5); System.out.println(x>1 ^ x>5); System.out.println(!(x<1));

运行结果如图2-9所示。

图2-9 运行结果

三、案例总结

在使用逻辑运算符的过程中,需要注意以下几个细节:

1、逻辑运算符可以针对结果为布尔值的表达式进行运算。如:x > 3 && y != 0。

2、运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false。当运算符“&”和“&&”的右边为表达式时,两者在使用上还有一定的区别。在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与。

3、运算符“|”和“||”都表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算。

4、运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。

11

博学谷——让IT教学更简单,让IT学习更有效 当两边布尔值不相同时,其结果为true。

案例2-9 位运算符

一、案例描述

1、 考核知识点

编 号:00102012 名 称:位运算符

2、 练习目标

? 了解位运算符的运算规则

? 掌握使用位运算符进行逻辑运算

3、 需求分析

位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。请使用不同的位运算符对十进制的3和4进行运算。

4、 设计思路(实现原理)

1) 将十进制3和4换算成二进制数

2) 使用不同的位运算符对3和4进行位运算 3) 编写一个类Example09

4) 在main方法下输出3和4进行不同的位运算后的结果 5)对比运算结果,判断运算是否正确

二、案例实现

1、将3和4换算成二进制数:3的二进制为00000011;4的二进制为00000100 2、&:位与运算:

00000100

&

00000011

————————— 00000000 所以,4&3=0

3、|:位或运算符

00000100

|

00000011

————————— 00000111 所以,4 | 3=7

4、^:异或运算符

00000100

^

00000011

—————————

00000111 所以,4 ^ 3=7

12

博学谷——让IT教学更简单,让IT学习更有效 5、~:按位取反

00000011 ~:11111100 原码:1 1111100 反码:1 0000011 补码:1 0000100 所以:~3=-4

6、<<:左移

00000011 <<2 ————————— 00001100

所以:3<<2=12

7、定义Example07类,其代码如下:

class Example09 { }

public static void main(String[] args) { }

System.out.println(4&3); System.out.println(4|3); System.out.println(4^3); System.out.println(~3);

System.out.println(3<<2);

运行结果如图2-10所示。

图2-10 运行结果

由此可见,二进制位运算与程序运算的结果一致。

三、案例总结

Java中的位运算符以及其范例如下错误!未找到引用源。所示。 运算符 运算 范例 0 & 0 0 & 1 1 & 1 1 & 0 0 | 0 0 | 1 结果 0 0 1 0 0 1 13

& 按位与 | 按位或 博学谷——让IT教学更简单,让IT学习更有效

1 | 1 1 | 0 ~ 取反 ~0 ~1 0 ^ 0 ^ 按位异或 0 ^ 1 1 ^ 1 1 ^ 0 << >> >>>

左移 右移 无符号右移 00000010<<2 10010011<<2 01100010>>2 11100010>>2 01100010>>>2 11…11100010>>>2 1 1 1 0 0 1 0 1 00001000 01001100 00011000 11111000 00011000 0011…111000 案例2-10 运算符的优先级

一、案例描述

1、 考核知识点

编号:00102013

名称:运算符的优先级

2、 练习目标

? 掌握运算符之间的优先级

3、 需求分析

当使用不同的运算符进行运算时,应该按照一定的顺序进行运算,即根据运算符的优先级进行运算。为了让初学者掌握运算符的优先级,本案例将通过表达式的运算,讲解运算符的优先级。

4、 设计思路(实现原理)

1) 编写一个类Example10

2) 在main方法中定义两个int型变量x和y 3) 将表达式3>2*x?x++:--x赋值给y 4) 用输出语句分别输出变量x和y的值

二、案例实现

定义Example10类,其代码如下:

class Example10 {

public static void main(String[] args) {

int x=1;

14

博学谷——让IT教学更简单,让IT学习更有效

int y=0;

y=3>2*x?x++:--x;

System.out.println(x); System.out.println(y); } }

运行结果如图2-11所示。

图2-11 运行结果

三、案例总结

1、本案例中表达式的运算过程如下所示:

1) 在表达式y=3>2*x?x++:--x;中赋值运算符=的优先级最低,所以要先运算=右侧的表达式; 2) ?:为三元运算符,该运算符的优先级较低,要先运算?前面的表达式。

3) *的优先级比>的高,所以3>2*1为true。按照三元运算符的运算规则表达式等价于y=x++ 4) x++的++在后面,所以要先进行其它运算再自增,最后结果为x=2,y=1

2、下表列举了Java中运算符的优先级,数字越小优先级越高。 优先级 1 2 3 4 5 6 7 8 9 10 11 12 13 14 运算符 . [] () ++ -- ~ ! (数据类型) * / % + - << >> >>> < > <= >= == != & ^ | && || ?: = *= /= %= += -= <<= >>= >>>= &= ^= |= 2、其实没有必要去刻意记忆运算符的优先级。由于运算符“()”的优先级最高,编写程序时,尽量使用括号“()”来实现想要的运算顺序,以免产生歧义。

15

博学谷——让IT教学更简单,让IT学习更有效

案例2-11 if条件语句

一、案例描述

1、 考核知识点

编号:00102014 名称:if条件语句

2、 练习目标

? 掌握if条件语句的语法格式 ? 了解if条件语句的执行流程

3、 需求分析

if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。为了让初学者掌握if…else if…else语句的用法,本案例将使用if…else if…else语句实现判断某月是哪个季节的功能。 设计思路(实现原理) 1)编写一个类Example11

2)定义一个变量month用于存储月份。

3)用if条件语句,判断这个月份在哪一个季节并输出结果,如:春季是3、4、5月,夏季是6、7、8月,秋季是9、10、11月,冬季是12、1、2月

4)由于一年只有12个月,所以要过滤除1-12以外的月份值

二、案例实现

定义Example11类,其代码如下:

class Example11 {

public static void main(String[] args) {

int month = 3;

if(month == 3 || month == 4 || month == 5) { }

else if(month == 6 || month == 7 || month ==8) { }

else if(month == 9 || month == 10 || month ==11) { }

else if(month == 1 || month == 2 || month ==12) {

16

System.out.println(month+\月是秋季\System.out.println(month+\月是夏季\System.out.println(month+\月是春季\

博学谷——让IT教学更简单,让IT学习更有效

}

}

} { }

System.out.println(\没有这个月份\System.out.println(month+\月是冬季\

else

运行结果如图2-12所示。

图2-12 运行结果

三、案例总结

1、f…else if…else语句用于对多个条件进行判断,进行多种不同的处理。if…else if…else语句具体语法格式如下:

if (判断条件1) { 执行语句1

} else if (判断条件2) { 执行语句2 } ...

else if (判断条件n) { 执行语句n } else { 执行语句n+1 }

if…else if…else语句的执行流程如图2-13所示。

17

博学谷——让IT教学更简单,让IT学习更有效

true执行语句1判断条件1falsetrue判断条件2false执行语句2true......false......true判断条件nfalse执行语句n执行语句n+1 图2-13 流程图

2、因为一年只有12个月,所以当month>12时是不符合逻辑的数据,这时会打印“没有这个月份”。在编程过程中,经常要考虑程序在实际环境下是否符合逻辑需求。

3、“||”表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。所以只要符合三个条件中的一个就会被判断为这个季节。

案例2-12 switch条件语句 一、案例描述

1、 考核知识点

编号:00102015

名称:switch条件语句

2、 练习目标

? 熟悉switch条件语句的语法格式 ? 了解switch条件语句的特点

3、 需求分析

switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。为了让初学者熟悉switch 条件语句,本案例将使用switch 条件语句实现判断选择题对错的功能。

4、 设计思路(实现原理)

1)编写一个类Example12

2)定义一个变量answer用于存储答案选项

3)用switch条件语句判断如果变量answer为B则正确,其它则错误 4)如果变量answer不等于ABCD四个选择则打印“不存在此选项”

18

博学谷——让IT教学更简单,让IT学习更有效

二、案例实现

定义Example12类,其代码如下:

class Example12 { }

public static void main(String[] args) { }

char answer = 'B'; switch(answer) {

case 'A':

System.out.println(\错误\break;

System.out.println(\正确\break;

System.out.println(\错误\break;

System.out.println(\错误\break;

System.out.println(\不存在此选项\

case 'B':

case 'C':

case 'D':

default:

}

运行结果如图2-14所示。

图2-14 运行结果

三、案例总结

1、switch语句的执行流程是:根据表达式的值查找与其匹配的项,如果有匹配项,则执行该匹配项下面的语句。如果没有匹配项,就会执行default后面的语句。

2、switch关键字后括号内的表达式可以是byte,short,int,char四种类型;在JDK5以后表达式可以是枚举;在.JDK7以后表达式可以是字符串。

3、switch语句只适合判断若干值的情况,不适合判断范围。

4、if和switch都可以判断值的情况,这时应该使用switch语句,因为switch的效率比if语句高。

19

博学谷——让IT教学更简单,让IT学习更有效

案例2-13 while循环语句 一、案例描述

1、 考核知识点

编号:00102016

名称:while循环语句

2、 练习目标

? 掌握while循环语句的语法格式和使用 ? 了解while循环语句的特点

3、 需求分析

while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环才会结束。为了让初学者熟悉while语句,本案例将使用while语句实现统计1-10以内奇数的功能。

4、 设计思路(实现原理)

1)编写一个类Example13

2)定义一个变量x为1,用while语句循环条件为x<=10

3)在while循环中,使用表达式x%2判断是否为奇数,如果为奇数,则变量count的值加1。

二、案例实现

定义Example13类,其代码如下:

class Example13 { }

20

public static void main(String[] args) {

int x = 1; int count; count = 0; while(x<=10) {

if(x%2==1) {

count++;

System.out.println(x); } x++;

}

System.out.println(\}

博学谷——让IT教学更简单,让IT学习更有效

运行结果如图2-15所示。

图2-15 运行结果

三、案例总结

1、while循环语句和条件判断语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句。区别在于,while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。

2、while循环的执行流程如图2-16所示。

图2-16 流程图

案例2-14 for循环语句 一、案例描述

1、 考核知识点

编号:00102017 名称:for循环语句

2、 练习目标

? 掌握for循环语句的语法格式和使用 ? 了解for循环语句的特点

3、 需求分析

for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。为了让初学者熟悉for

循环语句,本案例将使用for循环语句计算1+2+3+4+5...+100表达式的结果

4、 设计思路(实现原理)

21

博学谷——让IT教学更简单,让IT学习更有效

1)编写一个类Example14

2)在该类中定义一个变量sum来存储每次循环整数相加的和。 3)在for循环语句中定义变量x,循环条件为x<=100

二、案例实现

定义Example14类,代码如下所示:

class Example14 { }

public static void main(String[] args) { }

int sum = 0;

for(int x = 1 ; x <= 100 ; x++) {

sum = sum + x; }

System.out.println(\

程序编译时发生了错误,结果如图2-17所示。

图2-17 编译结果

三、案例总结

1、在for循环中,for关键字后面()中包括了三部分内容:初始化表达式、循环条件和操作表达式,它们之间用“;”分隔,{}中的执行语句为循环体。

2、通过序号来具体分析for循环的执行流程。具体如下:

for(① ; ② ; ③){

④ }

第一步,执行①

第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步 第三步,执行④

第四步,执行③,然后重复执行第二步 第五步,退出循环

22

博学谷——让IT教学更简单,让IT学习更有效

案例2-15 for循环嵌套 一、案例描述

1、 考核知识点

编号:00102018 名称:循环嵌套

? 掌握循环嵌套的使用和执行顺序

2、 练习目标

3、 需求分析

在编程过程中,经常需要双重循环或多重循环,这就需要循环语句的嵌套。最常见的循环嵌

套就是在for循环中嵌套for循环。为了让初学者熟悉for循环嵌套的使用,本案例将演示如何用for循环嵌套打印由“*”组成的直角三角形。具体要求如下: ? 第一个三角形为倒直角三角形,共5行,第一行5个 “*”,一行减少一个,第5行一个“*” ? 将倒直角三角形上下翻转为正直角三角形,第一行1一个“*”,第5行5个“*”

4、 设计思路(实现原理)

1) 分析第一个三角形的打印,外层for循环控制行数,初始化表达式从0开始,循环条件为小

于5;第一行是5个“*”所以应该内层循环打印5次,初始化表达式从0开始,循环条件为小于5。同理,内层的循环初始化和条件如下所示:

0 1 2 3 4 1 2 3 4 2 3 4 3 4 4

由此可见内层循环的初始化表达式y 与外层的x是相等的,循环条件都是小于5。

2) 分析第二个三角形的打印,第一行1个“*”,第二行2个“*”...由此可见,内层循环的循环

次数与行数是相等的,所以内层循环的y小于或等于外层的x。

二、案例实现

定义Example15类,代码如下所示:

class Example15 {

public static void main(String[] args) {

for(int x = 0 ; x < 5 ; x++) {

for(int y = x; y < 5 ; y++)

{

System.out.print(\}

23

博学谷——让IT教学更简单,让IT学习更有效

}

}

}

for(int x = 0 ; x < 5 ; x++) {

for(int y = 0; y <= x ; y++) }

{

System.out.print(\}

System.out.println(); System.out.println();

System.out.println(\

运行结果如图2-18所示。

图2-18 运行结果

三、案例总结

由于嵌套循环程序比较复杂,下面分步骤进行讲解,具体如下: 第一个三角形:

1、 当x=0时,y=0且y<5,循环5次,完成后返回到外层循环进行换行。 2、 当x=1时,y=1且y<5,循环4次,完成后返回到外层循环换行。 3、 当x=2时,y=2,循环3次,完成后返回到外层循环换行。 4、 当x=3时,y=3,循环2次,完成后返回到外层循环换行。

5、 当x=4时,y=4,循环1次,完成后返回到外层循环换行。由于x<5所以循环终止,打印结束。 第二个三角形:

1、 当x=0时,y=0且y<=0,循环1次,完成后返回到外层循环进行换行。 2、 当x=1时,y=0且y<=1,循环2次,完成后返回到外层循环进行换行。 3、 当x=2时,y=0且y<=2,循环3次,完成后返回到外层循环进行换行。 4、 当x=3时,y=0且y<=3,循环4次,完成后返回到外层循环进行换行。

5、 当x=4时,y=0且y<=4,循环5次,完成后返回到外层循环进行换行。由于x<5所以循环终止,

打印结束。

24

博学谷——让IT教学更简单,让IT学习更有效

案例2-16 break语句 一、案例描述

1、 考核知识点

编号:00102019

名称:跳转语句(break语句)

2、 练习目标

? 了解break语句的作用

? 掌握break语句在循环语句中的使用

3、 需求分析

在Java中,跳转语句用于实现循环执行过程中程序流程的跳转。break语句是其中的一种跳

转语句。为了让初学者熟悉break语句的使用,本案例将演示如何使用break语句在for循环嵌套中跳出外层循环,在while循环中终止循环。

4、 设计思路(实现原理)

1) 写一个for循环嵌套,在内层和外层循环分别用一个符号标记,并在内层循环中,使用break

语句跳出外层循环标记,观察执行结果是否跳出外层循环。

2) 写一个while循环,定义一个变量z,从0开始循环自增。在z大于5时跳出循环。在循环中

输出变量z的值,观察执行结果是否在z大于5时跳出循环。

二、案例实现

定义Example16类,代码如下所示:

class Example16 {

public static void main(String[] args) {

a:for(int x = 0 ; x < 5; x++) {

b:for(int y = 0 ; y < 5 ;y++)

{

break a;

System.out.println(\ }

System.out.println(\}

while(true) {

if(z>5)

{

break;

int z = 0;

25

博学谷——让IT教学更简单,让IT学习更有效

}

System.out.println(z); z++; }

}

}

运行结果如图2-19所示。

图2-19 运行结果

三、案例总结

1、当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳出外层循环则需要对外层循环添加标记。

2、在switch条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。当它出现在循环语句中,作用是跳出循环语句,执行后面的代码。break语句在switch条件语句的用法如下:

switch (表达式){ }

case 目标值1:

执行语句1 break;

case 目标值2:

执行语句2 break;

...... case 目标值n:

执行语句n break;

default:

执行语句n+1 break;

26

博学谷——让IT教学更简单,让IT学习更有效

案例2-17 continue语句 一、案例描述

1、 考核知识点

编号:00102020

名称:跳转语句(continue语句)

2、 练习目标

? 了解continue语句的作用

? 掌握continue语句在循环语句中的使用

3、 需求分析

在Java中,跳转语句除了break语句还有continue语句。continue语句用在循环语句中,它

的作用是终止本次循环,执行下一次循环。为了让初学者熟悉continue语句,本案例将演示continue语句在for循环中的使用

4、 设计思路(实现原理)

1) 写一个for循环,循环条件为x<5

2) 在循环中,如果x为偶数就使用continue语句

3) 在循环中,用输出语句输出x的值观察程序执行结果

二、案例实现

定义Example17类,代码如下所示:

class Example17 { }

public static void main(String[] args) { }

for(int x = 0 ; x < 5 ;x++) {

if(x%2==0) }

continue;

System.out.println(x);

运行结果如图2-20所示。

图2-20 运行结果

27

博学谷——让IT教学更简单,让IT学习更有效

三、案例总结

1、continue语句用于终止本次循环执行下次循环。在类Example18中,偶数时终止循环,所以打印出的是小于5的奇数。 2、在嵌套循环语句中,continue语句后面也可以通过使用标记的方式结束本次外层循环,用法与break语句相似。

案例2-18 方法的定义 一、案例描述

1、 考核知识点

编号:00102021 名称:方法的定义

2、 练习目标

? 掌握方法的定义

3、 需求分析

为了减少重复代码编写的问题,Java中可以将具有相同功能的重复代码提取出来,封装成方

法。为了让初学者掌握方法的定义,本案例将演示如何定义一个方法,并且该方法能够实现四则运算的功能。

4、 设计思路(实现原理)

1) 编写一个类Example18

2) 定义一个方法siZe,设置三个参数,两个数字为int型,一个符号为char型 3) 在方法中,用if选择语句根据传入的符号参数进行不同的运算 4) 如果传入的符号不包含在加减乘除四个符号中则输出“符号错误”

5) 在main方法中调用方法计算3*0的结果,测试方法是否成功运算出正确结果

二、案例实现

定义Example18类,代码如下所示

class Example18 {

public static void main(String[] args) { }

public static int siZe(int x,int y,char ch){

if(ch=='+')

return x+y;

28

int num = siZe(3,0,'*');

System.out.println(\

博学谷——让IT教学更简单,让IT学习更有效

}

}

if(ch=='-')

return x-y; return x*y; return x/y; if(ch=='*') if(ch=='/')

System.out.println(\符号错误\return 0;

运行结果如图2-21所示。

图2-21 运行结果

三、案例总结

1、在Java中,声明一个方法的具体语法格式如下:

修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名2,......]){ }

// 执行语句 return 返回值;

2、需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。

案例2-19 方法的重载 一、案例描述

1、 考核知识点

编号:00102022 名称:方法的重载

2、 练习目标

? 了解重载的定义 ? 掌握方法重载的用法

3、 需求分析

方法重载指的是方法名相同,参数类型或个数不同。本案例将通过方法重载的方式演示九九乘法表的打印

29

博学谷——让IT教学更简单,让IT学习更有效

4、 设计思路(实现原理)

1) 编写一个类Example19

2) 在Example19中定义一个带参数的方法print99,该参数用于指定乘法表打印的行数 3) 在Example10中定义一个方法print99,此方法没有参数。

4) 在main方法中分别调用无参方法print99()和有参方法print99(6),测试两个重载的方法print99

能否成功打印出符合要求的乘法表。

二、案例实现

定义Example19类,代码如下所示:

class Example19 { }

public static void main(String[] args) { }

public static void print99(){ }

public static void print99(int num){ }

for(int x = 1 ; x <= num; x++){ for(int y = 1 ; y <= x ; y++){

System.out.print(y+\ }

System.out.println(); }

print99(9); print99();

print99(6);

运行结果如图2-22所示。

30

博学谷——让IT教学更简单,让IT学习更有效

图2-22 运行结果

三、案例总结

1、方法的重载是在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同。

2、值得注意的是,方法的重载与返回值类型无关,它只有两个条件,一是方法名相同,二是参数个数或参数类型不相同。

案例2-20 一维数组的定义 一、案例描述

1、 考核知识点

编号:00102024 名称:数组的定义

2、 练习目标

? 掌握一维数组的定义

3、 需求分析

数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的

元素,但同一个数组里存放的元素类型必须一致。请定义一个数组,将序列{0,1,2,3,4}赋值给数组,并写一个方法用来访问数据的每一个元素。

4、 设计思路(实现原理)

1) 定义一个数组,在初始化数组时有一种方式叫做静态初始化,就是在定义数组的同时就为数

组的每个元素赋值。可以在定义数组时将序列{0,1,2,3,4}赋值给数组。

2) 定义一个方法输出数组的元素,可以用for循环语句依次输出数组的元素,各元素用“,”间

隔可以更清楚的输出元素。

3) 在最后一个元素输出时,后面就不需要加“,”了,所以循环到length-1时不打印“,”。

二、案例实现

定义Example20类,代码如下所示:

class Example20 {

public static void main(String[] args) { }

public static void printArr(int[] arr){

System.out.print(\

for(int x = 0 ; x < arr.length ; x++){

31

int[] arr = {0,1,2,3,4}; printArr(arr);

博学谷——让IT教学更简单,让IT学习更有效

}

}

if(x != arr.length - 1) }

System.out.println(\

System.out.print(arr[x]+\ System.out.print(arr[x]); else

运行结果如图2-23所示。

图2-23 运行结果

三、案例总结

1、每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程序会报数组越界异常ArrayIndexOutOfBoundsException。所谓异常指程序中出现的错误,它会报告出错的异常类型、出错的行号以及出错的原因。

2、在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常NullPointerException。

案例2-21 数组最值 一、案例描述

1、 考核知识点

编号:00102026

名称:数组的常见操作-数组的最值

2、 练习目标

? 掌握如何获取一维数组的最值

3、 需求分析

在操作数组时,经常需要获取数组中元素的最值。定义一个数组,并获取该数组中值最小

的元素。

4、 设计思路(实现原理)

1) 定义一个数组。

2) 定义一个方法,用来获取最小值。该方法应返回一个int型的数值,参数为数组类型。在方法

中,定义一个临时变量min,用于记住数组的最小值。首先假设数组中第一个元素arr[0]为最小值,然后使用for循环对数组进行遍历,在遍历的过程中只要遇到比min值还小的元素,就将该元素赋值给min。这样一来,变量min就能够在循环结束时记住数组中的最小值。 3) 在main方法中调用该方法,将定义的数组作为参数传给方法,获取该数组的最小值。

32

博学谷——让IT教学更简单,让IT学习更有效

二、案例实现

定义Example22类,代码如下所示:

public class Example22 { }

public static void main(String[] args) { }

static int getMin (int[] arr) { }

int min = arr[0];

for (int x = 1; x < arr.length; x++) { }

return min ;

if (arr[x] < min ) { }

min= arr[x];

int[] arr = { 4, 1, 6, 3, 9, 8 }; int min = getMin (arr); System.out.println(\

运行结果如图2-24所示。

图2-24 运行结果

三、案例总结

getMin()方法用于求数组中的最小值,该方法中定义了一个临时变量min,用于记住数组的最小值。需要注意的是,在for循环中的变量i是从1开始的,这样写的原因是程序已经假设第一个元素为最小值,for循环中只需要从第二个元素开始比较,从而提高程序的运行效率。

案例2-22 数组排序 一、案例描述

1、 考核知识点

编号:00102027

名称:数组的常见操作-数组的排序

33

博学谷——让IT教学更简单,让IT学习更有效

2、 练习目标

? 掌握一维数组中元素的排序

3、 需求分析

在操作数组时,经常需要对数组中元素进行排序。常用的排序算法有选择排序,冒泡排序等。

请定义一个数组,用选择排序算法将数组中的元素进行从小到大的排序。

4、 设计思路(实现原理)

选择排序法的原理是:首先找到数组中的最值,将最小值(最大值)的下标与第一个元素 的下标交换,再在剩下的元素中找最小值(最大值)的下标与第二个元素的下标交换,以此类推,完成所有元素的排序。

对数组元素进行选择排序的设计思路是:

1) 定义排序方法,在方法中,用for循环嵌套实现排序。第一层循环是从数组的第一个元 素开始循环。第二层循环用于与第一层循环中的元素比较找出最值,并将最小值的下标跟第一个元素的下标进行互换。

2) 为了方便观察排序结果,将案例2-21中的printArr()方法复制到类中,输出排序前和排 序后的数组元素。

二、案例实现

定义Example23类,代码如下所示:

class Example23 {

public static void main(String[] args) { } {

for(int x=0; x

for(int y=x+1; y

34

if(arr[y]

int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp;

int[] arr = {23,87,45,36,56,17}; System.out.println(\排序前\printArray(arr); selectSort(arr); printArray(arr);

System.out.println(\排序后\

public static void selectSort(int[] arr)

博学谷——让IT教学更简单,让IT学习更有效

}

} { }

System.out.print(\

for(int x=0; x

System.out.println(\

if(x==(arr.length-1)) { } else { }

System.out.print(arr[x]+\

System.out.print(arr[x]);

}

public static void printArray(int[] arr)

运行结果如图2-25所示。

图2-25 运行结果

三、案例总结

常用的排序算法除了选择排序外,还有冒泡排序。在冒泡排序的过程中,不断地比较数组中相邻的两个元素,较小者向上浮,较大者往下沉,整个过程和水中气泡上升的原理相似。

接下来通过几个步骤来具体分析一下冒泡排序的整个过程,具体如下:

1、 从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两个元素完成比较。如果前一个 元素比后一个元素大,则交换它们的位置。整个过程完成后,数组中最后一个元素自然就是最大值,这样也就完成了第一轮比较。

2、 除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一步相似,这样就可以将数组中 第二大的数放在了倒数第二个位置。

3、 以此类推,持续对越来越少的元素重复上面的步骤,直到没有任何一对元素需要比较为止。

35

本文来源:https://www.bwwdw.com/article/tvhg.html

Top