1、流程控制
1.1、break语句&continue语句
break:终止该层循环;
continue:跳过该次循环
break是终止循环,即在程序中遇到break,那么break所属的循环将结束。即整个for循环结束。
for (int x=0; x<3 ;x++ ){
if(x==1)
break;
System.out.println("x="+x);
}
//continue是结束本次循环,继续下次循环。循环是不会结束的。即只结束x=1这次循环,继续下次。
for (int x=0; x<3 ;x++ ){
if(x==1)
continue;
System.out.println("x="+x);
}
注意:
- 若这两个语句离开应用范围,存在是没有意义的。
- 这个两个语句单独存在后面都不能有语句,因为执行不到。
- continue语句是跳过本次循环,继续下次循环。
- 标签的出现,可以让这两个语句作用于指定的循环。
1.2、判断结构(if)
1.2.1三种格式
格式一:
if(条件表达式)
{
执行语句;
}
格式二:
if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
格式三:
if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
1.3、多分支结构(switch)
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
...
default:
执行语句;
break;
}
程序执行时,遇到switch关键字,首先会计算表达式的值,然后根据计算的值和case后面的值做比较,当case后面的值和switch表达式的值相同时,就执行case身后的所有语句,若case身后没有和switch表达式匹配的值,程序就会执行default后面的语句。
if和switch的区别
if
可以用于判断数值,也可以判断区间,只要运算结果是boolean类型,都可以进行判断。
switch
用于对固定的几个值,进行判断。判断的值的类型有限。
1.4、循环结构
1.4.1、while循环
while(条件表达式)
{
执行语句;
}
1.4.2、do - while 循环
do
{
执行语句;
}while(条件表达式);
1.4.3、for循环
for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))
{
执行语句;(4)
}
1.4.4、各个循环结构的区别
-
while:
事先不需要知道循环执行多少次; -
do-while:
同上,只是至少要执行一次(先做,后判断); -
for:
需要知道循环次数;
1、while与do-while的区别:
while:
先判断,再执行;
do-while:
先执行一次,再判断,再执行;
2、while与for的区别:
while
与for
可以互换
区别在于:
for:
为了循环而定义的变量在for循环结束就在内存中释放。
while:
循环使用的变量在循环结束后还可以继续使用。
1.4.5、嵌套循环
可使用循环标签:在多层嵌套循环中,终止/跳过标签标记的那层循环的执行;break 标签或 continue 标签;
2、函数
2.1、定义
函数就是定义**在类中
的具有特定功能的一段独立程序,并能被多次使用
**,也称为方法
。
注意:
函数是定义在类中,而不能在函数中定义函数。
2.2、格式
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
{
执行语句;
return 返回值;//return关键字是用于结束该功能。并将后面的具结果返回给调用者。
//必须有return语句。
}
格式说明:对函数的外加修饰,让函数具备更多的含义;
修饰符:
函数运行后的返回的结果的数据类型;
返回值类型:
可自行定义,只要不和系统关键字等冲突。建议取有意义的名称,书写规范为动名词结合,若为多单词组合,则第一个单词首字母小写,后面的单词首字母大写,如getSum,表示获取求和的值。
函数名:
是指形式参数的数据类型;
参数类型:
是指形式参数的数据类型;
形式参数:
是一个变量,用于存储调用函数时传递给函数的实际参数;
实际参数:
传递给形式参数的具体数值;
return:
用于结束函数;
返回值:
作为函数的处理结果返回给调用者,其数据类型必须与“返回值类型”一样;
2.3、函数特点
- 定义函数可以将功能代码进行封装;
- 便于对功能代码进行复用;
- 函数只有被调用才会被执行;
- 函数的出现提高了代码的复用性;
- 对于函数运算后,没有具体的返回值时,返回值类型用关键字void表示,而且如果函数中的return语句如果在最后一行,则可以省略不写。
注意:
——函数中只能调用函数,不可以在函数内部定义函数。也就是说函数之间是平级的,没有包含关系,只有调用动作;
——定义函数时,函数的结果应该返回给调用者,交由调用者处理。
2.4、函数应用(如何定义函数)
函数就是一个功能,功能就需要两部分:
1、函数运行完的结果是什么
;
2、函数运行时有无未知参数
。
两个明确:
定义函数时,时刻把握如下两个明确,基本就可以完成函数的定义:
这个功能的结果是什么?其实就是明确返回值类型。
这个功能需要未知内容是什么?其实就是明确参数列表。
尽量让函数只实现一个功能,这样能提高函数的复用。(一个好的函数)
2.5、函数重载(overload)
2.5.1、概念
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可,这时就形成了重载。重载和返回值类型无关。
2.5.2、示例
//返回两个整数的和
public static int add(int x, int y){
return x+y;
}
//返回三个整数的和
public static int add(int x, int y, int z){
return x+y+z;
}
//返回两个小数的和
public static double add(double x, double y){
return x+y;
}
2.5.3、重载的特点
与返回值类型无关,只和参数列表有关。(参数类型及参数个数)
即JVM是通过参数列表来区分函数的。而参数列表相同,但返回值类型不同的同名函数不能同时存在与一个类中。
2.5.4、函数重载的优点(方便阅读,优化程序)
- 定义端(方法的提供者):使用相同的方法名(一个方法)来表示功能相同的(多个)方法。
- 调用端(方法的使用者): 在调用的时候,可以使用相同名字(一个名字)的方法实现不同的功能。
- 重载也是多态性的体现:一个内容,可以实现多个功能
2.5.5、函数重载举例(打印任意乘法表)
class MethodDemo3 {
public static void main(String[] args) {
printCFB();
}
//打印标准九九乘法表。
public static void printCFB(){
printCFB(9);
}
//打印任意乘法表。
public static void printCFB(int num){
for(int x=1; x<=num; x++)
{
for(int y=1; y<=x; y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}