1.控制语句分为三类:顺序、选择、循环
2.continue:跳过本次循环,执行下一次;break:退出循环
3.带标签的continue和break
break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
4.语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句。块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块。
5.重载的方法,实际是完全不同的方法,只是名称相同而已!
构成方法重载的条件:
1.不同的含义:形参类型、形参个数、形参顺序不同
2.只有返回值不同不构成方法的重载
如:
1 |
|
不构成方法重载
3.只有形参的名称不同,不构成方法的重载
如:
1 |
|
不构成方法重载
6.递归这个东西麻烦,我不想看他
总结:
1.从结构化程序设计角度出发,程序有三种结构:顺序结构、选择结构和循环结构
2.选择结构
(1)if单选择结构 if-else双选择结构 if-else if-else多选择结构
(2)switch多选择结构
3.多选择结构与switch的关系:当布尔表达式是等值判断的情况,可使用多重选择结构或switch结构,如果布尔表达式区间判断的情况,则只能使用多重选择结构
(1) 循环结构
(2)当型:while与for
(3)直到型:do-while
4.while与do-while的区别,在布尔表达式的值为false时while的循环体一次也不执行,而do-while至少执行一次
5.break可以在switch与循环结构中使用,而continue只能在循环结构中使用
6.方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数
7.方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法
8.任何能用递归解决的问题也能使用迭代解决。在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。
作业:
一、选择题a、bd、a、bd、b
1.分析如下Java代码,编译运行的输出结果是( )。(选择一项)
1 2 3 4 5 6 7 8 9 10 11 |
|
A!(a&&b)
B.!(a||b)
C.ab
D.!(a||b)ab
2.下列选项中关于变量x的定义,( )可使以下switch语句编译通过。(选择二项)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Adouble x = 100;
B.char x = 100;
C.String x = "100";
D.int x = 100;
3.给定如下Java代码,编译运行的结果是( )。(选择一项)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
A8
B.15
C.24
D.什么也不输出
4.以下选项中添加到代码中横线处会出现错误的是( )。(选择二项)
1 2 3 4 5 |
|
A.
1 2 3 |
|
B.
1 2 3 |
|
C.
1 2 3 |
|
D.
1 2 3 |
|
5.以下关于方法调用的代码的执行结果是( )。(选择一项)
1 2 3 4 5 6 7 8 9 10 |
|
A.99
B.199
C.299
D.99100
二、简答题
1. if多分支语句和switch语句的异同之处。
2. break和continue语句的作用。
3. 在多重循环中,如何在内层循环中使用break跳出外层循环。
4. 方法重载的定义、作用和判断依据。
5. 递归的定义和优缺点。
三、编码题
1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
2. 编程求:∑1+∑2+……+∑100。
3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
答案:
第3章
一、选择题
1.A
2.BD
解析:switch的的判断表达式的数据类型:byte short int char
3.A
解析:0+3+5=8
4.BD
解析:函数重载时对返回数据类型不做检查,但形参数量或类型必须变化,B和原函数是同一函数,D中形参数据个数和类型和原函数相同
5.B
解析:非静态变量,形参并不影响实参.
二、简答题
1.答:相同点:他们都是用来处理多分支条件的结构。
不同点:switch语句只能处理等值条件判断的情况,而且条件只能是整型变量或字符型变量。多重if选择结构的限制,特别适合某个变量处于某个连续区间时的情况。
2.答:break是跳出循环,continue是直接进入下一次循环
3.答:使用break- label,先在循环之前加入一个label标签,然后break label;
4.答:定义:一个类中可以有多个相同名字的方法
作用:行为多态
判断依据:同方法名,不同的形参个数或数据类型
5.答:定义:方法自身调用自身
优点:代码简洁,可以省去很多循环
缺点:需要消耗大量计算机资源
三、编码题
1.
代码
/**
* 1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
*/
import java.util.Scanner;
public class Homework1 {
public static void main(String [] args){
//输入一个十进制数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
int num2 = sc.nextInt();
//转换
int num = num2;
String str="";
do{
//除以2得到商
int div = num/2;
//得到余数作为二进制位
int mod = num%2;
str = mod + str;
//商作为被除数
num = div;
}while(num!=0);//被除数不是零
//输出二进制数
System.out.println(num2+"------>"+str);
}
}
代码
/**
* 2.编程求:∑1+∑2+……+∑100。
* @author guo
*
*/
public class Homework2 {
public static void main(String[] args) {
int sum_i=0;
for(int i=1;i<=5;i++){
int sum_j=0;
for(int j=1;j<=i;j++){
sum_j=sum_j+j;
}
sum_i=sum_i+sum_j;
}
System.out.println(sum_i);
}
}
代码
/**
* 3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
* @author guo
*
*/
public class Homework3 {
public static void main(String[] args) {
System.out.println(sum(40));
}
public static long sum(int n) {
if (n <= 0) {
return 0;
} else if (n == 1 || n == 2) {
return 1;
} else {
return sum(n - 1) + sum(n - 2);
}
}
}