一、流程控制语句是用来控制程序中各语句执行顺序的语句。
1、顺序结构:代表“先执行a,在执行b”的逻辑。
2、选择结构:代表“如果……,则……”的逻辑。
3、循环结构:代表“如果……,则再继续……”的逻辑。
任何软件和程序,小练习到操作系统,本质都是由“变量、选择语句、循环语句”组成。
二、if选择结构和switch选择结构
(1)if单选择结构
if(布尔表达式){
语句块
}
math类的使用:
①java.lang包中的math类提供了一些用于数学类的计算方法。
②math.random()用于产生一个0到1区间的double类型的随机数,但是不包括1。
③int i = int(6*math.random());产生0到5之间的随机整数。
(2)if-else双选择结构
if(布尔表达式){
语句块
}else{
语句块
}
(3)if-else if-else多选择结构:适用于条件特别多的时候。
if(布尔表达式){
语句块
}else if{
语句块
}else if(布尔表达式){
语句块
}else{
语句块
}
(4)switch结构:适用于多值的情况。(表示区间乐意用if-else来判断)
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
… … … … …
[default:
默认语句;]
}
①switch里面一定要有表达式
②结束循环语句时,需要break
③在jdk1.7之前只能使用整数和枚举类型的数据;之后可以使用字符串string类型的数据。
三、循环结构:分两大类,一类是当型,一类是直到型。
1、当型:当布尔表达式条件为true时,反复执行某语句;当布尔表达式的值为false时才停止循环,比如for和while。
2、直到型:先执行某语句,在判断布尔表达式,如果为true再执行某语句,反复执行后,直到布尔表达式条件为false时才停止循环,比如do-while循环。
3、while循环
while (布尔表达式) {
循环体;
}
4、do-while循环:保证循环会至少执行一次。
do {
循环体;
} while(布尔表达式) ;
5、for循环
for (初始表达式; 布尔表达式; 迭代因子) {
循环体;
}
(1)for循环语句时支持迭代的一种通用结构,是最有效最灵活的循环结构。
(2)逗号运算符,初始化多个变量的值。
(3)无限循环(骚气满满的循环~)
for ( ; ; ) { // 无限循环: 相当于 while(true)
System.out.println("爱你到永远!");
}
(4)初始化变量的作用域在for循环体内。
四、嵌套循环:在循环语句内,嵌套一个或者多个循环
1、System.out.println();表示打印换行。
2、break表示强行退出循环,不执行循环中剩余的语句。
3、continue表示终止本次循环。
4、带标签的break和continue
goto关键字很早在程序设计语言里面出现。尽管goto仍是java的一个保留关键字,但并未在java语言中得到正式的使用,java没有goto语句。
example:控制嵌套循环语句跳转
public class Test18 {
public static void main(String args[]) {
outer: for (int i = 101; i < 150; i++) {
for (int j = 2; j < i / 2; j++) {
if (i % j == 0){
continue outer;
}
}
System.out.print(i + " ");
}
}
}
outer标签,执行的时候直接从内循环跳到外循环。标签可以换成任意的飞保留关键字字符。
五、语句块(复合语句):用花括号括起来的任意数量的简单java语句。块确定了局部变量的作用域。块中的程序代码作为一个整体,是要被一起执行的。
1、不能在两个嵌套内声明两个相同的变量。
2、嵌套内可以使用外部变量,嵌套外不能使用内部变量。
六、方法:一段用来完成特定功能的代码片段,类似其他语言的函数。
1、方法用于定义该类或该类的实例的行为特征和功能实现。
2、面向对象中,整个过程的基本单位是类,方法是从属于类和对象的。
3、方法声明格式
[修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表){
Java语句;… … …
}
4、方法的调用方式
对象名.方法名(实参列表)
方法的详细说明
(1)形式参数:在方法声明时用于接收外界传入的数据。
(2)实参:调用方法时实际传给方法的数据。
(3)返回值:方法在执行完毕后返回给调用它的环境的数据。
(4)返回值类型:事先约定的返回值的数据类型,如无返回值,必须事先指定为void。
备注:方法不是static方法时,需要new一个对象。
(5)return的两个作用:①结束方法运行②返回值
注意事项:
(1)实参的数目、数据类型和次序必须和所调用的方法声明的形式参数列表匹配。
(2)return语句终止方法的运行并指定要返回的数据。
(3)java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)。
(4)基本类型传递的是该数据值的copy值。
(5)引用类型传递的是该对象引用的copy值,但指向的是同一个对象。
5、方法的重载(overload)
重载的方法实际上是独立的、完全不同的方法,只是名称相同而已。
构成方法重载的条件:
(1)不同的含义:形参类型、形参个数、形参顺序不同。形参有所不同才构成重载。
(2)只有返回值不同不构成方法的重载。参数名称不同不构成重载。
6、递归结构
(1)递归的基本思想就是“自己调用自己”。
(2)利用递归可以用简单的方法来解决一些复杂的问题。
(3)递归的结构
①定义递归头。即:什么时候不调用自身的方法。如果没有头,将陷入死循环,也是递归结束的条件。
②递归体。即:什么时候需要调用自身方法。
优点:程序简单。
缺点:占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢得多。
(4)任何可以用丢给解决的问题都可以用循环来解决。在高性能的要求下尽量避免使用递归。